Boa tarde,
Ao executar este qry não dá erro mas não atualiza.
Não consigo perceber o porquê
Objetivo é juntar as OVs expedidas para o mesmo cliente/endereço/Tipo Expedição/Na mesma data (NCLI, [Destination address],[Expedicao],[Load Date])
de forma a que só exista uma linha por cliente/endereço/Tipo expedição e data de expedição
Todos este campos já estão preenchidos na Tabela Plan_dupli.
Campo Plan_dupli.[Customer Reference] campo tipo texto que recebe o conteudo da variavel OVs
Campo Plan_dupli.[Datas_OVs] recebe o conteudo da variavel DT_OVS.
Obrigado
Ana Cristina
'Seleção de clientes com mais do que uma OV para o mesmo endereço e expedição e data
Set as2 = CurrentDb.OpenRecordset("SELECT RP.[Customer Reference], RP.DT_OV, RP.NCLI, RP.[Nome Loja / Armazem], RP.[Destination Name], " _
& "RP.[Destination address], RP.[Destination ZipCode], RP.[Destination City], RP.[Load Type], RP.EXPEDICAO, RP.NIF, RP.[Destination Country], " _
& "RP.DISTRITO, RP.[Load Date] FROM Plan_dupli INNER JOIN RP ON Plan_dupli.NCLI = RP.NCLI " _
& "GROUP BY RP.[Customer Reference], RP.DT_OV, RP.NCLI, RP.[Nome Loja / Armazem], RP.[Destination Name], RP.[Destination address], " _
& "RP.[Destination ZipCode], RP.[Destination City], RP.[Load Type], RP.EXPEDICAO, RP.NIF, RP.[Destination Country], RP.DISTRITO, RP.[Load Date] " _
& "HAVING (((RP.[Customer Reference]) Is Not Null)) ORDER BY RP.[Destination address], RP.EXPEDICAO, RP.[NCLI]")
'Plan_dupli é uma tabela que já isolou os clientes que têm duplicação de dados
Set as3 = CurrentDb.OpenRecordset("SELECT * FROM Plan_dupli")
'Atualiza OVs e Datas OVs por cliente, mesmo endereço e expedição
as2.MoveFirst
as3.MoveFirst
OVs = ""
DT_OVS = ""
NC = ""
Do While Not as3.EOF
NC = as3!NCLI & as3![Destination address] & as3![Expedicao] & as3![Load Date]
Do While Not as2.EOF
If as2![NCLI] = as3!NCLI And as2![Destination address] = as3![Destination address] And as2![Expedicao] = as3![Expedicao] _
And as2![Load Date] = as3![Load Date] Then
'Se não existir OV é processo interno de recolha
If as2![Customer Reference] <> "" Then
If OVs = "" Then
OVs = as2![Customer Reference]
DT_OVS = CStr(as2!DT_OV)
Else
OVs = OVs & " " & as2![Customer Reference]
DT_OVS = DT_OVS & " " & CStr(as2!DT_OV)
End If
Else
OVs = "Ext-" & as3![NCLI] & "-" & as3![Load Date]
DT_OVS = as3![Load Date]
End If
End If
as2.MoveNext
Loop
MsgBox "Valor de NC " & NC
CurrentDb.Execute "UPDATE Plan_dupli SET Plan_dupli.[Customer Reference] = '" & OVs & "', Plan_dupli.Datas_OVs = '" & DT_OVS & "' " _
& " WHERE (((Plan_dupli.NCLI & Plan_dupli.[Destination address] & Plan_dupli.[Expedicao] & Plan_dupli.[Load Date]) = '" & NC & "'))"
NC = ""
OVs = ""
DT_OVS = ""
as3.MoveNext
Loop
Ao executar este qry não dá erro mas não atualiza.
Não consigo perceber o porquê
Objetivo é juntar as OVs expedidas para o mesmo cliente/endereço/Tipo Expedição/Na mesma data (NCLI, [Destination address],[Expedicao],[Load Date])
de forma a que só exista uma linha por cliente/endereço/Tipo expedição e data de expedição
Todos este campos já estão preenchidos na Tabela Plan_dupli.
Campo Plan_dupli.[Customer Reference] campo tipo texto que recebe o conteudo da variavel OVs
Campo Plan_dupli.[Datas_OVs] recebe o conteudo da variavel DT_OVS.
Obrigado
Ana Cristina
'Seleção de clientes com mais do que uma OV para o mesmo endereço e expedição e data
Set as2 = CurrentDb.OpenRecordset("SELECT RP.[Customer Reference], RP.DT_OV, RP.NCLI, RP.[Nome Loja / Armazem], RP.[Destination Name], " _
& "RP.[Destination address], RP.[Destination ZipCode], RP.[Destination City], RP.[Load Type], RP.EXPEDICAO, RP.NIF, RP.[Destination Country], " _
& "RP.DISTRITO, RP.[Load Date] FROM Plan_dupli INNER JOIN RP ON Plan_dupli.NCLI = RP.NCLI " _
& "GROUP BY RP.[Customer Reference], RP.DT_OV, RP.NCLI, RP.[Nome Loja / Armazem], RP.[Destination Name], RP.[Destination address], " _
& "RP.[Destination ZipCode], RP.[Destination City], RP.[Load Type], RP.EXPEDICAO, RP.NIF, RP.[Destination Country], RP.DISTRITO, RP.[Load Date] " _
& "HAVING (((RP.[Customer Reference]) Is Not Null)) ORDER BY RP.[Destination address], RP.EXPEDICAO, RP.[NCLI]")
'Plan_dupli é uma tabela que já isolou os clientes que têm duplicação de dados
Set as3 = CurrentDb.OpenRecordset("SELECT * FROM Plan_dupli")
'Atualiza OVs e Datas OVs por cliente, mesmo endereço e expedição
as2.MoveFirst
as3.MoveFirst
OVs = ""
DT_OVS = ""
NC = ""
Do While Not as3.EOF
NC = as3!NCLI & as3![Destination address] & as3![Expedicao] & as3![Load Date]
Do While Not as2.EOF
If as2![NCLI] = as3!NCLI And as2![Destination address] = as3![Destination address] And as2![Expedicao] = as3![Expedicao] _
And as2![Load Date] = as3![Load Date] Then
'Se não existir OV é processo interno de recolha
If as2![Customer Reference] <> "" Then
If OVs = "" Then
OVs = as2![Customer Reference]
DT_OVS = CStr(as2!DT_OV)
Else
OVs = OVs & " " & as2![Customer Reference]
DT_OVS = DT_OVS & " " & CStr(as2!DT_OV)
End If
Else
OVs = "Ext-" & as3![NCLI] & "-" & as3![Load Date]
DT_OVS = as3![Load Date]
End If
End If
as2.MoveNext
Loop
MsgBox "Valor de NC " & NC
CurrentDb.Execute "UPDATE Plan_dupli SET Plan_dupli.[Customer Reference] = '" & OVs & "', Plan_dupli.Datas_OVs = '" & DT_OVS & "' " _
& " WHERE (((Plan_dupli.NCLI & Plan_dupli.[Destination address] & Plan_dupli.[Expedicao] & Plan_dupli.[Load Date]) = '" & NC & "'))"
NC = ""
OVs = ""
DT_OVS = ""
as3.MoveNext
Loop