Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1032to1036
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

SQL-Abfrage mit Variable

SQL-Abfrage mit Variable
28.12.2008 19:12:39
Dieter
Hallo zusammen,
ich möchte bei einer SQL-Abfrage eine Variable einsetzen.
Mein Makro sieht an der Stelle so aus
..... & "WHERE Top15000.nr Like & Testnr)")
TOP15000 ist eine SQL-Tabelle
nr ist die SQL-Tabellenspalte
Dim Testnr as integer
Testnr ist = Range("testnr1").value
Es wird ein Syntax-Fehler ausgegeben......
Weiss jemand wo der Fehler ist ?
Gruß Dieter

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SQL-Abfrage mit Variable
28.12.2008 19:28:21
Ramses
Hallo
..... & "WHERE Top15000.nr Like " & Testnr & ")")
ACHTUNG:
Ein Leerzeichen nach "Like".
Dann sollte das tun
Gruss Rainer
AW: SQL-Abfrage mit Variable
28.12.2008 20:01:00
Dieter
nee, bekomme immernoch einen Syntax-Fehler
Gruß Dieter
AW: SQL-Abfrage mit Variable
28.12.2008 20:05:00
Ramses
Hallo
dann stell doch mal den ganzen Code hier rein
Gruss Rainer
AW: SQL-Abfrage mit Variable
28.12.2008 20:16:09
Dieter
das ist der gesamte Code

Sub Abfrage_1()
Dim Testsnr As Integer
Testsnr = Range("testsnr1").Value
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=Visamdaten;Description=Visamdaten;UID=Test;PWD=Test1;APP=Microsoft Office  _
2003;WSID=DSCHWAB;DATABASE=Visamdaten" _
, Destination:=Range("A1"))
.CommandText = Array( _
"SELECT Feuchte_W5.snr, Feuchte_W5.ID" & Chr(13) & "" & Chr(10) & "FROM Visamdaten.dbo. _
Feuchte_W5 Feuchte_W5" & Chr(13) & "" & Chr(10) & "WHERE Feuchte_W5_Top15000.snr Like " & Testsnr & ")")
.Refresh BackgroundQuery:=False
End With
End Sub


der Fehler kommt beim .Refresh
Gruß Dieter

Anzeige
AW: SQL-Abfrage mit Variable
28.12.2008 20:36:46
Ramses
Hallo
Also dies
"... & Chr(13) & "" & Chr(10) & ..."
ist mir schon mal suspekt.
Wozu soll das gut sein bzw. was willst du da abfragen ?
Das sind doch nur Zeilenschaltungen und die haben in einem SQL-String eigentlich nichts verloren
Probier mal

Sub Abfrage_1()
Dim Testsnr As Integer
Testsnr = Range("testsnr1").Value
With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=Visamdaten;Description=Visamdaten;UID= _
Test;PWD=Test1;APP=Microsoft Office 2003;WSID=DSCHWAB;DATABASE=Visamdaten", Destination:=Range("A1")).CommandText = _
Array("SELECT Feuchte_W5.snr, Feuchte_W5.ID FROM Visamdaten.dbo Feuchte_W5 Feuchte_W5 WHERE  _
Feuchte_W5_Top15000.snr Like " & Testsnr & ")")
.Refresh BackgroundQuery:=False
End With
End Sub


Ein Fehler kommt immer beim Refresh wenn der SQL-String falsch aufgebaut ist
Gruss Rainer

Anzeige
AW: SQL-Abfrage mit Variable
28.12.2008 20:53:08
Dieter
es wird ein Fehler gemeldet, wahrscheinlich durch die
unetrschiedliche "Sortierung"
na jedenfalls erwartet Excel an der Stelle * ein Listentrennzeichen oder )
weiss aber nicht wo genau ?

Sub Abfrage_1()
Dim Testsnr As Integer
Testsnr = Range("testsnr1").Value
With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=Visamdaten;Description=Visamdaten;UID= _
test _
* ;PWD=test1;APP=Microsoft Office 2003;WSID=DSCHWAB;DATABASE=Visamdaten", Destination:=Range(" _
A1")).CommandText = _
Array("SELECT Feuchte_W5.snr, Feuchte_W5.ID FROM Visamdaten.dbo Feuchte_W5 Feuchte_W5 WHERE _
Feuchte_W5_Top15000.snr Like " & Testsnr & ")")
.Refresh BackgroundQuery:=False
End With
End Sub


Gruß Dieter

Anzeige
Warum geändert ?
28.12.2008 21:25:00
Ramses
Hallo
Wozu das "*" ?
Das ist in meinem Beispiel nicht drin und in deinem ersten Beispiel auch nicht !?
Gruss Rainer
AW: Warum geändert ?
28.12.2008 21:29:35
Dieter
ich wollte Dir nur die Stelle zeigen, die Excel anmeckert.
Eigentlich geht Excel auf das Semikolon vor PDW und schickt die Fehlermeldung.
Sorry, dass das nicht so klar `rübergekommen ist
Gruß Dieter
AW: Warum geändert ?
28.12.2008 21:49:25
Ramses
Hallo
Entferne alle "_" aus dem Beispielcode so dass die SQL Anweisung in EINER Zeile steht.
EXCEL kann kopierten Code aus dem Forum nicht immer im VB-Editor korrekt umsetzen
Gruss Rainer
AW: Warum geändert ?
29.12.2008 01:31:38
Erich
Hallo Dieter,
probiers mal so:

Sub Abfrage_1()
Dim Testsnr As Integer
Testsnr = Range("testsnr1").Value
With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=Visamdaten;" & _
"Description=Visamdaten;UID=Test;PWD=Test1;APP=Microsoft Office 2003;" & _
"WSID=DSCHWAB;DATABASE=Visamdaten", Destination:=Range("A1"))
.CommandText = Array("SELECT Feuchte_W5.snr, Feuchte_W5.ID " & _
"FROM Visamdaten.dbo Feuchte_W5 Feuchte_W5 " & _
"WHERE Feuchte_W5_Top15000.snr Like " & Testsnr & ")")
.Refresh BackgroundQuery:=False
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Warum geändert ?
29.12.2008 16:33:20
Dieter
Sorry, mit der Antwort hat es etwas länger gedauert......,
funktioniert leider in beiden "Fällen" nicht.
Laufzeitzeitfehler 1004
mit dem Hinweis beim Code vom Reiner
"Diese Option ist für diese Art von externen Datenbanken nicht verfügbar".
Nun weiss ich gar nix mehr ?
Gruß Dieter
AW: noch ein Versuch
29.12.2008 23:57:00
Erich
Hi Dieter,
eine Bitte: Wenn ein Fehler auftritt, könntest du bitte die falsche Codezeile, Fehlernr. und -hinweis posten?
Noch ein Versuch (kleine Änderung im SELECT):

Sub Abfrage_1()
Dim Testsnr As Integer
Testsnr = Range("testsnr1").Value
With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=Visamdaten;" & _
"Description=Visamdaten;UID=Test;PWD=Test1;APP=Microsoft Office 2003;" & _
"WSID=DSCHWAB;DATABASE=Visamdaten", Destination:=Range("A1"))
.CommandText = Array("SELECT Feuchte_W5.snr, Feuchte_W5.ID " & _
"FROM Visamdaten.dbo Feuchte_W5 Feuchte_W5 " & _
"WHERE Feuchte_W5_Top15000.snr Like '" & Testsnr & "')")
.Refresh BackgroundQuery:=False
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: noch ein Versuch
30.12.2008 14:15:00
Dieter
Hallo Erich,
immer noch der selbe Fehler.
Ich führe den Code manuell durch, d.h. mit Taste F8
Wenn ich bei Zeile . Refresh BackgroundQuery:=False angkommen bin
und weiter ausführen möchte, erscheint folgende Fehlermeldung :
Laufzeitfehler 1004 : SQL-Syntaxfehler
Bei der "Überwachung" von Testsnr wird der Wert korrekt angezeigt.
Gruß Dieter
AW: und noch ein Versuch
30.12.2008 14:35:00
Erich
Hi Dieter,
da fehlte noch ein Punkt (im FROM) - vielleicht funzt es jetzt:

Sub Abfrage_1()
Dim Testsnr As Integer
Testsnr = Range("testsnr1").Value
With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=Visamdaten;" & _
"Description=Visamdaten;UID=Test;PWD=Test1;APP=Microsoft Office 2003;" & _
"WSID=DSCHWAB;DATABASE=Visamdaten", Destination:=Range("A1"))
.CommandText = Array("SELECT Feuchte_W5.snr, Feuchte_W5.ID " & _
"FROM Visamdaten.dbo.Feuchte_W5 Feuchte_W5 " & _
"WHERE Feuchte_W5_Top15000.snr Like '" & Testsnr & "')")
.Refresh BackgroundQuery:=False
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: und noch eine Alternative
30.12.2008 14:53:00
Erich
Hi Dieter,
falls da doch eine Zahl gesucht werden soll, ohne Hochkommata um Testsnr:

Sub Abfrage_1()
Dim Testsnr As Integer
Testsnr = Range("testsnr1").Value
With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=Visamdaten;" & _
"Description=Visamdaten;UID=Test;PWD=Test1;APP=Microsoft Office 2003;" & _
"WSID=DSCHWAB;DATABASE=Visamdaten", Destination:=Range("A1"))
.CommandText = Array("SELECT Feuchte_W5.snr, Feuchte_W5.ID " & _
"FROM Visamdaten.dbo.Feuchte_W5 Feuchte_W5 " & _
"WHERE Feuchte_W5_Top15000.snr Like " & Testsnr & ')")
.Refresh BackgroundQuery:=False
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: und noch eine Alternative
30.12.2008 15:23:33
Dieter
nee, funzt leider immer noch nicht.
Ich habe das Hochkomma hinter Testsnr in ein Anführungszeichen " ändern müssen,
sonst wurde das schon bei der Eingabe angemeckert.
Gruß Dieter
AW: und noch eine Alternative
30.12.2008 15:52:00
Erich
Hi Dieter,
sorry, da hatte ich das falsche Zeichen gelöscht...
Noch eine Version - mit einem Semokolon am Ende:

Sub Abfrage_1()
Dim Testsnr As Integer
Testsnr = Range("testsnr1").Value
With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=Visamdaten;" & _
"Description=Visamdaten;UID=Test;PWD=Test1;APP=Microsoft Office 2003;" & _
"WSID=DSCHWAB;DATABASE=Visamdaten", Destination:=Range("A1"))
.CommandText = Array("SELECT Feuchte_W5.snr, Feuchte_W5.ID " & _
"FROM Visamdaten.dbo.Feuchte_W5 Feuchte_W5 " & _
"WHERE Feuchte_W5_Top15000.snr Like " & Testsnr & ";")
.Refresh BackgroundQuery:=False
End With
End Sub


Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Jaaaaaaaaaaa
30.12.2008 16:08:41
Dieter
ich glaube, Deine letzte Änderung mit dem Semikolon war der BRINGER.
Ich hatte auch schon gefühlte 1000 Änderungen probiert
Wunderbar, Danke.
Ich will eine Regelkarte aufbauen, kontinuierlich (jede Minute) Daten von einer SQL-Tabelle holen und in
die Auswertung bringen.
Da es doch mit der Zeit recht viele Daten sein werden, kann ich mit dem Code entsprechend filtern.
Danke !
Nu`werde ich erstmal ausgiebig testen......
Gruß Dieter

21 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige