sqlStr = "SELECT tbl_kassenleistungen.KL_Leistungs_ID" _
& "FROM (tbl_kassendaten INNER JOIN tbl_kassenleistungen ON tbl_kassendaten.KK_Kassentyp = tbl_kassenleistungen.KL_Kassentyp)" _
& "INNER JOIN tbl_patientendaten ON tbl_kassendaten.KK_Kassennummer = tbl_patientendaten.PD_Kassennummer" _
& "WHERE (((tbl_patientendaten.PD_ID)=[Formulare]![FM_behandlung_eingabeform]![tf_patient]) " _
& "AND ((tbl_kassenleistungen.KL_Leistungsname) Like "" * hausbesuch * ""));"
Ich weis das aus dieser Abfrag nur genau 1 Wert herauskommt. Habe viel gegoogelt aber nix brauchbares gefunden. Ich möchte dieses einen Wert in eine Variable schreiben Mit der ich dann weiter arbeiten kann.
Hallo,
z.B.:
Dim rst As DAO.Recordset
Dim strSQL as String, lngKLeitID As Long
strSQL = "SELECT ..... "
set rst = CurrentDB.Openrecordset (strSQL)
If rst.RecordCount >0 Then
lngKLeistID = rst.Fields(0).Value
Else
MsgBox "Keine Daten vorhanden"
End If
...
..
.
Set rst = Nothing
strSQL = "SELECT KL_Leistungs_ID " _
& "FROM (tbl_kassendaten INNER JOIN tbl_kassenleistungen " _
& "ON tbl_kassendaten.KK_Kassentyp = tbl_kassenleistungen.KL_Kassentyp) " _
& "INNER JOIN tbl_patientendaten ON tbl_kassendaten.KK_Kassennummer = tbl_patientendaten.PD_Kassennummer " _
& "WHERE (((tbl_kassenleistungen.KL_Leistungsname) Like "" * hausbesuch * ""') AND ((tbl_patientendaten.PD_ID)= " & [Formulare]![FM_behandlung_eingabeform]![tf_patient] & "));"
Set rst = CurrentDb.OpenRecordset(strSQL)
Var_hausbesuchsnummer = rst.Fields(0).Value
Fehler 2465
Access kann das in Ihren Ausdruck angesprochene Feld '|1' nicht finden.
Was mcih auch wundert ist das ich
Like "" * hausbesuch * ""') in Doppel Gänse setzten musste damit es funktioniert.
Hallo,
"WHERE (((tbl_kassenleistungen.KL_Leistungsname) Like " & "'*hausbesuch*'" & ") AND ((tbl_patientendaten.PD_ID)= " & [Formulare]![FM_behandlung_eingabeform]![tf_patient] & "));"
Leider immernoch selber fehler.
Wäre lieb wenn Ihr nen zusatz Schreibt wenn ihr am Code was ändert. ich möchte ja aus meinen Fehlern Lernen. Mich interesiert warum dies oder das geändert werden musste.
Hallo,
Bitte nimm Dir Ratschläge, die man Dir gibt, zu Herzen und setze die auch ein...
Fehler:
-- Kein Option Explicit benutzt (sehr wahrscheinlich)
--"Formulare" muss "Forms" lauten. Wenn der Code in diesem Formular steht, dann ME anstelle Forms!MeinFormular nehmen.
-- Variablen IMMER mit dem passenden Datentyp deklarieren. Datentyp Variant nur benutzen, wenn man das unbedingt braucht.
-- Hochkomma zuviel vor "AND"
Dim Var_hausbesuchsnummer as Long '???? Hängt von Datentyp des Tabellenfeldes "KL_Leistungs_ID" ab
strSQL = "SELECT KL_Leistungs_ID " _
& "FROM (tbl_kassendaten INNER JOIN tbl_kassenleistungen " _
& "ON tbl_kassendaten.KK_Kassentyp = tbl_kassenleistungen.KL_Kassentyp) " _
& "INNER JOIN tbl_patientendaten ON tbl_kassendaten.KK_Kassennummer = tbl_patientendaten.PD_Kassennummer " _
& "WHERE (((tbl_kassenleistungen.KL_Leistungsname) Like ""*hausbesuch*"" ) AND ((tbl_patientendaten.PD_ID)= " & [Forms]![FM_behandlung_eingabeform]![tf_patient] & "));"
Set rst = CurrentDb.OpenRecordset(strSQL)
Var_hausbesuchsnummer = rst.Fields(0).Value
Die Doppel-Gänse sind nötig, damit VBA die beiden als (einzelnes) Gänsefüsschen-Zeichen (im SQL-String) auffasst und nicht als Textbegrenzungszeichen in einer VBA-Codezeile.
Um diese Doppelgänse zu vermeiden, kann anstelle ein Hochkomma verwendet werden, wie database gezeigt hat, dabei vielleicht etwas einfacher geschrieben:
"WHERE (((tbl_kassenleistungen.KL_Leistungsname) Like '*hausbesuch*' ) AND ((tbl_patientendaten.PD_ID)= " & [Forms]![FM_behandlung_eingabeform]![tf_patient] & "));"
"Unschön" ist die Verwendung von Text ("hausbesuch" ---> KL_Leistungsname) und dem LIKE-Operator einschliesslich der Sternchen : Besser wäre die konsequente Nutzung des Primärschlüssel(wertes).
Wenn trotzdem nach dem Leistungsnamen gefiltert werden soll, dann ist der = - Operator (und OHNE Sternchen) vorzuziehen:
WHERE (((tbl_kassenleistungen.KL_Leistungsname) = 'hausbesuch' ) AND .....
[Forms]![FM_behandlung_eingabeform]![tf_patient]
Das Problem war Forms anstatt Formulare zu benutzen.
Hallo,
Du meinst das sicher "anders herum" .. ;)
"Formulare" war falsch...
Was ist mit den anderen Punkten?
Etwas blöd ausgedrück aber du hast recht. Formulare war falsch.