Convidado 10/2/2014, 16:15
Carrega o Recordset com os dados da tabela Recebidos, executa loop na mesma efetuando pesquisa contagem na enviados. caso exista o registro na enviados, copia para a acomparativos
Private Sub btnExecutar_Click()
Dim rsRecebidos As DAO.Recordset
Dim rsComparativo As DAO.Recordset
Dim StrSQLRec As String
Dim nCount As Long
Dim QtdRec As Integer
Dim QtdEnv As Integer
'-----------------------------------------------
'Careego a variável com a SQL da tabela recebidos
'------------------------------------------------
StrSQLRec = "SELECT * FROM Recebido"
'--------------------------------------
'Seto o recordset com a sql da consulta
'--------------------------------------
Set rsRecebidos = CurrentDb.OpenRecordset(StrSQLRec)
'------------------------------------------------------------------
'Movo o ponteiro do recordset para o final em seguida para o início
'------------------------------------------------------------------
rsRecebidos.MoveLast: rsRecebidos.MoveFirst
'-------------------------------------------------------------------------------------
'Caso retorne 1 ou mais regisros seta o recordset baseado na tabela comparativo
'executo loop pelo recordset basado na tabela Recebidos, adicionando um novo registro
'na tabela comparativo. Observe que fiz apenas para dois campo, siga a mesma
'lógica para os demais
'-------------------------------------------------------------------------------------
If rsRecebidos.RecordCount > 0 Then
Set rsComparativo = CurrentDb.OpenRecordset("Comparativo")
Do While Not rsRecebidos.EOF
'-----------------------------------------------------------------------------
'Verifica se na tabela enviado existe registro cuja SenhaAutorização = CódGuia
'Caso exista copia-o para a comparativo
'-----------------------------------------------------------------------------
If DCount("*", "Enviado", "CódGuia = '" & rsRecebidos!senhaAutorizacao & "'") > 0 Then
With rsComparativo
.AddNew
![Nome da Usuário] = rsRecebidos!nomeBeneficiario
!CódGuia = rsRecebidos!senhaAutorizacao
!DtAlta = DLookup("DtAlta", "Enviado", "CódGuia = '" & rsRecebidos!senhaAutorizacao & "'")
!Qtd = DLookup("[Quantidade Serviço]", "Enviado", " CódGuia = '" & rsRecebidos!senhaAutorizacao & "'")
!Fechamento = DLookup("Fechamento", "Enviado", "CódGuia = '" & rsRecebidos!senhaAutorizacao & "'")
!Nota = DLookup("Nota", "Enviado", "CódGuia = '" & rsRecebidos!senhaAutorizacao & "'")
'------------------------------------------------------------------
'Carrego na variável a quantidade da tabela recebido, não necessita
'do Dlookup pois o valor já está no rsRecebidos
'------------------------------------------------------------------
QtdRec = rsRecebidos!quantidade
'-------------------------------------------------
'Coloco na variável a quantidade da tabela enviado
'-------------------------------------------------
' QtdEnv = DLookup("[Quantidade Serviço]", "Enviado", " CódGuia = '" & rsRecebidos!senhaAutorizacao & "'")
'Lança na tabela comparativo a quantidade enviada - quantidade recebida
'!Qtd = qtdeEnv - qtdeRec
!SomaDevalorTotal = rsRecebidos!valorTotal
'![Saldo de diferença] = ValorPago - valorTotal isso..O resultado dessa função deve ir para o campo Saldo de diferença.tblComparativo
.Update
End With
End If
'----------------------------------------------------------------
'Incremento o contador para exibir mensagem de registros copiados
'----------------------------------------------------------------
nCount = nCount + 1
rsRecebidos.MoveNext
Loop
'------------------------------------
'Deleta os arquivos da tabela Enviado
'------------------------------------
'CurrentDb.Execute "DELETE * FROM Enviado WHERE CódGuia = '" & Me.cboEnviados & "'"
'Deleta os arquivos da tabela Recebido
'------------------------------------
CurrentDb.Execute "DELETE * FROM Recebido WHERE senhaAutorizacao = '" & Me.cboEnviados & "'"
'---------------------------
'Emite mensagem de terminado
'---------------------------
'MsgBox "Foram copiados " & nCount & " Registros", vbInformation, "PRONTO"
End If
End Sub
Cumprimentos.