Supportnet Computer
Planet of Tech

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:


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

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:

  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

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 möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: