Laufzeitfehler 3405

Hallo
habe versucht, die Datei per Index anzusteuern.

Hat auch geklappt, leider bleibt irgendein Rst am Ende offen und es kommt ein Laufzeitfehler.

Ich wollte die Spalte bei einer doppelten Nummer ansteuern.
Dann wird ja ein Fehler erzeugt.

On Error Goto Weiter

Weiter:

With Rst
.CancelUpdate
.MoveFirst
End With

weiter im Code…

Is hier ein Fehler erkennbar???
Am Ende sind meines Erachtens alle Tabellen wieder geschlossen.

Wie behandelt man einen solchen, damit man dem Fehler auf die Spur kommt???

Ich habe keinen Fehler entdecken können.

Mfg Werner

Hallo kann auch 3705 gewesen sein, sorry.
Jedenfalls das ein Objekt offen ist.

Hallo kann auch 3705 gewesen sein, sorry.
Jedenfalls das ein Objekt offen ist.

Hallo Werner,

also mit dem bruchteil kann man nur raten.
Aber lasse mal die Prozedure wo der fehler auftritt im Step by Step Modus durchlaufen ( Also Debugg und immer F8) dann überwache mal das object err. Da siehst du in welcher Anweisung welcher Fehler auftritt.
Dann poste mal die Prozedure und wo da der fehler auftritt, mit der Fehlernummer.
So koennen wir dir dann sagen wo der wurm haengt, so koennen wir nur raten.
Wenn du die Meldung bekommst das das Object bereits geöffnet ist, schaue mal ob du die Datenbank nicht schon irgendwo geöffnet hast. Es muss nicht zwingend VB sein,es reicht auch schon wenn sie zum bsp von einer anderen Anwendung geöffnet ist:wink:

MFG Alex

Wie mache ich das genau
Hallo
kannst du das noch etwas genauer erklären.
Ich kenne nur die Option, das ich zeilenweise das Programm durchlaufen lassen kann. Da kann man dann Variablenwerte abfragen, wenn man mit der Maus drüber läuft bzw. sieht man, wo das Programm zur OnError-Sequenz springt. Bei mir tut es das ja nicht, es kommt nur eine Meldung.
Rainer hat sich meiner schon angenommen und ein paar Verbesserungen gemacht, mal sehen obs jetzt geht ohne onError.

Wie verfolge ich das mit dem Debug und F8´und was heisst poste???
Das is alles neu für mich.

Mfg Werner

Hallo Werner,

kannst du das noch etwas genauer erklären.

Braucht er nicht mehr, sieh mal Deine Mails durch. :wink:

Ich kenne nur die Option, das ich zeilenweise das Programm
durchlaufen lassen kann. Da kann man dann Variablenwerte
abfragen, wenn man mit der Maus drüber läuft bzw. sieht man,
wo das Programm zur OnError-Sequenz springt. Bei mir tut es
das ja nicht, es kommt nur eine Meldung.
Rainer hat sich meiner schon angenommen und ein paar
Verbesserungen gemacht, mal sehen obs jetzt geht ohne onError.

Ja, geht, ist doch getestet.

Wie verfolge ich das mit dem Debug und F8´

Wenn Du den Quellcode vor Dir hast. dann klicke mal links auf den grauen Rand. Dann merkst Du, warum der so breit ist. :wink:
Damit setzt Du eine Stoppunkt, das Programm wird in der Entwicklungsumgebung an der Stelle angehalten. Stellst Du dann den Mauszeiger auf eine Variable, erscheint deren Inhalt als ToolTipText.
Wenn Du den Quellcode des angehaltenen Progamms vor Dir hast, siehst Du links einen gelben Pfeil. Das ist die Zeile, die als nächstes ausgeführst werden soll. Der Pfeil läßt sich verschieben.
Klickst Du noch einmal auf Start, wird das Programm fortgesetzt, bis es wieder auf einen Stoppunkt trifft oder fertig ist.
Das angehaltene Programm kannst Du mit ‚F8‘ schrittweies, Befehl für Befehl ausführen, dabei den Inhalt von Variablen einsehen und so genau beobachten, was passiert. Fehlersuche wird damit einfach.
Das ist IMHO die beste Funktion, die VB zu bieten hat. Hätte ich geahnt, daß Du davon nichts weißt, hätte ich Dir das längst erzählt. :wink:

Gruß, Rainer

Das war klar
Hallo
ne das war mir klar (hatte ich ja auch geschrieben), aber wie bekomme ich solche Fehler raus, die ich da jetzt hatte mit dem geöffneten Objekt.
Wenn ich das Step by Step durchgehe, läuft es ja sogar durch.
Das is doch der Hohn, wenn es bei der Nachverfolgung läuft und so nicht.

Naja ich habe ja jetzt ein paar Elemente zu verbessern.
Die OnErrorMethode scheint nicht der Knaller zu sein, da mache ich das lieber so, wie du gesagt hast über FindFirst, es gibt ja auch nur einen Punkt der Art.

Ist eben alles etwas schwierig, es gleich richtig zu schreiben, wenn man alles über 5 Ecken doch anders stricken musst.

Mfg Werner

Hallo Werner,

ne das war mir klar (hatte ich ja auch geschrieben), aber wie
bekomme ich solche Fehler raus, die ich da jetzt hatte mit dem
geöffneten Objekt.
Wenn ich das Step by Step durchgehe, läuft es ja sogar durch.
Das is doch der Hohn, wenn es bei der Nachverfolgung läuft und
so nicht.

Ich kann im Moment nur raten. Ich glaube, Dein Programm macht erst Addnew und soll dann einen Datensatz suchen. Das geht wohl nicht.

Naja ich habe ja jetzt ein paar Elemente zu verbessern.
Die OnErrorMethode scheint nicht der Knaller zu sein,

stimmt. :wink:

da mache
ich das lieber so, wie du gesagt hast über FindFirst, es gibt
ja auch nur einen Punkt der Art.

Nicht findfirst, Bei DAO ist das .Find. :wink: Du hast doch den fertigen Quellcode, den Du nur noch mit Copy and Paste einfügen mußt. Ist getestet.

Auch das Ersetzen der Löschroutine durch einen Befehl ist getestet.

Füge das doch einfach mal beides ein und lass das Programm laufen. Speichern kannst Du ja, wenn Du gesehen hast, das es funktioniert.

Gruß, Rainer

Jawoll
Jawoll
werde ich morgen alles einabauen.
Vielen Dank, sollte dir vielleicht mal ein Präsent schicken, wenn das so weitergeht *g*, vielleicht einen OSterhasen??? oder lieber ne Flasche Wein?

Ein schönes Wochenende jedenfalls

Mfg Werner

Hallo Werner,

werde ich morgen alles einabauen.
Vielen Dank, sollte dir vielleicht mal ein Präsent schicken …

Unfug! Das ist meine Art, mich zu amüsieren. Laß mir doch den Spaß.
Gelernt habe ich auch etwas dabei, das war das erste, was ich mit DAO gemacht habe. :wink: Bisher habe ich mich auf das bequemere ADO beschränkt. Deshalb hat’s etwas länger gedauert.

Ein schönes Wochenende jedenfalls

Das wünsche ich Dir auch.

Gruß, Rainer

Hallo Werner,

so nun nochmal als anmerkung :wink:
Du hast zum bsp eine Sub die einen fehler verursacht und weisst net wo.
Ich gehe dann immer wiefolgt vor … bsp.

public function Div ( a as single, b as single) as single 
on error goto fehler
 div=0
 div= a/b
 exit function
 fehler:
 resume
end function

so nun mal kurz erklärt :smile:
Diese Function dividiert zwei zahlen wenn du sie nun aufrufst
mit i=div(0,5) versuchst du eine division 0/5 zu machen was zu einem Fehler führt.

gehen wir mal davon aus, du weisst net wo der schuh klemmt …
setze ein Breakpoint auf resume
Nun lasse das programm normal laufen. Du rifst die funktion auf es tritt ein Fehler auf. Durch die Anweisung „on error goto fehler“
springt das programm nun zu der sprungmarke „fehler“ sprich auf das resume. da dort der breakpoint ist, haelt das Programm an. Nun drueckst du f8 und das programm springt wieder in die zeile wo der fehler auftrat. Somit weisst du aus welcher zeile her er stammt und kannst dir dann alle werte anschauen.
Dort wo der quelltext steht, machst mal ein rdechtsklick rein und aus dem popupmenu waehlst du dann Überwachuzng hinzufügen.
Dort kannst du dann die Variablen, beispiel a und b eingeben, sowie das object err. So nun öffnet sich das überwachungsfenster und du siehst die fehlernummer sowie die beschreibung etc und auch die werte der variablen.
Alternativ kannst du auch die anweisung debug.print a verwenden
Das würde bewirken das im direktfenster der wert der variable a geschrieben wird :wink:

So wenn du nun im Beispiel das dann machst, würdest du sehen das a=0 ist, b=5 und das err object die fehlermeldung division durch 0 enthaelt. Nun kannst du das project stoppen und den quelltext anpassen, zum bsp.

public function Div ( a as single, b as single) as single 
on error resume next
 div=0
 if a=0 then exit function 
 div= a/b
end function

somit würdest du nun sehen das der quelltext läuft.

ich hoffe ich konnte es dir einigermassen verstaendlich erklären?

MFG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]