Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: wert aus zelle in sql abfrage einfügen

wert aus zelle in sql abfrage einfügen
04.01.2005 12:16:16
Christian
Hallo,
ich habe ein makro mit einer sql-abfrage. Diese soll aus einer bestimmten zelle einen Wert beziehen, der immer variabel ist. Man soll hier einen Rechner Namen eingeben können. Dieser Wert steht immer auf Sheet 1 in Zelle D30
Ich benutze dafür folgenden Code:

Sub client()
'DB Connect
connstring = "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=XXX;PWD=XXX;SERVER=XXX"
'neuen Sheet einfügen
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Client_" & ActiveSheet.Index
'Abfrage Virenschutzproblem
sql_statement_1 = "SELECT cl_id, cl_access FROM client WHERE cl_ip_name = '" & Sheets(1).Range("D30").Value & "' "
With ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=ActiveSheet.Range("A1"), Sql:=sql_statement_1)
.FieldNames = True
.BackgroundQuery = False
.Refresh
End With
End Sub

Wenn ich diesen Code ausführe, wird ein neuer Sheet erstellt und es werden die gewünschten Fieldnames eingefügt, aber keinerlei Informationen über den gewünschten Rechner.
Weiß jemand woran das liegen kann?
Gruss
Christiam
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wert aus zelle in sql abfrage einfügen
Galenzo
m.E.:
sql_statement_1 = "SELECT cl_id, cl_access FROM client WHERE cl_ip_name = " & Sheets
(1).Range("D30").Value
AW: wert aus zelle in sql abfrage einfügen
04.01.2005 12:27:18
Christian
Hi,
leider bekomme ich dann einen allgemeinen ODBC Fehler.
Christian
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Wert aus Zelle in SQL-Abfrage einfügen


Schritt-für-Schritt-Anleitung

Um einen Wert aus einer Excel-Zelle in eine SQL-Abfrage einzufügen, kannst du folgendes Makro verwenden. In diesem Beispiel wird der Rechnername aus Zelle D30 auf Sheet 1 entnommen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Sub client()
       'DB Connect
       connstring = "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=XXX;PWD=XXX;SERVER=XXX"
       'neuen Sheet einfügen
       Sheets.Add After:=Sheets(Sheets.Count)
       ActiveSheet.Name = "Client_" & ActiveSheet.Index
       'Abfrage Virenschutzproblem
       sql_statement_1 = "SELECT cl_id, cl_access FROM client WHERE cl_ip_name = '" & Sheets(1).Range("D30").Value & "' "
       With ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=ActiveSheet.Range("A1"), Sql:=sql_statement_1)
           .FieldNames = True
           .BackgroundQuery = False
           .Refresh
       End With
    End Sub
  4. Ändere die Verbindungszeichenfolge (connstring), um deine Datenbankdetails einzugeben.

  5. Schließe den VBA-Editor und führe das Makro aus, um das neue Blatt mit den abgerufenen Daten zu erstellen.


Häufige Fehler und Lösungen

  • ODBC Fehler: Wenn du einen allgemeinen ODBC Fehler erhältst, überprüfe die Verbindungszeichenfolge. Achte darauf, dass die Datenbank korrekt konfiguriert ist und die Zugangsdaten stimmen.
  • Leere Abfrageergebnisse: Stelle sicher, dass der Wert in D30 korrekt ist und dass es einen entsprechenden Datensatz in der Datenbank gibt.

Alternative Methoden

Falls du eine SQL-Abfrage mit mehreren Werten aus einer Zelle durchführen möchtest, kannst du die Werte auch mit Kommas trennen. Hier ein Beispiel, wie du das in deiner SQL-Abfrage umsetzen kannst:

sql_statement_1 = "SELECT cl_id, cl_access FROM client WHERE cl_ip_name IN (" & Replace(Sheets(1).Range("D30").Value, ",", "','") & ")"

Diese Methode ist nützlich, wenn du mehrere Werte abfragen möchtest, da sie die SQL-Abfrage WHERE ... IN verwendet.


Praktische Beispiele

Hier sind einige Beispiele, wie du die SQL-Abfrage anpassen kannst:

  1. Abfrage mit mehreren Werten:

    Wenn du in Zelle D30 mehrere Rechnernamen hast, die durch Kommas getrennt sind, kannst du die oben genannte Methode verwenden, um alle abzufragen.

  2. Verwendung von Wildcards:

    Du kannst auch Wildcards nutzen, um ähnliche Werte abzufragen:

    sql_statement_1 = "SELECT cl_id, cl_access FROM client WHERE cl_ip_name LIKE '" & Sheets(1).Range("D30").Value & "%'"

Tipps für Profis

  • Debugging: Nutze Debug.Print sql_statement_1 vor der With-Anweisung, um die generierte SQL-Abfrage im Direktfenster des VBA-Editors anzuzeigen. So kannst du Probleme leichter identifizieren.
  • Sichere Eingaben: Achte darauf, dass die Eingaben in D30 validiert werden, um SQL-Injection zu vermeiden.

FAQ: Häufige Fragen

1. Was ist eine SQL-Abfrage?
Eine SQL-Abfrage ist ein Befehl, der verwendet wird, um Daten aus einer Datenbank abzurufen oder zu manipulieren.

2. Wie kann ich mehrere Werte in einer SQL-Abfrage abfragen?
Du kannst die WHERE ... IN-Klausel verwenden, um mehrere Werte abzufragen, oder die Werte in einer Zelle durch Kommas getrennt angeben und sie dann in der Abfrage korrekt formatieren.

3. Welche Excel-Version benötige ich für dieses Makro?
Das Makro sollte in den meisten aktuellen Excel-Versionen funktionieren, die VBA unterstützen, z.B. Excel 2010 und höher.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige