Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Nach Fehler meldung stürzt DB ab

Begonnen von uwe01, August 04, 2020, 13:14:47

⏪ vorheriges - nächstes ⏩

uwe01

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.
Gruß Uwe01
Win 10, Access 2002/2013
Bitte um Verständliche Antworten !

crystal

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
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

uwe01

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
Gruß Uwe01
Win 10, Access 2002/2013
Bitte um Verständliche Antworten !

crystal

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
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

DF6GL

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))
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

uwe01

Hallo Leute,

ich Danke euch für eure Antworten. Und die Antwort von DF6GL hat mein Problem gelöst.
Gruß Uwe01
Win 10, Access 2002/2013
Bitte um Verständliche Antworten !

DF6GL

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.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

Ja, fürchterlich mit Dir ...  ;)  ;)  ;)  ;)  ;)  ;D  ;D
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access