none
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

    Mittwoch, 21. September 2011 06:31

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/

    Mittwoch, 21. September 2011 12:36
  • Das funktioniert, kein Problem bei der .accdb, accde oder accdr. Aber der acCmdDeleteRecord - Fehler ist doch wohl ein Bug, oder?

    Gruß Rolf

    Mittwoch, 21. September 2011 13:42
  • 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/

    Mittwoch, 21. September 2011 16:27
  • 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

    Mittwoch, 21. September 2011 22:41
    Moderator
  • 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

    Donnerstag, 22. September 2011 10:53
  • 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/

    Donnerstag, 22. September 2011 12:04
  • Hi,
    hier ist der Link:

    http://www.file-upload.net/download-3750975/DB.zip.html

    ... kannte ich überhaupt nicht, diese Möglichkeit!!

    Gruß Rolf

    Donnerstag, 22. September 2011 12:14
  • 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

     

    Freitag, 23. September 2011 00:21
    Moderator
  • 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.
    Montag, 3. Oktober 2011 08:47
    Moderator
  • 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.
    Montag, 3. Oktober 2011 10:54
    Moderator
  • 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.
    Donnerstag, 6. Oktober 2011 09:49
    Moderator