Access und VB, SELECT-Ergebnis in variable speichern
Oke
- datenbank
Guten Tag liebe Forumbesucher,
ich habe ein kleines Problem zu dem ich noch kein Beispiel oder einen Lösungshinweis im "Netz" gefunden habe.
zu meinem Problem:
Ich habe eine Tabelle "Kunden" mit den Spalten "KdNr", "Nachname", "Straße", ...
ich möchte einer Variable "var_kundennummer" das Ergebnis meiner Select Anweisung geben.
Sinngemäß etwa so:
---------Anfang----------
var_kundennummer = SELECT kdNr FROM Kunden WHERE Nachname = "var_nachname", LIMIT 1
---------Ende-----------
Ich bekomme es aber nicht VB / Access tauglich aufgeschrieben.
Wenn mir da jemand helfen kann.
einen Insert Auftrag hab ich schon hinbekommen da ich beispiele dazu gefunden habe.
---VB Code Anfang---
CurrentDb.Execute ("INSERT INTO Kunden (Nachname, Wohnort, Straße, Telefon, EMail, Rabatt) VALUES ('" & var_nachName & "', '" & var_Wohnort & "', '" & var_Strasse & "', '" & var_Telefon & "', '" & var_EMail & "', " & var_Rabatt & ");")
---VB Code Ende ---
PS: mein eigentliches Ziel ist es den Autowert ("KdNr") des gerade eingetragenen Datensatzes in einer variable zu speichern. Vielleicht gibt es ja auch eine einfachere Lösung!?
Danke schon mal für euer/dein bemühen
Hello,
die Ab-Werk-Methode für Arbeiten mit Datensätzen sind Recordsets. Eine Lösung könnte also etwa so aussehen:
Dim rs As Recordset ' deklarieren
Set rs = CurrentDb.OpenRecordset("SELECT kdNr FROM Kunden WHER Nachname = '" & var_nachname & "'") ' RS öffnen und zuweisen
If (rs.EOF = false) then ' falls es mindestens einen Treffer gab...
var_kundennummer = rs.Fields("kdNr") ' Wert des Felds kdNr in die Variable werfen; Achtung: Falls NULL ein möglicher Eintrag ist wird es komplizierter
end if
MfG
Rouven
Wert des Felds kdNr in die Variable werfen; Achtung: Falls NULL ein möglicher Eintrag ist wird es komplizierter
Eine Null ist Gott sei dank nicht möglich ;). Der Autowert ist ja immer >0
Danke für die schnelle Antwort, ich werds mal ausprobieren
Hello,
Wert des Felds kdNr in die Variable werfen; Achtung: Falls NULL ein möglicher Eintrag ist wird es komplizierter
ich geb dir die Warnung trotzdem, weil ich selbst viel zu oft in die Falle gelaufen bin:
Man könnte instinktiv mit Java-Wissen an folgendes Konstrukt denken:
var_xyz = Iif(IsNull(feld), defaultWert, macheIrgendwasMitWert(feld))
Iif in VB(A) ist tückisch - auch wenn die Bedingung false ist wird der else-Zweig IMMER ausgeführt, anders herum ebenfalls, Iif führt IMMER beide Zweige aus, verwirft aber einen Rückgabewert, d.h.:
MfG
Rouven
Leider klappt es noch nicht.
Er meckert mir an, dass die Typen unverträglich seien.
Laut des Debuggers müsste es diese Zeile sein:
Set rs = CurrentDb.OpenRecordset("SELECT KdNr FROM Kunden WHERE Nachname = '" & var_nachName & "'") ' RS öffnen und zuweisen
Was kann da falsch sein
Hello,
Was kann da falsch sein
versuch mal das rs explizit als DAO.Recordset zu Dim'en, falls sich Access dann beschwert setz eine Referenz auf die Microsoft Data Object (DAO) Library. es kann sein, dass sich ADO und DAO (Standard unter Access) gerade in die Quere kommen.
MfG
Rouven