Supportnet / Forum / Datenbanken
Meldung unterdrücken beim Einfügen von Records
Frage
Hi all,
wisst Ihr wie ich die Meldung von Access 2000 unterdrücken kann ("Wollen Sie einen Datensatz einfügen ...?"), die
entsteht wenn ich per DoCmd.RunSQL ("INSERT INTO...") einen Datensatz einfüge ?
1000Dank - Armin
Antwort 1 von PotzBlitz
Hallo Armin,
probier es mal so:
Falls du bereits Variablen für das Database-Objekt verwendest, kannst du sie genauso heranziehen:
Gruss
PotzBlitz
probier es mal so:
CurrentDb.Execute "INSERT INTO..."Falls du bereits Variablen für das Database-Objekt verwendest, kannst du sie genauso heranziehen:
Dim dbCurrent As Database
Set dbCurrent = CurrentDb
dbCurrent.Execute "INSERT INTO..."
Gruss
PotzBlitz
Antwort 2 von Marie
Nein Potzblitz, er wird auch dann eine Warnmeldung bekommen, er muss schon die Warnmeldungen ausschalten. Aber Achtung, die bleiben ausgeschaltet, wenn Du sie nicht sofort wieder einschlatest. Also auch in der Fehlerroutine wieder einschalten oder mit
on error resume next arbeiten an der Stelle.
DoCmd.SetWarnings False
DoCmd.RunSQL ("INSERT INTO...")
DoCmd.SetWarnings True
on error resume next arbeiten an der Stelle.
DoCmd.SetWarnings False
DoCmd.RunSQL ("INSERT INTO...")
DoCmd.SetWarnings True
Antwort 3 von PotzBlitz
Nein Marie, es kommen keine Warnmeldungen. Das Verwenden von DoCmd.SetWarnings ist daher völlig überflüssig.
Wollen wir schon wieder darüber diskutieren? ;-)
Gruss
PotzBlitz
Wollen wir schon wieder darüber diskutieren? ;-)
Gruss
PotzBlitz
Antwort 4 von Marie
lol Potzblitz, ham wir das schonmal?
Alzheimer lässt grüßen.
Was meint er denn dann? Klär mich halt nochmal auf. Die Meldung: wollen sie wirklich blabla wird doch mit warnings false auch unterdrückt. Versteh Dich nicht und weiss nimmer wo wann wir darüber diskutiert haben, sorry.
und lieber Gruß
Marie
Alzheimer lässt grüßen.
Was meint er denn dann? Klär mich halt nochmal auf. Die Meldung: wollen sie wirklich blabla wird doch mit warnings false auch unterdrückt. Versteh Dich nicht und weiss nimmer wo wann wir darüber diskutiert haben, sorry.
und lieber Gruß
Marie
Antwort 5 von PotzBlitz
Hallo Marie,
wir hatten schon im September vergangenen Jahres eine ausführliche Diskussion darüber, ob man zum Ausführen von Abfragen aus dem Code heraus explizit die Warnmeldung unterdrücken muss oder nicht. Diese Warnmeldung "Wollen Sie wirklich..." tritt dann auf, wenn man eine Abfrage über ein Makro ausführt. Ganz genau die gleiche Aktion führt auch DoCmd.RunSQL aus - es ist quasi das Makro aus VB heraus angestossen. Dagegen löst die Execute-Methode des Database-Objekts keine Warnmeldung aus, sämtliche Abfragen werden stumm und ohne Rückfragen ausgeführt. Demnach ist bei der Verwendung von CurrentDb.Execute auch das Unterdrücken von Warnmeldungen nicht nötig.
Gruss
PotzBlitz
wir hatten schon im September vergangenen Jahres eine ausführliche Diskussion darüber, ob man zum Ausführen von Abfragen aus dem Code heraus explizit die Warnmeldung unterdrücken muss oder nicht. Diese Warnmeldung "Wollen Sie wirklich..." tritt dann auf, wenn man eine Abfrage über ein Makro ausführt. Ganz genau die gleiche Aktion führt auch DoCmd.RunSQL aus - es ist quasi das Makro aus VB heraus angestossen. Dagegen löst die Execute-Methode des Database-Objekts keine Warnmeldung aus, sämtliche Abfragen werden stumm und ohne Rückfragen ausgeführt. Demnach ist bei der Verwendung von CurrentDb.Execute auch das Unterdrücken von Warnmeldungen nicht nötig.
Gruss
PotzBlitz
Antwort 6 von Marie
Hi Potzblitz,
das is ja schon sooooooooooo lange her, das wusst ich jetzt wirklich nicht mehr. :-)
Also Potzblitz, ich verstehe Deine Aussage ganz und gar nicht, ich ruf alle Abfragen mit execute auf und muss immer die Warnmeldungen unterdrücken, was hast Du denn für eine Accessversion?? Vielleicht wurde das geändert oder Du hast eh die Warnmeldungen abgeschaltet, ich weiss nicht wie Du zu der Behauptung kommst. Bei mir kommen definitiv Meldungen mit Execute, sorry, aber vielleicht ist das ja in anderen Accessversionen geändert.
Vielleicht kann sich ja mal ein anderer dazu äußern? Wär nett.
Gruß Marie
das is ja schon sooooooooooo lange her, das wusst ich jetzt wirklich nicht mehr. :-)
Also Potzblitz, ich verstehe Deine Aussage ganz und gar nicht, ich ruf alle Abfragen mit execute auf und muss immer die Warnmeldungen unterdrücken, was hast Du denn für eine Accessversion?? Vielleicht wurde das geändert oder Du hast eh die Warnmeldungen abgeschaltet, ich weiss nicht wie Du zu der Behauptung kommst. Bei mir kommen definitiv Meldungen mit Execute, sorry, aber vielleicht ist das ja in anderen Accessversionen geändert.
Vielleicht kann sich ja mal ein anderer dazu äußern? Wär nett.
Gruß Marie
Antwort 7 von PotzBlitz
Hallo Marie,
diese Warnmeldungen sind niemals, niemals, niemals bei mir aufgetreten in diesen Access-Versionen:
Access 2.0, Access 95, Access 97, Access 2000, Access 2002.
Ich habe niemals bei irgendeiner Access-Version diese Systemmeldungen abgeschaltet, sie waren schon seit je her aktiv. :-)
Jetzt denke mal bitte gut nach. Hast du jemals irgendwelche "Optimierungen" an Access durchgeführt, von denen du die Auswirkungen nicht richtig abschätzen konntest? Bitte verstehe das nicht falsch, aber ich bin überzeugt davon, dass deine Access-Installation in dieser Hinsicht ein Problem hat.
Ich habe mal folgenden Beispielcode verfasst, der eine Tabelle anlegt, sie mit Daten füllt, den Inhalt anzeigt und die Tabelle hinterher wieder löscht. Hier wird dreimal die Execute-Methode verwendet, in meinem Fall (Access 2000) ohne Systemmeldungen. Wer will, kann ihn gerne mal kopieren und ausführen und seine Erfahrungen dazu hier schildern.
′----------------------------------
Public Sub ExecuteDemo()
Dim dbCurrent As Database
Dim strSQL As String
Set dbCurrent = CurrentDb
strSQL = "CREATE TABLE tblExecuteDemo (Feld1 TEXT(50));"
dbCurrent.Execute strSQL
strSQL = "INSERT INTO tblExecuteDemo (Feld1) VALUES (′Hello World′);"
dbCurrent.Execute strSQL
MsgBox "Inhalt von tblExecuteDemo: " & vbCrLf & DLookup("Feld1", "tblExecuteDemo")
strSQL = "DROP TABLE tblExecuteDemo;"
dbCurrent.Execute strSQL
End Sub
′----------------------------------
Gruss
PotzBlitz
diese Warnmeldungen sind niemals, niemals, niemals bei mir aufgetreten in diesen Access-Versionen:
Access 2.0, Access 95, Access 97, Access 2000, Access 2002.
Ich habe niemals bei irgendeiner Access-Version diese Systemmeldungen abgeschaltet, sie waren schon seit je her aktiv. :-)
Jetzt denke mal bitte gut nach. Hast du jemals irgendwelche "Optimierungen" an Access durchgeführt, von denen du die Auswirkungen nicht richtig abschätzen konntest? Bitte verstehe das nicht falsch, aber ich bin überzeugt davon, dass deine Access-Installation in dieser Hinsicht ein Problem hat.
Ich habe mal folgenden Beispielcode verfasst, der eine Tabelle anlegt, sie mit Daten füllt, den Inhalt anzeigt und die Tabelle hinterher wieder löscht. Hier wird dreimal die Execute-Methode verwendet, in meinem Fall (Access 2000) ohne Systemmeldungen. Wer will, kann ihn gerne mal kopieren und ausführen und seine Erfahrungen dazu hier schildern.
′----------------------------------
Public Sub ExecuteDemo()
Dim dbCurrent As Database
Dim strSQL As String
Set dbCurrent = CurrentDb
strSQL = "CREATE TABLE tblExecuteDemo (Feld1 TEXT(50));"
dbCurrent.Execute strSQL
strSQL = "INSERT INTO tblExecuteDemo (Feld1) VALUES (′Hello World′);"
dbCurrent.Execute strSQL
MsgBox "Inhalt von tblExecuteDemo: " & vbCrLf & DLookup("Feld1", "tblExecuteDemo")
strSQL = "DROP TABLE tblExecuteDemo;"
dbCurrent.Execute strSQL
End Sub
′----------------------------------
Gruss
PotzBlitz
Antwort 8 von Marie
Geduld, Geduld, PotzBlitz, Mail ist unterwegs :-)))
Posting wurde vom SN nicht angenommen, weiss nicht was ich für Zeichen da drin hab. Aber lies mal den artikel vom September, ich denke dass das die Lösung ist.
Du schaltest doch Deine Warnmeldungen mit Response = acDataErrContinue aus, weisste das schon nicht mehr weil Du es überall drin hast????
Aber kommentier doch Du mal Response = acDataErrContinue aus,ob Du dann nicht Deine Warnmeldungen bekommst :-))
Wenn nicht probier ich Deinen Code oben aus, aber lass mir bitte Zeit bis morgen, hab heut noch zu tun.
Gruß Marie
Posting wurde vom SN nicht angenommen, weiss nicht was ich für Zeichen da drin hab. Aber lies mal den artikel vom September, ich denke dass das die Lösung ist.
Du schaltest doch Deine Warnmeldungen mit Response = acDataErrContinue aus, weisste das schon nicht mehr weil Du es überall drin hast????
Aber kommentier doch Du mal Response = acDataErrContinue aus,ob Du dann nicht Deine Warnmeldungen bekommst :-))
Wenn nicht probier ich Deinen Code oben aus, aber lass mir bitte Zeit bis morgen, hab heut noch zu tun.
Gruß Marie

