Galera,
Estou com um problema e creio que acontece quando chamo minha função para fazer um append em uma tabela especifica.
Cenario do problema:
Abro uma pasta, nessa pasta faço a varredura abrindo arquivos ".xls" e em uma determinada sheet retiro as informações, jogando-as em uma tabela no access.
Set aSheet = xlApp.Worksheets(2)
For i = 12 To 23 'Linha Inicial e Final
If aSheet.Range("C" & i).Value > 0 Then
strSQL = "Insert Into TabelaDados (Campo1) "
strSQL = strSQL & " Values ('" & aSheet.Range("C" & i).Value & "')"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
Else
Call Insert_Nulo(strTabelaNew)
End If
Next
Até ai tudo ocorre normalmente, depois essas informações eu transponho para linhas em uma nova tabela. Dessa nova tabela eu dou o append em uma tabela que será a minha unificação dos meu dados.
Segue minha função:
Function Append_Unific(strTabelaNew)
Dim Cn As ADODB.Connection '* Connection String
Dim oCm As ADODB.Command '* Command Object
Dim sID As String
Dim iRecAffected As Integer
On Error GoTo ADO_ERROR
Set Cn = New ADODB.Connection
Cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Teste.mdb;Persist Security Info=False"
Cn.ConnectionTimeout = 40
Cn.Open
Set oCm = New ADODB.Command
oCm.ActiveConnection = Cn
oCm.CommandText = "INSERT INTO Unificada ( Fonte, Razao_Social, Nome_Fantasia, Endereco_Completo, [CNPJ/CPF], [InscricaoEstadual/Rg], Cidade, Estado, Pais, cep, Contato_Dep_Compras, Email_Compras, Telefone_Compras, PINF ) SELECT NovaTemp.[1], NovaTemp.[2], NovaTemp.[3], NovaTemp.[4], NovaTemp.[5], NovaTemp.[6], NovaTemp.[7], NovaTemp.[8], NovaTemp.[9], NovaTemp.[10], NovaTemp.[11], NovaTemp.[12], NovaTemp.[13], NovaTemp.[14]FROM NovaTemp"
oCm.Execute iRecAffected
If iRecAffected = 0 Then
MsgBox "No records inserted"
End If
If Cn.State <> adStateClosed Then
Cn.Close
End If
If Not oCm Is Nothing Then Set oCm = Nothing
If Not Cn Is Nothing Then Set Cn = Nothing
ADO_ERROR:
If Err <> 0 Then
Debug.Assert Err = 0
MsgBox Err.Description
Err.Clear
Resume Next
End If
End Function
Eu creio que seja nessa hora que acontece algum erro, pois se eu debugar meu codigo linha por linha e em cada função não há duplicações, mas se eu debugo ele completo no resultado final tenhu linhas duplicadas.
Eu teria que fazer alguma limpeza na minha função antes de sair dela e continuar a varredura?? Como posso resolver este caso?
Agradeço desde já!
Estou com um problema e creio que acontece quando chamo minha função para fazer um append em uma tabela especifica.
Cenario do problema:
Abro uma pasta, nessa pasta faço a varredura abrindo arquivos ".xls" e em uma determinada sheet retiro as informações, jogando-as em uma tabela no access.
Set aSheet = xlApp.Worksheets(2)
For i = 12 To 23 'Linha Inicial e Final
If aSheet.Range("C" & i).Value > 0 Then
strSQL = "Insert Into TabelaDados (Campo1) "
strSQL = strSQL & " Values ('" & aSheet.Range("C" & i).Value & "')"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
Else
Call Insert_Nulo(strTabelaNew)
End If
Next
Até ai tudo ocorre normalmente, depois essas informações eu transponho para linhas em uma nova tabela. Dessa nova tabela eu dou o append em uma tabela que será a minha unificação dos meu dados.
Segue minha função:
Function Append_Unific(strTabelaNew)
Dim Cn As ADODB.Connection '* Connection String
Dim oCm As ADODB.Command '* Command Object
Dim sID As String
Dim iRecAffected As Integer
On Error GoTo ADO_ERROR
Set Cn = New ADODB.Connection
Cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Teste.mdb;Persist Security Info=False"
Cn.ConnectionTimeout = 40
Cn.Open
Set oCm = New ADODB.Command
oCm.ActiveConnection = Cn
oCm.CommandText = "INSERT INTO Unificada ( Fonte, Razao_Social, Nome_Fantasia, Endereco_Completo, [CNPJ/CPF], [InscricaoEstadual/Rg], Cidade, Estado, Pais, cep, Contato_Dep_Compras, Email_Compras, Telefone_Compras, PINF ) SELECT NovaTemp.[1], NovaTemp.[2], NovaTemp.[3], NovaTemp.[4], NovaTemp.[5], NovaTemp.[6], NovaTemp.[7], NovaTemp.[8], NovaTemp.[9], NovaTemp.[10], NovaTemp.[11], NovaTemp.[12], NovaTemp.[13], NovaTemp.[14]FROM NovaTemp"
oCm.Execute iRecAffected
If iRecAffected = 0 Then
MsgBox "No records inserted"
End If
If Cn.State <> adStateClosed Then
Cn.Close
End If
If Not oCm Is Nothing Then Set oCm = Nothing
If Not Cn Is Nothing Then Set Cn = Nothing
ADO_ERROR:
If Err <> 0 Then
Debug.Assert Err = 0
MsgBox Err.Description
Err.Clear
Resume Next
End If
End Function
Eu creio que seja nessa hora que acontece algum erro, pois se eu debugar meu codigo linha por linha e em cada função não há duplicações, mas se eu debugo ele completo no resultado final tenhu linhas duplicadas.
Eu teria que fazer alguma limpeza na minha função antes de sair dela e continuar a varredura?? Como posso resolver este caso?
Agradeço desde já!