Ir para conteúdo
Fórum Script Brasil
  • 0

Comparar Duas Datas Grids


Andersonjb

Pergunta

E ai pessoal, beleza? Bem, eu queria saber como eu poderia fazer para comparar duas DataGrids do mesmo tamanho, se existe um metodo pratico pra se fazer isso. A minha necessidade é a seguinte: eu tenho que compara-las, e quando alguma célula da mesma posição estiver preenchida (houver algum dado dentro dela), ela tem que guardar a sua coordenada e o dado. alguém tem alguma sugestão de como eu posso fazer isto?

Falows!

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

O método mais prático seria fazer um For... Next na fonte dos dados. Ou seja, não é na DataGrid, mas sim na origem dos dados dela (que pode ser um Array, uma ArrayList, uma DataTable, etc.). Isso, é claro, pegando os dados da mesma posição de ambas as fontes e comparando.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Então, minha origem de dados é uma DataTable. Eu estava pensando em fazer com o For, só que me correu um coisa, eu precisaria de 4 For's aninhados, (2 para linhas e 2 para colunas), mas isso não deu certo, já que os For's de dentro do laço seriam executados primeiro, e isso não compararia um por um. Então eu estava pensando em retirar todos os dados de cada DG, e colocar em uma arraylist, e comparar item por item dessa array list, já que a quantidade de possibilidades é a mesma nas duas DG's. Só que ta ai a minha duvida: a Array List vai guardar dados vazios? Porque provavelmente vão existir células que não vão ter nada, então por exemplo: Eu guardo 255 numeros no 1º Array List e no 2º só tem 100, porque 155 células estavam vazias. E agora?

Link para o comentário
Compartilhar em outros sites

  • 0

Pra quê 4 Fors? Só 2 já fazem o serviço:

        Dim dt1 As DataTable = dg1.DataSource
        Dim dt2 As DataTable = dg2.DataSource

        For i As Integer = 0 To dt1.Rows.Count - 1
            For j As Integer = 0 To dt1.Columns.Count - 1
                If dt1.Rows(i)(j) <> dt2.Rows(i)(j) Then
                    Debug.WriteLine(i & ":" & j)
                End If
            Next
        Next

O exemplo acima vai mostrar todas as posições (linha e coluna) que sejam *diferentes* (você não disse se quer as células diferentes ou as iguais).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Não tenho certeza se deu certo aqui porque deu um erro, mas eu acho que foi, da um liga, Gray: a 2º DG que eu to puxando os dados tá em outro formulário, e pra mim pegar o seu conteúdo, eu usei o seguinte código:

            Dim dte As New dtemte
            Dim dtmte As New DataTable
            dtmte = dte.dgdtemte.DataSource

Eu to fazendo isso da maneira correta? Eu acho que não! E ai?

Link para o comentário
Compartilhar em outros sites

  • 0

No caso, "dtemte" é um form? Porque se for, você está criando uma nova instância dele com:

Dim dte As New dtemte
E acho que os dados que interessam *não* vão estar em uma *nova* instância, certo? Então, se você abriu ele antes, qual é nome que você deu para ele? Bastaria fazer algo assim:
Dim dt As DataTable = NOMEDAINSTÂNCIAABERTADOFORM.DATAGRIDDOFORM.DataSource

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Você diz assim:

            Dim dte As dtemte
            Dim dtmte As DataTable
            dtmte = dte.dgdtemte.DataSource

???

No caso, você tem que utilizar a mesma instância que você foi utilizada para abrir o form e pegar o DataSource da datagrid deste form.

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

E ai gray, beleza? Bem, queria tirar mais uma duvida sobre a velha e boa DataGrid. Bem, lembra que ontem a gente tava discutindo sobre o Método Clone da data table? Bem, ele não funcionou, mas olha só o que eu estou fazendo: eu preciso colocar dados em uma DataGrid. Bem, o problema é que toda vez eu eu abro ou que eu fecho o formulário, os dados desaparecem. Bem, ontem você me falou que o problema é que toda vez que o formulário fecha, os seus dados são perdidos, certo? Ai, eu fiz o seguinte, declarei uma DataTable em um módulo:

    Public dtabre As New DataTable
Depois, simplesmente peguei os dados da DataGrid:
        dtabre = dgdtemte.DataSource
No caso, dgdtemte é minha DataGrid. Depois, simplesmente no evento Load, eu carrego a DataGrid:
        dgdtemte.DataSource = dtabre

Mas acontece que a DataGrid não carrega os dados. O que eu estou fazendo de errado?

Link para o comentário
Compartilhar em outros sites

  • 0

Por que você não pega a DataTable original que tem os dados e coloca em dtabre ao invés de pegar a que está na grade? Acho que o problema é que quando você lida com objetos você tem que se ligar que tudo são referências (um nome que aponta para um objeto).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Então, é isso que eu fiz com a função Clone que você me passou, e isso não funcionou. Olha ai:

Declarei na classe:

    Public dt As New DataTable
Declarei no módulo:
    Public dtabre As new DataTable
Fiz isso em uma Sub:
        dtabre = dt.Clone
Fiz isso no evento Load do formulario:
            dgdtemte.DataSource = dtabre

O que eu to fazendo de errado? Eu copiei da origem dos dados, da DataTable original :S

Link para o comentário
Compartilhar em outros sites

  • 0

Qual o problema que dá? Você verificou se dtabre tem realmente alguma coisa (algum objeto)?

Você não estaria novamente declarando os objetos *fora* e *dentro* das subs, né? Lembra do caso do dtabre que você declarava fora, mas quando chegava na sub você declarava ele novamente (daí passa a valer o que está na sub, que está vazio porque acabou de ser criado).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...