USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Alterar registro com valor de outro registro
Cid
SÃO PAULO
SP - BRASIL
Postada em 24/11/2008 19:26 hs            
Boa Noite, Pessoal!
 
Preciso alterar o valor de um campo de um registro com o valor do mesmo campo
de outro registro na mesma tabela. Os dois registros tem um campo "REF" com o mesmo valor. 
Tenho que encontrar o 1º registro, salvar o valor do campo em uma variável, encontrar o 2º registro e salvar no campo o valor da variável. Depois, neste 2º registro, atualizar o valor de outro campo com a diferença entre o valor do campo atualizado e um 3º campo que já estava preenchido.
Depois disso, continuar buscando na tabela e repetir o procedimento acima para os outros registros que atendam a condição da consulta.
 
Estou usando o seguinte código:
 
Dim REF5 As String
Dim CUSVEN5 As String
Set Tab_Temp = bd.OpenRecordset("select * from Tab_Temp where CONTA='" & cmbConta & "' and [DIA]= #" & ValData & "# and CUSVEN=0 ")
 
Do While Not Tab_Temp.EOF

    REF5 = Tab_Temp!REF
    CUSVEN5 = Tab_Temp!LIQUIDO
   
    Set Tab_Temp = bd.OpenRecordset("select * from Tab_Temp where REF='" & REF5 & "' and CUSVEN<>0 ")
    If Not Tab_Temp.EOF Then
        If Tab_Temp!TIPO = "VA" Or Tab_Temp!TIPO = "VO" Then
            Tab_Temp.Edit
            Tab_Temp!CUSVEN = CUSVEN5
            Tab_Temp!LUCRE = Tab_Temp!TOTAL - Tab_Temp!CUSVEN
            Tab_Temp.Update
        ElseIf Tab_Temp!TIPO = "CA" Or Tab_Temp!TIPO = "CO" Then
            Tab_Temp.Edit
            Tab_Temp!CUSVEN = CUSVEN5
            Tab_Temp!LUCRE = Tab_Temp!CUSVEN - Tab_Temp!TOTAL
            Tab_Temp.Update
        End If
    End If
Tab_Temp.MoveNext
Loop
Só estou conseguindo atualizar o 1º campo (CUSVEN) do 1º registro. E pára aí.
Não atualiza o 2º campo (LUCRE) nem passa para o próximo registro.
 
Se alguém puder dar uma olhada nesse código e dar alguma sugestão, ficarei muito grato.
 
Cid
     
J.Carlos
Pontos: 2843
PRESIDENTE PRUDENTE
SP - BRASIL
ENUNCIADA !
Postada em 25/11/2008 07:55 hs            
Você está usando o mesmo objeto "Tab_Temp" pra ler o segundo registro.
Use outro objeto dentro do loop pra fazer esta operação. Ex: Tab_Temp2....
   
Cid
não registrado
Postada em 25/11/2008 15:28 hs   
J.Carlos valeu pela dica!
 
O problema estava justamente no nomes dos recordsets.
Alterei o segundo prá Tab_Temp1 e funcionou.
 
Muito obrigado a todos!
     
PH1959
Pontos: 2843
SÃO JOSÉ DOS CAMPOS
SP - BRASIL
Postada em 25/11/2008 15:30 hs            
na realidade o problema é q vc não estava fechando a primeira tabela e setando a segunda com o mesmo nome...
 
     
J.Carlos
Pontos: 2843
PRESIDENTE PRUDENTE
SP - BRASIL
ENUNCIADA !
Postada em 26/11/2008 08:20 hs            
PH1959, ele não poderia fechar o primeiro recordset, pois dependia dele pra ler o segundo. 
Neste caso, teria mesmo que criar um outro recordSet pra poder fazer a operação que ele desejava.
Abraços.
   
Treze
não registrado
ENUNCIADA !
Postada em 26/11/2008 08:52 hs   
Pessoal o problema do colega foi resolvido em outro forum.
 
a solução foi esta
 
Dim REF5 As String
Dim CUSVEN5 As String

Set Tab_Temp = bd.OpenRecordset("select * from Tab_Temp where CONTA='" & cmbConta & "' and [DIA]= #" & ValData & "# and CUSVEN=0 ")

Do While Not Tab_Temp.EOF

    REF5 = Tab_Temp!REF
    CUSVEN5 = Tab_Temp!LIQUIDO
    
    Set Tab_Temp1 = bd.OpenRecordset("select * from Tab_Temp where REF='" & REF5 & "' and CUSVEN<>0 ")
    If Not Tab_Temp1.EOF Then
        If Tab_Temp1!TIPO = "VA" Or Tab_Temp1!TIPO = "VO" Then
            Tab_Temp1.Edit
            Tab_Temp1!CUSVEN = CUSVEN5
            Tab_Temp1!LUCRE = Tab_Temp1!TOTAL - Tab_Temp1!CUSVEN
            Tab_Temp1.Update
        ElseIf Tab_Temp1!TIPO = "CA" Or Tab_Temp1!TIPO = "CO" Then
            Tab_Temp1.Edit
            Tab_Temp1!CUSVEN = CUSVEN5
            Tab_Temp1!LUCRE = Tab_Temp1!CUSVEN - Tab_Temp1!TOTAL
            Tab_Temp1.Update
        End If
    End If
Tab_Temp.MoveNext
Loop
 
pode encerrar companheiro
 
 
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página