Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: uwe01 am August 04, 2020, 13:14:47

Titel: Nach Fehler meldung stürzt DB ab
Beitrag von: uwe01 am August 04, 2020, 13:14:47
Hallo Leute,
ich habe da ein Problem im Formular.
Nach einer Falscher Eingabe in ein Kombi Feld und wieder entfernen erhält man ein
Laufzeitfehler 3075
,,Syntaxfehler (fehlender Operator) in Abfrageausdruck [ErsatzID]=.

Und wenn man bei der Meldung auf Beenden klickt erscheint wieder ein
Laufzeitfehler 91
,,Objektvariable oder Blockvariable nicht festgelegt"

Es lassen sich aber dennoch in dem Formular weiter Eingaben machen. Geht man nun aus dem Formular raus, so lassen sich keine weiteren Formulare öffnen. Die ganze DB ist dann abgestürzt.
Wird die DB wieder gestartet läuft wieder alles.
Was kann ich da machen das die Fehler Meldungen nicht mehr erscheinen und die ganze DB abstürzt.
Titel: Re: Nach Fehler meldung stürzt DB ab
Beitrag von: crystal am August 04, 2020, 13:30:21
Hallo,
schliche Antwort: bemühe den Debugger und gehe Schritt für Schritt mit F8 durch den Code.
Soviel ist zumindest klar: am betreffenden Feld "hängt" VBA-Code, der den Fehler verursacht. Also musst du versuchen, diesen VBA-Code zu analysieren.

Gruß,
crystal
Titel: Re: Nach Fehler meldung stürzt DB ab
Beitrag von: uwe01 am August 04, 2020, 13:46:04
Hallo Crystal,

habe mir den VBA Code angeschaut, würde aber sagen der ist Ok
Private Sub Artikelnr_AfterUpdate()
    'Warnmeldung ausschalten
        DoCmd.SetWarnings False
       
         Me!Artikelbez = DLookup("[Artikelbez]", "tblErsatzteile", "[ErsatzID]=" & Me!Artikelnr)
         Me!Preis = DLookup("[VK-Preis]", "tblErsatzteile", "[ErsatzID]=" & Me!Artikelnr)

End Sub
Titel: Re: Nach Fehler meldung stürzt DB ab
Beitrag von: crystal am August 04, 2020, 14:15:35
Hallo,
wo genau kommt der Fehler?
Setze mal einen Breakpoint in der Zeile "docmd.setwarnings false".
Steppe dann schrittweise mit F8 durch den Code.

Es könnte sein, dass im Feld "Artikelnr" ein Leerzeichen auftritt. Da solltest du jedenfalls genau hinschauen, was in "Artikelnr" für ein Wert steht. Vielleicht irgend ein Sonderzeichen???

Wenn "Artikelnr" auch Buchstaben enthalten kann, musst du das in der Abfrage so schreiben:
...
..."[ErsatzID] = " & chr$(34) & Me!Artikelnr & chr$(34))

Aber prüfe im Debugging-Modus bitte zuerst den Inhalt von "Artikelnr", indem du im VBA-Code-Editor mit der Maus auf dieses Feld zeigst oder im Direktfenster (nach Ausführung der betr. Zeile mit F8) eingibst: ?artikelnr
Titel: Re: Nach Fehler meldung stürzt DB ab
Beitrag von: DF6GL am August 04, 2020, 14:38:14
Hallo,

wozu Setwarnings False?

Wirf das raus und setze einen vernünftigen Errorhandler ein.


Leere Form-Steuerelemente sind in aller Regel NULL und sollten so bei dieser Situation abgefangen werden:

... ,"[ErsatzID]=" & nz(Me!Artikelnr,0))
Titel: Re: Nach Fehler meldung stürzt DB ab
Beitrag von: Beaker s.a. am August 04, 2020, 17:09:20
Hallo,
@franz
Da wird das DLookup aber doch auch NULL zurückgeben, solange es keinen Dummy-
Artikel mit der Nr. 0 gibt.
Ich würde dem ganzen Ausdruck einen Ersatzwert zuweisen
Me!Artikelbez = Nz(DLookup("[Artikelbez]", "tblErsatzteile", "[ErsatzID]=" & Me!Artikelnr), "")
gruss ekkehard
Titel: Re: Nach Fehler meldung stürzt DB ab
Beitrag von: uwe01 am August 05, 2020, 07:29:15
Hallo Leute,

ich Danke euch für eure Antworten. Und die Antwort von DF6GL hat mein Problem gelöst.
Titel: Re: Nach Fehler meldung stürzt DB ab
Beitrag von: DF6GL am August 05, 2020, 08:16:20
Hallo,

@Ekkehard

Die nz()-Funktion verhindert den Syntaxfehler.

Dass Dlookup() anschließend ein "NULL" liefert und dieses dem Steuerelement zugewiesen wird,  ist ja richtig.


Allenfalls könnte ein numerischer (ArtikelNr-)Ersatzwert die Bedeutung für einen Allgemein-Artikel mit Standardpreis haben.

Ein Ersatzwert bei der nz()-Funktion könnte ansonsten dann sinnvoll sein, wenn ein Textvergleich mit Like erfolgen soll und bei "NULL"-Kriterium alle DS gefiltert werden sollen. 

... [ErsatzBenennung] like '" & nz(Me!ArtikelBenennung,"*") & "'" ....

Das ist aber bei Dlookup() unsinnig.

Titel: Re: Nach Fehler meldung stürzt DB ab
Beitrag von: Beaker s.a. am August 05, 2020, 17:38:18
Hallo Franz,
ZitatDass Dlookup() anschließend ein "NULL" liefert und dieses dem Steuerelement zugewiesen wird,  ist ja richtig.
Jau, das hatte ich wohl ausgeblendet. Gefilterte Wahrnehmung; - fürchterlich.
gruss ekkehard
Titel: Re: Nach Fehler meldung stürzt DB ab
Beitrag von: DF6GL am August 05, 2020, 18:03:18
Ja, fürchterlich mit Dir ...  ;)  ;)  ;)  ;)  ;)  ;D  ;D