Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA: DB-Abfrage mit Variablen aus einem Tabellenbereich
#1
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
Antworten Top
#2
Hola,

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

Gruß,
steve1da
Antworten Top
#3
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
Antworten Top
#4
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
Antworten Top
#5
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
Antworten Top
#6
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
Antworten Top
#7
Hallo Bovie,
Worksheets("Tabelle2").Cells(1, 1).CurrentRegion.Columns(1)
Gruß Uwe
Antworten Top
#8
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste