Clever-Excel-Forum

Normale Version: VBA: DB-Abfrage mit Variablen aus einem Tabellenbereich
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo geehrte VBA-Götter, :19:


wieder einmal möchte ich um euer schier grenzenloses Wissen bitten, da ich erneut ein Thema habe, welches meine Kenntnisse weit übersteigt.

Ich habe eine Excel-Datei, die per odc-Datei eine Datenbankverbindung hat und mit der ich die Daten in der Exceldatei regelmäßig aktualisiere.

Nun stellt sich gerade die Herausforderung, dass ich das Select, welches die Daten von der DB abfragt und starr in der odc-Datei hinterlegt ist, so umgestalten muss,
dass ein Teil der Where-Clause sich variabel aus einem sich verändernden Bereich in einer Tabelle zusammensetzen muss.

Konkret:
mit einem Makro:
Sub DbAbfrage_mit_einem_Parameter_aus_Zelle()

Debug.Print
Dim odc_pfad As String
odc_pfad = "ABFRAGE_KD_NUMMER"
    With ActiveWorkbook.Connections(odc_pfad).ODBCConnection
        .BackgroundQuery = True
        .CommandText = Array("SELECT kdname FROM datenbank WHERE kdnummer IN (" & Worksheets("Tabelle1").Cells(1, 1) & ")")
        .CommandType = xlCmdSql
        .Connection = Array(Array( _
        "ODBC;DRIVER={Client Access ODBC Driver (32-bit)};SYSTEM=127.127.0.0;DBQ=QGPL CHLLIB;DFTPKGLIB=QGPL;LANGUAGEID=ENU;PKG=QGPL/DEFAULT(" _
        ), Array("IBM),2,0,1,0,512;QRYSTGLMT=-1;"))
        .RefreshOnFileOpen = False
        .SavePassword = False
        .SourceConnectionFile = ""
        .SourceDataFile = ""
        .ServerCredentialsMethod = xlCredentialsMethodIntegrated
        .AlwaysUseConnectionFile = False
    End With
    With ActiveWorkbook.Connections(odc_pfad)
        .Name = odc_pfad
        .Description = ""
    End With
    ActiveWorkbook.Connections(odc_pfad).Refresh
End Sub

bekomme ich schon hin, in die Zelle A1 eine Kundennummer für das Select mitzugeben, das klappt auch und da bin ich schon mächtig stolz drauf. :18: :19:

Allerdings muss ich nicht nur eine Kundennummer, sondern eine sich ständig verändernde Anzahl von Kundennummern mitgeben, die sich in einem anderen Tabellenblatt (Tabelle2, Spalte A)
befinden.

All meine Versuche, aus der einen Zelle einen Bereich zu machen, sind kläglich gescheitert.

Hättet ihr eine Lösung für mein Problem?

Vorab gang herzlichen Dank für euer Hirnschmalz. :17: 


VG

Bovie
Hola,

verlinkst du bitte deine Fragen in den verschiedenen Foren untereinander?
Danke.

Gruß,
steve1da
Hallo steve1da,


was meinst du damit?

Ich habe meine Frage zwar noch im VBA-Forum eingestellt, aber warum sollte ich die beiden Beiträge verlinken und vor allem, WIE??? *amkopfkratz*

Ich bin nicht so oft in Foren unterwegs, vielleicht könntest du mich kurz aufklären?
Und vielleicht hast du ja auch sogar eine Lösung für mein Problem?

Vorab vielen Dank.

VG

Bovie
Hola,

https://www.clever-excel-forum.de/misc.php?action=help&hid=10

Du setzt hier einen Link zur Frage im anderen Forum und umgekehrt.

Gruß,
steve1da
Hi Bovie,

einfach die Links jeweils in das andere Forum schreiben, damit die Leute hier z.B. wissen, dass du auch woanders angefragt hast und z.B. wenn dort schon ein Lösung gegeben ist, dann brauchen die Leute hier sich die Arbeit nicht nochmals umsonst machen und umgekehrt! Niemand arbeitet gerne für die Tonne! :)

LG
Alexandra
Hallo ihr beiden,


verstanden und hiermit erledigt!
Vielen Dank für den wertvollen Hinweis, hab ich nicht drüber nachgedacht. Angel


http://www.vba-forum.de/Forum/View.aspx?...lenbereich

Und wenn jetzt noch jemand einen wertvollen Tipp für mein Problemchen hätte, wäre das ein Traum. :19:


VG

Bovie
Hallo Bovie,
Worksheets("Tabelle2").Cells(1, 1).CurrentRegion.Columns(1)
Gruß Uwe
Hallo Uwe,


vielen Dank für deinen Tipp, leider bekomme ich die Meldung "Laufzeitfehler 13, Typen unverträglich"

Ist aber nicht so schlimm, ich habe eine Lösung im VBA-Forum (http://www.vba-forum.de/forum/View.aspx?ziel=50926) erhalten,
dennoch vielen Dank für deine Mühen und deine Zeit und dir noch ein schönes Wochenende. :19:


VG

Bovie