Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

DB Tabellen mit Variablen auslesen

DB Tabellen mit Variablen auslesen
25.10.2022 11:02:16
Okner
ActiveWorkbook.Queries.Add Name:="LPQ_Material", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Sql.Databases(""de-sql-01"")," & Chr(13) & "" & Chr(10) & " LTrace = Quelle{[Name=""LTrace""]}[Data]," & Chr(13) & "" & Chr(10) & " dbo_LPQ_Material = LTrace{[Schema=""dbo"",Item=""LPQ_Material""]}[Data]" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " dbo_LPQ_Material"
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Password=!Rd2017;Data Source=$Workbook$;Location=LPQ_Material;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [LPQ_Material]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "LPQ_Material"
.Refresh BackgroundQuery:=False
End With
Ich möchte den Begriff "LPQ_Material" in eine Variable stecken und die o.g. Prozedur mit Variablen ausführen.
Hier wird eine SQL Datenbank abgerufen und in ein Excel übergeben, was auch soweit funktioniert.
Die o.g. Prozedur ist eine von mehreren, wobei sich immer nur der Begriff(dann die Variable) ändert.
Kann mir hier jemand helfen? Habe die Prozedur mit dem Makro Recorder aufgezeichnet, jedoch komme ich so nicht weiter.
Außerdem wird manchmal Passwort... immer wieder abgefragt, obwohl dies ja hier im Code vorhanden ist, wie kann ich auch diese Parameter in Variablen verwenden und sauber übergeben?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: DB Tabellen mit Variablen auslesen
25.10.2022 14:08:33
Yal
auch hallo Robert,
man kann den Code lesen. Idealerweise laut. Und in deutsche Sprache. Genau wie man es jemand anderen vorlesen und erklären würden. Klingt komisch, bringt aber wunder.
Mit dieser Methode würdest Du auf
.SavePassword = False
stossen und dich selbst hören. Normalerweise entsteht ein "aha"-Effekt: hier muss ein
.SavePassword = True
ansonsten so:

Sub Abfrage_erzeugen(strItem As String)
ActiveWorkbook.Queries.Add _
Name:="Abf_" & strItem, _
Formula:="let" & Chr(13) & "" & Chr(10) _
& " Quelle = Sql.Databases(""de-sql-01"")," & Chr(13) & "" & Chr(10) _
& " LTrace = Quelle{[Name=""LTrace""]}[Data]," & Chr(13) & "" & Chr(10) _
& " dbo_Ergebnis = LTrace{[Schema=""dbo"",Item=""" & strItem & """]}[Data]" & Chr(13) & "" & Chr(10) _
& "in" & Chr(13) & "" & Chr(10) & " dbo_Ergebnis"
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Password=!Rd2017;Data Source=$Workbook$;Location=" & strItem & ";Extended Properties=""""", _
Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [" & "Abf_" & strItem & "]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Abf_" & strItem
.Refresh BackgroundQuery:=False
End With
End Sub
VG
Yal
Anzeige
AW: DB Tabellen mit Variablen auslesen
26.10.2022 10:44:19
Robert
Hallo Yal,
das mit der Variabel hat funktioniert,
Habe nur den Zusatz "Abf_" weggelassen, warum Sie den Zusatz eingebaut haben weiss ich nicht, hat beim auslesen ein Fehler gebracht.
Danke.
Habe jetzt noch das Problem, das, wenn ein anderer Benutzer die Abfrage macht, das Passwort usw. von der SQL abgefragt werden(wahrscheinlich Microsoft), wenn diese einmal eingegeben wurden, wird dies nicht mehr abgefragt, wie kann ich dies verhindern? Ich dachte mit den Informationen
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Password=!Rd2017;Data Source=$Workbook$;Location=" & strItem & ";Extended Properties=""""", _
Destination:=Range("$A$1")).QueryTable
sind alle nötigen Informationen gegeben?
Anzeige
AW: DB Tabellen mit Variablen auslesen
26.10.2022 10:58:01
Yal
Hallo Robert.
es kann sein, dass die Einstellung "SavePassword" mit dem User gebunden ist. Es würde dazu führen, dass beim neuen User der PW einmal gefragt wird.
Ich kann dir leider nicht sagen, ob die Parameter vollständig sind. Ich schreibe solchen Code nie selber, sondern verwende dafür den Makrorekorder (ja, das machen erst recht Leute mit sehr viel VBA-Erfahrung). Diese setzt aber die Parameter situationabhängig, sodass man selten alle Parameter aufgelistet bekommt.
Da hilft nur die Onlinehilfe. Aber auch da ist es ziemlich holprig: https://learn.microsoft.com/de-de/office/vba/access/concepts/activex-data-objects/create-an-ado-connection-string
VG
Yal
Anzeige
AW: DB Tabellen mit Variablen auslesen
26.10.2022 16:30:44
Robert
Danke, habe den Thread offen gelassen, vielleicht kann mir jemand anderes Helfen, Danke

85 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige