Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Chamuanza

Alteração ao Actualizar Datadridview

Mensagens Recomendadas

Chamuanza

Bom dia Pessoal

Agradeço ia dica sobre o assunto acima

Carrego os dados com este código numa datagride e tudo corre com desejo, as celulas que me interessam são  marcadas com cor

Private Sub frmPremiosTotoloto_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'GuardarResultadosDataSet.PremiosTotoloto' table. You can move, or remove it, as needed.
        Me.PremiosTotolotoTableAdapter.Fill(Me.GuardarResultadosDataSet.PremiosTotoloto)

        For X As Byte = 0 To 6

            Me.DataGridView1.Columns(X).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

        Next X

    End Sub

 Private Sub frmPremiosTotoloto_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated

        Dim ContaLinhas As Integer = DataGridView1.RowCount - 2

        For X = 0 To DataGridView1.RowCount - 2

            'Faz o ciclo para comparar os nºs saidos com nºs premiados e marcar
            For ColunasPremios = 1 To 5

                For ColunasSaidos = 8 To 12
                    If DataGridView1.Item(ColunasPremios, X).Value = DataGridView1.Item(ColunasSaidos, X).Value Then
                        DataGridView1.Item(ColunasPremios, X).Style.BackColor = Color.Yellow
                        'DataGridView1.Item(ColunasPremios, X).Style.Font.Bold = True
                    End If
                Next ColunasSaidos
            Next ColunasPremios

            For NSortePremio = 6 To 6

                For NSorteSaido = 13 To 13
                    If DataGridView1.Item(NSortePremio, X).Value = DataGridView1.Item(NSorteSaido, X).Value Then
                        DataGridView1.Item(NSortePremio, X).Style.BackColor = Color.Yellow

                    End If

                Next NSorteSaido

            Next NSortePremio

            'Coloca a gridview com o tamanho pretendido
            If ContaLinhas <= 4 Then
                DataGridView1.Width = 308
                DataGridView1.Height = 175

            Else
                DataGridView1.Width = 325
            End If

        Next X


    End Sub

Quando Actualizo a datagride com este código as celulas não ficam marcadas com cor

Private Sub Actualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Actualizar.Click

        Dim da As SqlDataAdapter
        Dim ds As DataSet


        ' Texto de ligação à base de dados
        Dim myConnectionString As String = _
        "Data Source=.\SQLEXPRESS;AttachDbFilename='D:\ProjectoTotoMilhoes\TotoMilhões\GuardarResultados.mdf';" & _
          ";Integrated Security=True;User Instance=True"

        ' Cria uma nova ligação à base de dados
        Dim connection As New SqlConnection(myConnectionString)

        Dim SQL As String = "SELECT * FROM PremiosTotoloto  " '"

        da = New SqlDataAdapter(SQL, connection)

        ' Cria um novo DataSet, ou seja, uma representação em memória da informação
        ds = New DataSet

        ' Coloca a informação da tabela definida no DataSet
        da.Fill(ds, "PremiosTotoloto")

        ' Define que a fonte de dados da DataGridView é a nossa DataSet
        ' criando automáticamente as colunas e linhas de dados
        Me.DataGridView1.DataSource = ds.Tables("PremiosTotoloto")




        Dim ContaLinhas As Integer = DataGridView1.RowCount - 2

        For X = 0 To DataGridView1.RowCount - 2

            'Faz o ciclo para comparar os nºs saidos com nºs premiados e marcar
            For ColunasPremios = 1 To 5

                For ColunasSaidos = 8 To 12
                    If DataGridView1.Item(ColunasPremios, X).Value = DataGridView1.Item(ColunasSaidos, X).Value Then
                        DataGridView1.Item(ColunasPremios, X).Style.BackColor = Color.Yellow
                        'DataGridView1.Item(ColunasPremios, X).Style.Font.Bold = True
                    End If
                Next ColunasSaidos
            Next ColunasPremios

            For NSortePremio = 6 To 6

                For NSorteSaido = 13 To 13
                    If DataGridView1.Item(NSortePremio, X).Value = DataGridView1.Item(NSorteSaido, X).Value Then
                        DataGridView1.Item(NSortePremio, X).Style.BackColor = Color.Yellow

                    End If

                Next NSorteSaido

            Next NSortePremio

            'Coloca a gridview com o tamanho pretendido
            If ContaLinhas <= 4 Then
                DataGridView1.Width = 308
                DataGridView1.Height = 175

            Else
                DataGridView1.Width = 325
            End If

        Next X


        ' Limpa a ligação à base de dados. Não é necessário fechar a ligação
        ' porque esta não foi aberta através do comando .Open()
        connection = Nothing

    End Sub

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caça

Existe alguma célula que obedeça a todas as condições que tens? Tens os Indexes correctos?


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Chamuanza

Oi Caça

O que eu estranho é que depois de  abrir o Form com o Load faz a activação e processa os dados pretendidos como pretendo, tudo bem.

Depois ao fazer  a actualização primeiro faço uma nova ligação a BD, apresenta o resultado de novo na Datagrid e o resto do codigo é igual ao anterior

Se não houver novo registo os dados são os mesmos que os anteriores, mas mesmo assim as células que ao inicio estavam marcadas com o BackColor = Color.Yellow ficam sem cor.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caça

Não devias utilizar métodos diferentes no acesso a dados, no entanto é muito estranho.

Já depuraste o código para ver o que está a acontecer?


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Chamuanza

Oi Caça

Acabei por resolver a situação assim:

 Private Sub Actualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Actualizar.Click



        'TODO: This line of code loads data into the 'GuardarResultadosDataSet.PremiosTotoloto' table. You can move, or remove it, as needed.
        Me.PremiosTotolotoTableAdapter.Fill(Me.GuardarResultadosDataSet.PremiosTotoloto)

        Call MarcarCelulas()

        
    End Sub

    Private Sub MarcarCelulas()

        Dim ContaLinhas As Integer = DataGridView1.RowCount - 2

        For X = 0 To DataGridView1.RowCount - 2

            'Faz o ciclo para comparar os nºs saidos com nºs premiados e marcar
            For ColunasPremios = 1 To 5

                For ColunasSaidos = 8 To 12
                    If DataGridView1.Item(ColunasPremios, X).Value = DataGridView1.Item(ColunasSaidos, X).Value Then
                        DataGridView1.Item(ColunasPremios, X).Style.BackColor = Color.Yellow
                        'DataGridView1.Item(ColunasPremios, X).Style.Font.Bold = True
                    End If
                Next ColunasSaidos
            Next ColunasPremios

            For NSortePremio = 6 To 6

                For NSorteSaido = 13 To 13
                    If DataGridView1.Item(NSortePremio, X).Value = DataGridView1.Item(NSorteSaido, X).Value Then
                        DataGridView1.Item(NSortePremio, X).Style.BackColor = Color.Yellow

                    End If

                Next NSorteSaido

            Next NSortePremio

            'Coloca a gridview com o tamanho pretendido
            If ContaLinhas <= 4 Then
                DataGridView1.Width = 308
                DataGridView1.Height = 175

            Else
                DataGridView1.Width = 325
            End If

        Next X

    End Sub

acabei por ir ao encontro da tua opinião "Não devias utilizar métodos diferentes no acesso a dados"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.