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:
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.
Braucht er nicht mehr, sieh mal Deine Mails durch.
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.
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.
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.
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.
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. 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.
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?
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. Bisher habe ich mich auf das bequemere ADO beschränkt. Deshalb hat’s etwas länger gedauert.
so nun nochmal als anmerkung
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
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
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]