- 15 Out 2018 às 22:30
#37776
Pessoal, boa noite!
Por gentileza, poderiam me ajudar numa duvida de sql excel vba?
Uso um código para fazer update quando id da plan origem = id plan destino usando inner join é fazendo for pelas colunas sem precisar o nome usando arrColunas. Entre duas planilhas da mesma pasta trabalho funciona.
Porém, ao testar entre planilha pasta trabalho diferentes não funciona:
Sub SQL_VBA_Excel_Array()
Dim ultLin As Long
Dim uColO As Long
Dim ws As Excel.Worksheet
Dim cnx As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim strsQL As String
Dim i As Long
Dim ii As Long
Dim arrColuna()
Set ws = Planilha3
Set wsr = wsResultado
'On Error GoTo TrataErro 'Poderá ser On Error Resume Next, se quiser ignorar
With cnx
.Provider = "Microsoft.ACE.OLEDB.12.0"
'.ConnectionString = "Data Source=D:\SQL - Excel\testes\DBases.xlsx"
.ConnectionString = "Data Source=" & ThisWorkbook.FullName
.Properties("Extended Properties") = "Excel 12.0 Xml;HDR=YES"
.Open
End With
ultLin = ws.UsedRange.Rows.Count
ultCol = ws.UsedRange.Columns.Count
m = ws.Range(ws.Cells(2, 1), ws.Cells(ultLin, ultCol)).value
sql = " Select * From [Resultados$] where 1 <> 1"
rs.Open sql, cnx
ReDim arrColuna(rs.Fields.Count - 1)
ii = 0
For i = 0 To UBound(arrColuna)
arrColuna(ii) = rs.Fields(i).name
Next
rs.Close
strsQL = "Update [Resultados$] Set Data = " & m(i,j) & " where [ID] = & m(i,1) &
'strsQL = "Update [Resultados$] Set " & Join(arrColuna, "," & vbCrLf) = ws.Range("B2").value & " where [ID] =1"
cnx.Execute strsQL
cnx.Close
End Sub
Por gentileza, poderiam me ajudar numa duvida de sql excel vba?
Uso um código para fazer update quando id da plan origem = id plan destino usando inner join é fazendo for pelas colunas sem precisar o nome usando arrColunas. Entre duas planilhas da mesma pasta trabalho funciona.
Porém, ao testar entre planilha pasta trabalho diferentes não funciona:
Sub SQL_VBA_Excel_Array()
Dim ultLin As Long
Dim uColO As Long
Dim ws As Excel.Worksheet
Dim cnx As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim strsQL As String
Dim i As Long
Dim ii As Long
Dim arrColuna()
Set ws = Planilha3
Set wsr = wsResultado
'On Error GoTo TrataErro 'Poderá ser On Error Resume Next, se quiser ignorar
With cnx
.Provider = "Microsoft.ACE.OLEDB.12.0"
'.ConnectionString = "Data Source=D:\SQL - Excel\testes\DBases.xlsx"
.ConnectionString = "Data Source=" & ThisWorkbook.FullName
.Properties("Extended Properties") = "Excel 12.0 Xml;HDR=YES"
.Open
End With
ultLin = ws.UsedRange.Rows.Count
ultCol = ws.UsedRange.Columns.Count
m = ws.Range(ws.Cells(2, 1), ws.Cells(ultLin, ultCol)).value
sql = " Select * From [Resultados$] where 1 <> 1"
rs.Open sql, cnx
ReDim arrColuna(rs.Fields.Count - 1)
ii = 0
For i = 0 To UBound(arrColuna)
arrColuna(ii) = rs.Fields(i).name
Next
rs.Close
strsQL = "Update [Resultados$] Set Data = " & m(i,j) & " where [ID] = & m(i,1) &
'strsQL = "Update [Resultados$] Set " & Join(arrColuna, "," & vbCrLf) = ws.Range("B2").value & " where [ID] =1"
cnx.Execute strsQL
cnx.Close
End Sub