Prezados, boa tarde,
Crédito do código ao Harysonh!!!
Estou adaptando o código abaixo para usao em meu sistema de gestão de pagamentos, ou seja, quando eu selecionar um registro na caixa de combinação do formulário o código faz um comparativo de registros semelhantes e envia para tblComparativo.
Minha dúvida é a seguinte: É possível fazer o grifo em vermelho importar para outra tabela somente os dados selecionados na combox?
obs: Isso é feito após a comparação dos registros semelhantes.
----------------------------------------
Dim rsEnviados As DAO.Recordset
Dim rsComparativo As DAO.Recordset
Dim StrSQLRec As String
Dim ncount As Long
'-------------------------------------------------------------------------------------------------------------
'Carrego a variável com a SQL da tabela recebidos filtrados pelo campo senhaAutorizaao tendo
'como critério o valor selecionado na cboEnviados. A cboEnviados por sua vez é baseada na tabela Enviados
'Assim o recordset baseado na tabela recebidos conterá apenas os registros cuja guia esteja na tabela enviados
'---------------------------------------------------------------------------------------------------------------
StrSQLRec = "SELECT * FROM Recebido WHERE senhaAutorizacao = '" & Me.cboEnviados & "'"
'--------------------------------------
'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 registros seta o recordset baseado na tabela comparativo
'executo loop pelo recordset baseado 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
With rsComparativo
.AddNew
'
!NomeUsuário = rsRecebidos!nomeBeneficiario 'Enviado
'
!CódUsuário = rsRecebidos!numeroCarteira 'Enviado
'
!CódGuia = rsRecebidos!senhaAutorizacao 'Enviado
'
!DtAtendimento = rsRecebidos!dataHoraInternacao 'Enviado
'
!DtAlta = DLookup("DtAlta", "Enviado", "CódGuia = '" & rsRecebidos!senhaAutorizacao & "'") 'Enviado
'
!CódServiço = rsRecebidos!codigo 'Enviado
'
!NomeServiço = rsRecebidos!descricao 'Enviado
'
!QtdRecebido = rsRecebidos!quantidade 'Recebido
'
!valorUnitario = rsRecebidos!valorUnitario 'Recebido
'
!valorTotalRecebido = rsRecebidos!valorTotal 'Recebido
'
!Nota = DLookup("Nota", "Enviado", "CódGuia = '" & rsRecebidos!senhaAutorizacao & "'") 'Enviado
'
!Fechamento = DLookup("Fechamento", "Enviado", "CódGuia = '" & rsRecebidos!senhaAutorizacao & "'") 'Enviado
'
.Update
'
End With
'----------------------------------------------------------------
'Incremento o contador para exibir mensagem de registros copiados
'----------------------------------------------------------------
ncount = ncount + 1
rsRecebidos.MoveNext
Loop
'------------------------------------
CurrentDb.Execute "INSERT INTO EnviadoConf ( NomeUsuário, CódUsuário, CódGuia, DtAtendimento, DtAlta, CódServiço, NomeServiço, QuantidadeServiço, Referencia, ValorPago, Fechamento, Nota )" & vbCrLf & _
"SELECT Enviado.NomeUsuário, Enviado.CódUsuário, Enviado.CódGuia, Enviado.DtAtendimento, Enviado.DtAlta, Enviado.CódServiço, Enviado.NomeServiço, Sum(Enviado.QuantidadeServiço) AS SomaDeQuantidadeServiço, Enviado.Referencia, Sum(Enviado.ValorPago) AS SomaDeValorPago, Enviado.Fechamento, Enviado.Nota" & vbCrLf & _
"FROM Enviado" & vbCrLf & _
"GROUP BY Enviado.NomeUsuário, Enviado.CódUsuário, Enviado.CódGuia, Enviado.DtAtendimento, Enviado.DtAlta, Enviado.CódServiço, Enviado.NomeServiço, Enviado.Referencia, Enviado.Fechamento, Enviado.Nota;"
'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 "A consulta localizou e enviou para tabela Comparativo. " & ncount & " Registro(s)", vbInformation, "COMPARANDO DADOS..."
End If
End Sub
Crédito do código ao Harysonh!!!
Estou adaptando o código abaixo para usao em meu sistema de gestão de pagamentos, ou seja, quando eu selecionar um registro na caixa de combinação do formulário o código faz um comparativo de registros semelhantes e envia para tblComparativo.
Minha dúvida é a seguinte: É possível fazer o grifo em vermelho importar para outra tabela somente os dados selecionados na combox?
obs: Isso é feito após a comparação dos registros semelhantes.
----------------------------------------
Dim rsEnviados As DAO.Recordset
Dim rsComparativo As DAO.Recordset
Dim StrSQLRec As String
Dim ncount As Long
'-------------------------------------------------------------------------------------------------------------
'Carrego a variável com a SQL da tabela recebidos filtrados pelo campo senhaAutorizaao tendo
'como critério o valor selecionado na cboEnviados. A cboEnviados por sua vez é baseada na tabela Enviados
'Assim o recordset baseado na tabela recebidos conterá apenas os registros cuja guia esteja na tabela enviados
'---------------------------------------------------------------------------------------------------------------
StrSQLRec = "SELECT * FROM Recebido WHERE senhaAutorizacao = '" & Me.cboEnviados & "'"
'--------------------------------------
'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 registros seta o recordset baseado na tabela comparativo
'executo loop pelo recordset baseado 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
With rsComparativo
.AddNew
'
!NomeUsuário = rsRecebidos!nomeBeneficiario 'Enviado
'
!CódUsuário = rsRecebidos!numeroCarteira 'Enviado
'
!CódGuia = rsRecebidos!senhaAutorizacao 'Enviado
'
!DtAtendimento = rsRecebidos!dataHoraInternacao 'Enviado
'
!DtAlta = DLookup("DtAlta", "Enviado", "CódGuia = '" & rsRecebidos!senhaAutorizacao & "'") 'Enviado
'
!CódServiço = rsRecebidos!codigo 'Enviado
'
!NomeServiço = rsRecebidos!descricao 'Enviado
'
!QtdRecebido = rsRecebidos!quantidade 'Recebido
'
!valorUnitario = rsRecebidos!valorUnitario 'Recebido
'
!valorTotalRecebido = rsRecebidos!valorTotal 'Recebido
'
!Nota = DLookup("Nota", "Enviado", "CódGuia = '" & rsRecebidos!senhaAutorizacao & "'") 'Enviado
'
!Fechamento = DLookup("Fechamento", "Enviado", "CódGuia = '" & rsRecebidos!senhaAutorizacao & "'") 'Enviado
'
.Update
'
End With
'----------------------------------------------------------------
'Incremento o contador para exibir mensagem de registros copiados
'----------------------------------------------------------------
ncount = ncount + 1
rsRecebidos.MoveNext
Loop
'------------------------------------
CurrentDb.Execute "INSERT INTO EnviadoConf ( NomeUsuário, CódUsuário, CódGuia, DtAtendimento, DtAlta, CódServiço, NomeServiço, QuantidadeServiço, Referencia, ValorPago, Fechamento, Nota )" & vbCrLf & _
"SELECT Enviado.NomeUsuário, Enviado.CódUsuário, Enviado.CódGuia, Enviado.DtAtendimento, Enviado.DtAlta, Enviado.CódServiço, Enviado.NomeServiço, Sum(Enviado.QuantidadeServiço) AS SomaDeQuantidadeServiço, Enviado.Referencia, Sum(Enviado.ValorPago) AS SomaDeValorPago, Enviado.Fechamento, Enviado.Nota" & vbCrLf & _
"FROM Enviado" & vbCrLf & _
"GROUP BY Enviado.NomeUsuário, Enviado.CódUsuário, Enviado.CódGuia, Enviado.DtAtendimento, Enviado.DtAlta, Enviado.CódServiço, Enviado.NomeServiço, Enviado.Referencia, Enviado.Fechamento, Enviado.Nota;"
'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 "A consulta localizou e enviou para tabela Comparativo. " & ncount & " Registro(s)", vbInformation, "COMPARANDO DADOS..."
End If
End Sub