Supportnet / Forum / Datenbanken
SQL Variablen zuweisung
Frage
Hi, ich bins mal wieder :)
ich mache mit einen SQL befehl eine Abfrage und das Ergebnis möchte ich in einer Variable speichern (intVariable)
Der SQL befehl wäre ungefähr so:
"SELECT rate FROM tblWertetabelle WHERE Time = " & cboDatum.Value & " And curreny = " & cboWaehrung.Value)
Wie speicher ich dies nun in VBA in einer Variable?
Und wie führ ich den SQL befehl in VBA aus?
Danke für jegliche Hilfe
Antwort 1 von Coolpix
hallo,
soweit ich weiss kannst du einer Variablen kein Ergebnis einer Abfrage zuweisen...
ich würde das mit dem Domänenaggregat "Dlookup" tun:
wenn du ein SQL-Statement in vba ausführen willst, geht das über
Greetings ;-)
soweit ich weiss kannst du einer Variablen kein Ergebnis einer Abfrage zuweisen...
ich würde das mit dem Domänenaggregat "Dlookup" tun:
intVariable = DLookup ("[Hausnummer]", "[tblWertetabelle]", "[Time] = " & cboDatum.Value & " AND [curreny] = " & cboWaehrung.Value )
wenn du ein SQL-Statement in vba ausführen willst, geht das über
DoCmd.RunSQL "SELECT rate FROM tblWertetabelle WHERE Time = " & cboDatum.Value & " And curreny = " & cboWaehrung.Value) ;"
Greetings ;-)
Antwort 2 von ichhabeinefrage
Ok, danke schon mal für die Hilfe, aber ich versteh den Code noch nicht so ganz.
Wieso steht da im Code Hausnummer?
Eigentlich soll er mir in der intvariable, den rate-wert ausgeben den er in der selben Zeile wie den ausgewählent time und currency daten findet.
z.B time = 2.8.007 und currency USD
in der rate spalte würde dann daneben 1.3 stehen
jetzt soll er mir 1.3 speichern.
veständlich?
THX
Wieso steht da im Code Hausnummer?
Eigentlich soll er mir in der intvariable, den rate-wert ausgeben den er in der selben Zeile wie den ausgewählent time und currency daten findet.
z.B time = 2.8.007 und currency USD
in der rate spalte würde dann daneben 1.3 stehen
jetzt soll er mir 1.3 speichern.
veständlich?
THX
Antwort 3 von son_quatsch
Dazu musst Du die ADO (Microsoft ActiveX Data Objects) verwenden (Menüpunkt "Verweise" und selbiges dort selektieren).
Da eine SQL-Abfrage 0, einen oder mehrere Datensätze mit einer oder mehreren Spalten zurückgeben kann, wäre die Zuweisung an eine Variable absolut untauglich. Folgendes Beispiel hilft Dir hoffentlich weiter:
Da eine SQL-Abfrage 0, einen oder mehrere Datensätze mit einer oder mehreren Spalten zurückgeben kann, wäre die Zuweisung an eine Variable absolut untauglich. Folgendes Beispiel hilft Dir hoffentlich weiter:
Dim rs As ADODB.Recordset
Dim conDB As ADODB.Connection
Dim iAnzahl as integer
Dim sLetzter as string
Set conDB = New ADODB.Connection
conDB.ConnectionString = "Driver={Oracle in instantclient10_2};" _
& "Provider=MSDAORA;" _
& "Password=xxxPassworTxxx;" _
& "User ID=xxxLoginnamExxx;" _
& "Data Source=xxxDatenbanknamExxx"
conDB.Open
conDB.BeginTrans
Set rs = New ADODB.Recordset
rs.Open "SELECT spalte1, spalte2 FROM tabell1", conDB, adOpenForwardOnly, adLockReadOnly, adCmdText
iAnzahl
Do While Not rs.EOF ' jeden Datensatz durchlaufen
iAnzahl = iAnzahl + 1
debug.print "Ergebniszeile #" & iAnzahl & ": "
debug.print rs.Fields("spalte1")
debug.print rs.Fields("spalte2")
sLetzter = rs.Fields("spalte2")
rs.MoveNext
Loop
debug.print "Letzter Wert der letzten Zeile war: " & sLetzter
conDB.RollbackTrans
conDB.Close
Antwort 4 von ichhabeinefrage
durch änderung von paar sachen, hab ich das doch hinbekommen mit deiner ersten Antwort.
Doch jetzt besteht folgendes Problem:
Datentyp in Kriterienausdruck unverträglich.
Das könnte daran liegen, das ich eine Datei als Datum abfragen will, die wohl aber als text gespeichert ist.
Kann ich irgendwie Test in Datum umwandeln?
Der Text ist schon so: 01.12.2004
Doch jetzt besteht folgendes Problem:
Datentyp in Kriterienausdruck unverträglich.
Das könnte daran liegen, das ich eine Datei als Datum abfragen will, die wohl aber als text gespeichert ist.
Kann ich irgendwie Test in Datum umwandeln?
Der Text ist schon so: 01.12.2004
Antwort 5 von son_quatsch
...WHERE to_char(Time, 'DD.MM.YYYY') = ...
Antwort 6 von ichhabeinefrage
Ich weiß nicht, wo der Fehler liegt.
Ich habe jetzt folgenden Code:
dblValue = DLookup("[Rate]", "tbl_001_Valuetable", " [Date_DDMMYYYY] = '" & Me.txtDate.Value & "' AND [Currency] = '" & Me.cboCurrency.Value & "'")
(Alles hintereinander)
Und eine Tabelle (tbl_001_Valuetable) mit den Spalten Date_DDMMYYYY( als Datum), Currency (als Text) und Rate( als Double).
Wenn ich diesen Code ausführe kommt folgender Fehler:
Laufzeitfehler '3464':
Datentypen in Kriterienausdruck unverträglich.
Wenn ich in der Tabelle Date_DDMMYYYY als Text speicher funktioniert der Code, leider brauche ich Date_DDMMYYYY aber als Datum.
Ich hab auch schon versucht, dass mit Variablen zu Umgehen, was aber nicht geklappt hat.
Brauche Hilfe -.-
Ich habe jetzt folgenden Code:
dblValue = DLookup("[Rate]", "tbl_001_Valuetable", " [Date_DDMMYYYY] = '" & Me.txtDate.Value & "' AND [Currency] = '" & Me.cboCurrency.Value & "'")
(Alles hintereinander)
Und eine Tabelle (tbl_001_Valuetable) mit den Spalten Date_DDMMYYYY( als Datum), Currency (als Text) und Rate( als Double).
Wenn ich diesen Code ausführe kommt folgender Fehler:
Laufzeitfehler '3464':
Datentypen in Kriterienausdruck unverträglich.
Wenn ich in der Tabelle Date_DDMMYYYY als Text speicher funktioniert der Code, leider brauche ich Date_DDMMYYYY aber als Datum.
Ich hab auch schon versucht, dass mit Variablen zu Umgehen, was aber nicht geklappt hat.
Brauche Hilfe -.-