Zaslal/a Poseidon 12.2.2021 13:42
Dobrý den,
podle návodu na stránce:
https://docs.microsoft.com/en-us/office/vba/api/excel.querytables.add
se pokouším napsat kód ve VBA, který by se mi vytvořil ODBC připojení k databázi na základě hodnot zapsaných v buňkách na listu Technical_1.
Kód mám napsaný, ale vyhazuje mi chybu Application-defined or Object-defined error 1004. VBA editor mi poukazuje na chybu v řádku, která začíná "set qt = ...". Já ale nemohu přijít na to, co tam mám napsáno špatně.
Nezkontroloval by někdo ten kód a neporadil, prosím?
Děkuji za Váš čas.
' Dostupne pro cely sesit:
Public P_iSeries As String
Public P_database As String
Public P_user As String
Public P_password As String
Public P_sqlstring As String
Sub Makro1()
'
' Makro1
'
' Klávesová zkratka: Ctrl+u
'
Dim sqlstring As String
Dim connstring As String
' Nacteni promennych parametru z bunek:
With ActiveWorkbook.Sheets("Technical_1")
P_iSeries = .Cells(11, 12).Value
P_database = .Cells(12, 12).Value
P_user = .Cells(13, 12).Value
P_password = .Cells(14, 12).Value
P_sqlstring = .Cells(27, 12).Value
End With
' Mezi uvozovky si muzu napsat cely SQL dotaz (string) - od prikazu select az napr. po order by:
sqlstring = " & P_sqlstring & "
' Connection string k databazi uvadet tady (zase do uvozovek protoze je to retezec):
connstring = "Driver={ISeries Access ODBC Driver};System=" & P_iSeries & ";Uid=" & P_user & ";Pwd=" & P_password & ";Library=" & P_database & ";QueryTimeout=0;charset=utf-8"
' Vytvorit QueryTable jako objekt s nazvem "qt":
Dim qt As QueryTable
Set qt = ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=Range("C1"), Sql:=sqlstring)
' refresh dat (zacatek tabulky bude v bunce "C1"):
With qt
.RefreshStyle = xlInsertEntireRows
.Refresh
End With
End Sub
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.