Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por genebaldo
#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
Avatar do usuário
Por Reinaldo
Avatar
#37782
Cross Post https://www.tomasvasquez.com.br/forum/v ... 782#p25782
A rotina aqui postada está um pouco diferente da postada no forum Tomas, mas vejamos:
...ao testar entre planilha pasta trabalho diferentes não funciona...
Não consegui identificar as bases diferentes, como e feita a seleção/conexão
...sem precisar o nome usando arrColuna...
E redimensionada a array arrColuna, porem o valor dos nomes de colunas atraves do "for" são sempre "alocados" em arrColuna(0) -->"ii=0" Qual o objetivo/necessidade?
...usando inner join
Onde é utilizado inner Join? o Join na montagem da strSQL -->"Join(arrColuna, "," & vbCrLf)" refere-se a função vba Join e não instrução sql "JOIN"
do help vba
Função Join : Retorna uma seqüência de caracteres criada pela associação de diversas subseqüências de caracteres contidas em uma matriz
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord