Fragensteller
Access 2007: Laufzeitfehler 2046 bei DoCmd.RunCommand acCmdDeleteRecord

Allgemeine Diskussion
-
Hallo,
der Befehl DoCmd.RunCommand acCmdDeleteRecord erzeugt beim Löschen eines Datensatzes im Unterformular den Laufzeitfehler 2046 "Befehl steht derzeit nicht zur Verfügung".Wenn ich die Datenbank aber als .accde oder .accdr Datei ausführe, funktioniert der Befehl einwandfrei. Weiß jemand, warum?
Viele Grüße
Rolf
- Typ geändert Bogdan Petru Roiu Donnerstag, 6. Oktober 2011 09:48 Diskussion
Alle Antworten
-
Am 21.09.2011 schrieb Rolf Szymanski:
der Befehl DoCmd.RunCommand acCmdDeleteRecord erzeugt beim Löschen eines Datensatzes im Unterformular den Laufzeitfehler 2046 "Befehl steht derzeit nicht zur Verfügung".
Hast Du es schon mit Hilfe von db.execute (strSQLDelete) probiert?
strSQLDelete ist der SQL-String, der die Löschabfrage enthält.Servus
Winfried
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
GPO's: http://www.gruppenrichtlinien.de
Community Forums NNTP Bridge: http://communitybridge.codeplex.com/ -
Am 21.09.2011 schrieb Rolf Szymanski:
Das funktioniert, kein Problem bei der .accdb, accde oder accdr. Aber der acCmdDeleteRecord - Fehler ist doch wohl ein Bug, oder?
Schön dass es funktioniert. Ist das SP2 für A2007 installiert? Kannst
Du das Problem in einer anderen neuen frischen Datenbank mit neu
erzeugtem Formular ebenfalls erzeugen? Wenn ja, dann lade doch ein
kleines Beispielprojekt hoch, so kann man sich das evtl. mal ansehen.Servus
Winfried
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
GPO's: http://www.gruppenrichtlinien.de
Community Forums NNTP Bridge: http://communitybridge.codeplex.com/ -
Hallo,
Rolf Szymanski wrote:
Das funktioniert, kein Problem bei der .accdb, accde oder accdr. Aber der
acCmdDeleteRecord - Fehler ist doch wohl ein Bug, oder?Hast du beim .Execute die Konstante dbFailOnError angegeben, also
CurrentDb.Execute strSQL, dbFailOnError
Falls nicht, koennte es sein, dass es auch damit nicht funktioniert hat.
Ohne die Konstante dbFailOnError werden nur gravierende Fehler
(Syntaxfehler, falsche/fehlende Tabellen-/Feldnamen) ausgegeben.
Datenbezogene Fehler, z.B. Schluesselverletzungen, werden ignoriert.
Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com -
Hallo Winfried,
der Fehler lässt sich reproduzieren - ich habe eine Datenbank gezippt, weiß aber nicht, wie ich sie hochladen soll.Der Fehler tritt auf bei Access 2007, mit SP1 und auch mit SP2. Access 2010 funktioniert. Wandelt man die Datei zur .accde funktioniert der Befehl. In der Runtime-Umgebung funktioniert er auch.
Das ist übrigens nicht die einzigste Ungereimtheit zwischen den Versionen, ich habe schon einige entdeckt. Besonders schlimm finde ich, dass bei Access 2010 SP1 die Datenbank oft überhaupt nicht mehr zu öffnen ist. Erst mit decompile kommt man wieder an die DB oder durch Deinstallation SP1 ....
Gruß Rolf
-
Am 22.09.2011 schrieb Rolf Szymanski:
der Fehler lässt sich reproduzieren - ich habe eine Datenbank gezippt, weiß aber nicht, wie ich sie hochladen soll.
Hier kannst Du uploaden und einen Link hier im Forum posten.
http://www.file-upload.net/Der Fehler tritt auf bei Access 2007, mit SP1 und auch mit SP2. Access 2010 funktioniert. Wandelt man die Datei zur .accde funktioniert der Befehl. In der Runtime-Umgebung funktioniert er auch.
Ich persönlich greife lieber zur DB.Execute Methode, ergänze aber
unbedingt um die berechtigten Hinweise von Peter.Servus
Winfried
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
GPO's: http://www.gruppenrichtlinien.de
Community Forums NNTP Bridge: http://communitybridge.codeplex.com/ -
Hi,
hier ist der Link:http://www.file-upload.net/download-3750975/DB.zip.html
... kannte ich überhaupt nicht, diese Möglichkeit!!
Gruß Rolf
-
http://www.file-upload.net/download-3750975/DB.zip.html
Hi,
Bei mir funktioniert das Loeschen mit deinem Code einwandfrei, getestet unter engl. A2010, erst mit deiner mdb, dann konvertiert nach accdb.
Hast du schon mal auf einem anderen Rechner probiert?
Gruss - Peter
-
Hallo Rolf,Ich konnte aber auf Windows XP SP3 + Office 2007 SP2 das Problem – genau wie Du es beschrieben hast - nachstellen. Mit Office 2010 funktioniert bei mir auch.Ich konnte aber einen Workaround (mit Clone Recordset) einsetzen:
Private Sub cmdLöschen_Click() Dim rs As DAO.Recordset ' Systemwarnhinweise ausschalten DoCmd.SetWarnings False ' Löschbestätigung anfordern. Bei no passiert nichts, bei ja wird gelöscht If MsgBox("Möchten Sie den Namen '" & Me!sfmNamen!Vorname & "' wirklich löschen?", _ vbYesNo + vbExclamation, "Löschbestätigung") = vbYes Then Me!sfmNamen.SetFocus Set rs = Me!sfmNamen.Form.RecordsetClone rs.Bookmark = Me!sfmNamen.Form.Bookmark rs.Delete Set rs = Nothing End If End Sub
Weiter werde ich gucken, wo diesen Fehler herkommt…Grüße,Bogdan
Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt. Hier auch die Forenregeln. -
Hallo,
Mit Office 2003 funktioniert es auch!
Hmmm… Mir sieht nach einem Bug in Office 2007 aus, der mit 2010 gefixt wurde. Ich konnte allerdings keinen Bug für dieses Problem finden.
Das Unterformular sfmNamen verliert einfach den Fokus sobald man auf dem Knopf anklickt (beim MouseDown Event schon) und - obwohl - man den Fokus wieder programmatisch setzt – aktuellen Datensatz bleibt nicht gesetzt.
Uns bleiben wohl die Workarounds…
Grüße,
Bogdan
Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt. Hier auch die Forenregeln.- Bearbeitet Bogdan Petru Roiu Montag, 3. Oktober 2011 10:55
-
Dieser Thread wurde in Diskussion umgewandelt. Natürlich sind weitere Nachfragen / Beiträge möglich und selbstverständlich willkommen.
Bogdan
Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt. Hier auch die Forenregeln.