VB - ROTINA PARA ATUALIZAR TABELA

NAMON 15/05/2010 00:17:33
#341819
Em meu projeto (Formulário em GRID) inclui uma rotina para atualizar um campo para atualizar campos do PAI a partir de campo do FILHO, segundo condições
Complementando, pois realmente não ficou claro:
Importa um arquivo TXT para um MDB com mais de 18 mil registros. Após isso, necessito atualizar alguns campos do PAI que estão vieram preenchidos no FILHO pela importação.
Nesse exemplo, 4 campos no PAI a serem atualizados:
a) Campo Ident (IDENTIFICADOR do Responsável) que está em UMA LINHA do Grid FILHO (somente um é o respsonsável
b) Campo Receitas que é a soma de determinada coluna do Grid FILHO;
c) Campo despesas que é a soma de determinada coluna do Grid FILHO;
e) Campo TotalPessoas que é a contagem das pessoas do Grid FILHO

Com a rotina abaixo esperava atualizar cada registro do PAI um a um e não consegui nem mesmo para o primeiro campo, pois ao rodar a rotina, apenas atuliza o primeiro Ident do PAI e os demais permanecem em branco.

Rotina: (fragmento)

BeginTrans
Set PAI = vgDb.OpenRecordSet([Ô]FILHO[Ô], dbOpenTable)
If PAI.RecordCount > 0 Then
PAI.MoveFirst
Set FILHO = vgDb.OpenRecordSet([Ô]FILHO[Ô], dbOpenTable)
If FILHO.RecordCount > 0 Then
FILHO.MoveFirst
Do While Not FILHO.EOF
With PAI
.Edit
If PAI!Codigo = FILHO!Codigo Then
PAI!Ident = FILHO!Ident
PAI!Nome = FILHO!Nome
End If
.Update
.BookMark = .LastModified
End With
End If
FILHO.MoveNext
Loop
End If
End If
CommitTrans

End Sub


Onde está o meu erro e como corrigir?

Namon
MSMJUDAS 15/05/2010 08:28:41
#341825
Posta o erro que está aparecendo, fica melhor pra saber o que é.
WILLVIDAL 15/05/2010 10:51:19
#341829
nâo entendi muito bem esse código, mas vc não teria q dar um movenext no pai tbm ?
NAMON 15/05/2010 12:05:11
#341837
Citação:

:
Em meu projeto (Formulário em GRID) inclui uma rotina para atualizar um campo para atualizar campos do PAI a partir de campo do FILHO, segundo condições.
Rotina: (fragmento)

BeginTrans
Set PAI = vgDb.OpenRecordSet([Ô]FILHO[Ô], dbOpenTable)
If PAI.RecordCount > 0 Then
PAI.MoveFirst
Set FILHO = vgDb.OpenRecordSet([Ô]FILHO[Ô], dbOpenTable)
If FILHO.RecordCount > 0 Then
FILHO.MoveFirst
Do While Not FILHO.EOF
With PAI
.Edit
If PAI!Codigo = FILHO!Codigo Then
PAI!Ident = FILHO!Ident
PAI!Nome = FILHO!Nome
End If
.Update
.BookMark = .LastModified
End With
End If
FILHO.MoveNext
Loop
End If
End If
CommitTrans

End Sub


Onde está o meu erro e como corrigir?

Namon



Na realidade não me retorna mensagens de erro. Apenas atualizar o primeiro registro PAI e os registros subsequentes ficam sem atualização (em branco)
TECLA 15/05/2010 18:46:19
#341858
Resposta escolhida
Explica com clareza no tópico o que a rotina deveria fazer (e o que ela está fazendo).
NAMON 15/05/2010 20:52:43
#341862
Citação:

:
Em meu projeto (Formulário em GRID) inclui uma rotina para atualizar um campo para atualizar campos do PAI a partir de campo do FILHO, segundo condições
Complementando, pois realmente não ficou claro:
Importa um arquivo TXT para um MDB com mais de 18 mil registros. Após isso, necessito atualizar alguns campos do PAI que estão vieram preenchidos no FILHO pela importação.
Nesse exemplo, 4 campos no PAI a serem atualizados:
a) Campo Ident (IDENTIFICADOR do Responsável) que está em UMA LINHA do Grid FILHO (somente um é o respsonsável
b) Campo Receitas que é a soma de determinada coluna do Grid FILHO;
c) Campo despesas que é a soma de determinada coluna do Grid FILHO;
e) Campo TotalPessoas que é a contagem das pessoas do Grid FILHO

Com a rotina abaixo esperava atualizar cada registro do PAI um a um e não consegui nem mesmo para o primeiro campo, pois ao rodar a rotina, apenas atuliza o primeiro Ident do PAI e os demais permanecem em branco.

Rotina: (fragmento)

BeginTrans
Set PAI = vgDb.OpenRecordSet([Ô]FILHO[Ô], dbOpenTable)
If PAI.RecordCount > 0 Then
PAI.MoveFirst
Set FILHO = vgDb.OpenRecordSet([Ô]FILHO[Ô], dbOpenTable)
If FILHO.RecordCount > 0 Then
FILHO.MoveFirst
Do While Not FILHO.EOF
With PAI
.Edit
If PAI!Codigo = FILHO!Codigo Then
PAI!Ident = FILHO!Ident
PAI!Nome = FILHO!Nome
End If
.Update
.BookMark = .LastModified
End With
End If
FILHO.MoveNext
Loop
End If
End If
CommitTrans

End Sub


Onde está o meu erro e como corrigir?

Namon

Tópico encerrado , respostas não são mais permitidas