Hallo,
ich möchte vor dem öffnen eines Formulares aus einem anderen Formular heraus prüfen, ob es schon einen Datensatz zum der Kennung gibt. Wenn ja dann soll der entsprechende DS geöffnet werden ansonsten ein neuer.
Ich wollte das wie folgt mit DLookup machen
Die Tabelle wo ich suche heißt
va-VEP
Das Feld in der Tabelle heißt
Kennungen
Dim Ken As String
Ken = Me.Kennung
If Not IsNull(DLookup("Kennungen", "va-VEP", "Kennungen = " & Ken)) Then
Wenn nun die Kennung (was sehr häufig vorkommt) einen "." enthält kommt der Fehler1 und ansonsten der Fehler2
Was mache ich hier falsch
Danke
DD
Hallo,
versuche es so:
If Not IsNull(DLookup("Kennungen", "[va-VEP]", "Kennungen = '" & Me.Kennung &"'")) ThenDie ersten beiden Zeilen sind überflüssig. Kennung ist Text und muss in Hochkomma eingeschlossen werden.
Feldnamen mit Sonderzeich müssen in ein [] Paar eingeschlossen werden. Daher sollte man auf Sonderzeichen (und Leerzeichen) in Feldnamen verzichten. Es spart ein Haufen Arbeit.
Wenn Du statt Dlookup DCount verwenden würdest, könntest Du die Prüfung auf Null sparen.
If DCount("Kennungen", "[va-VEP]", "Kennungen = '" & Me.Kennung & "'") > 0 Then
Ich denke, einmal prüfen genügt, und da Du sowieso das Formular öffnen willst, hast Du bereits die nötige Filterung.
DoCmd.OpenForm "FormName", , , "Key = " & Me.txtKey, , , Me.txtKey
Das Formular prüft sich dann selbst:
Private Sub Form_Open(Cancel As Integer)
If Me.Recordset.EOF Then
' leer
Me.Recordset.AddNew
If Not IsNull(Me.OpenArgs) Then Me.txtKey = CLng(Me.OpenArgs)
Else
' da ist was
End If
End Sub
Hallo, und erstmal danke für Euere Antworten.
Ich habe die Version von Eberhard versucht umzusetzten
Der Code sieht wie folgt aus
DoCmd.OpenForm "frmName", , , "Kennungen = '" & Me.Kennung & "'", , , Me.Kennung
Der Aufruf läuft schonmal und die richtige Kennung wird übergeben
Dann beim Laden des Formulares sieht der Code wie folgt aus.
If Me.Recordset.EOF Then
leer
Me.Recordset.AddNew
Else
If Not IsNull(Me.OpenArgs) Then Me.Kennungen = CLng(Me.OpenArgs)
End If
Der Fehler3 kommt dann genau hier:
If Not IsNull(Me.OpenArgs) Then Me.Kennungen = CLng(Me.OpenArgs)
In der Tabelle "va-VEP" ist das Feld Kennungen vom Typen "Kurzer Text"
In der Tabelle vom aufrufenden Formular hat des Feld Kennung den Typen "Kurzer Text"
Warum bekomme ich hier den Fehler "Typen unverträglich"
Danke
DD
Hallo,
Du willst mit Clng aus Text eine Zahl machen.
Außerdem heißt das Feld Kennung und nicht Kennungen.
Eberhard verwendet Schlüsselzahlen in seinem Vorschlag.
Hallo Klaus,
hast natürlich Recht ;)
Nicht Clng sondern CStr und schon geht es.
Danke Euch beiden
DD
Hallo,
Kennung ist ein String (Text). CStr ist somit überflüssig.
Ja richtig Danke
DD
I.Ü. liefert .OpenArgs immer (siehe auch OH) einen String, auch wenn nur
eine Zahl übergeben wird.