Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Chamuanza

Alteração ao Actualizar Datadridview

Recommended Posts

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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.