Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Laufzeitfehler unterdrücken
zurück: Eindeutige Zuordnung mehrzeiliger Unterformularen zu 1 DS weiter: Bilder per Pfad und Dateiname in ein Formular einbinden Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
marek_mintal
Im Profil kannst Du frei den Rang ändern


Verfasst am:
27. Jul 2011, 10:59
Rufname:

Laufzeitfehler unterdrücken - Laufzeitfehler unterdrücken

Nach oben
       Version: Office 2010

Hallo, kleines Problem.
Wie man einen Laufzeitfehler mit 'ner If-Bedingung und ner MsgBox umgeht weiß ich, aber wie kann ich es erreichen, einen bestimmten Fehler, der wirklich unrelevant ist, einfach nicht anzeigen zu lassen bzw. zu ignoreren?
Der Befehl "DoCmd.Setwarnings False" bewirkt absolut gar nichts, der Fehler kommt trotzdem.
In Google finde ich immer nur die Möglichkeit mit der MsgBox.

Mein Fehler: 2046 - Der Befehl oder die Aktion "GeheZuNeuemDatensatz" ist momentan nicht verfügbar.

Danke Wink
KlausMz
Moderator Access


Verfasst am:
27. Jul 2011, 11:16
Rufname:
Wohnort: Irgendwo in der Pfalz


AW: Laufzeitfehler unterdrücken - AW: Laufzeitfehler unterdrücken

Nach oben
       Version: Office 2010

Hallo,
zeige bitt die vollständige Prozedur, so wie diese jetzt ist.

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
marek_mintal
Im Profil kannst Du frei den Rang ändern


Verfasst am:
27. Jul 2011, 11:20
Rufname:

AW: Laufzeitfehler unterdrücken - AW: Laufzeitfehler unterdrücken

Nach oben
       Version: Office 2010

Code:
Private Sub bef_LoeschBest_Click()
    DoCmd.SetWarnings False
    If IsNull(Me!ID_Aenderung) Then
        MsgBox "Es ist existiert kein Datensatz zum Löschen!"
      Else
        If MsgBox("Möchten Sie den Eintrag wirklich löschen?", vbYesNo _
                , "Wirklich löschen?") = vbYes Then
            DoCmd.RunCommand acCmdDeleteRecord
            With Forms!frmGeschenkebestand!ufrmGeschenkebestand
                !list_Bestand.Requery
                !List_AktuellerBestand.Requery
            End With
            DoCmd.RunCommand acCmdRecordsGoToNew
        End If
    End If
End Sub
Das soll ein Löschen-Button sein. Das DoCmd.RunCommand acCmdRecordsGoToNew wird beim Debuggen gelb markiert. Der Fehler kommt aber nicht immer. Wahrscheinlich nur wenn man das Feld mit der aktuell größten ID löscht bzw. es der einzige war, schätze ich.

Der Befehl dient nur dazu damit ich nach dem Löschen eines Datensatzes zu einem neuen springe und so leere Felder erhalte, denn so vermeide ich Fehleingaben durch die Benutzer.
Marsupilami72
Gast


Verfasst am:
27. Jul 2011, 11:27
Rufname:

AW: Laufzeitfehler unterdrücken - AW: Laufzeitfehler unterdrücken

Nach oben
       Version: Office 2010

Dafür gibt´s die On Error Goto Anweisung - siehe Online Hilfe.

Ich würde aber eher dafür sorgen, dass solche Fehler gar nicht erst auftauchen -
Code:
' versuch mal anstelle von
    DoCmd.RunCommand acCmdRecordsGoToNew
' das hier:
    DoCmd.GoToRecord , , acNewRec
marek_mintal
Im Profil kannst Du frei den Rang ändern


Verfasst am:
27. Jul 2011, 11:32
Rufname:


AW: Laufzeitfehler unterdrücken - AW: Laufzeitfehler unterdrücken

Nach oben
       Version: Office 2010

Mit dem neue Code funktionierts, danke dir! Wink
Aber... wo ist denn eigentlich der Unterschied zwischen den beiden?
Marsupilami72
Gast


Verfasst am:
27. Jul 2011, 11:41
Rufname:

AW: Laufzeitfehler unterdrücken - AW: Laufzeitfehler unterdrücken

Nach oben
       Version: Office 2010

RunCommand führt einen Access Menübefehl aus - es ist das Gleiche, als ob Du im Ribbon oben auf "Gehe zu" und dann auf "Neu" klickst.
Wenn Du Dich aber schon in einem neuen Datensatz befindest, wird die Option "Neu" im Menü deaktiviert und ist somit nicht verfügbar -> Fehler.

GotoRecord hingegen ist ein VBA-Befehl, und der ist in dieser Hinsicht schlicht "nachsichtiger"...
KlausMz
Moderator Access


Verfasst am:
27. Jul 2011, 11:44
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: Laufzeitfehler unterdrücken - AW: Laufzeitfehler unterdrücken

Nach oben
       Version: Office 2010

Hallo,
Zitat:
Mit dem neue Code funktionierts, danke dir
Bitte prüfe das noch mal, meiner Meinung nach sind beide Befehle gleichwertig.

Füge besser eine vollständige Fehlerbehandlung ein:
Code:
Private Sub bef_LoeschBest_Click()
On Error GoTo bef_LoeschBest_Click_Error
    DoCmd.SetWarnings False
    If IsNull(Me!ID_Aenderung) Then
        MsgBox "Es ist existiert kein Datensatz zum Löschen!"
      Else
        If MsgBox("Möchten Sie den Eintrag wirklich löschen?", vbYesNo _
                , "Wirklich löschen?") = vbYes Then
            DoCmd.RunCommand acCmdDeleteRecord
            With Forms!frmGeschenkebestand!ufrmGeschenkebestand
                !list_Bestand.Requery
                !List_AktuellerBestand.Requery
            End With
            DoCmd.RunCommand acCmdRecordsGoToNew
        End If
    End If
    DoCmd.SetWarnings True
bef_LoeschBest_Click_Exit:
    Exit Sub
bef_LoeschBest_Click_Error:
    If Err.Number <> 2046 Then
        MsgBox "Error " & Err.Number & " (" & Err.Description _
             & ") in procedure bef_LoeschBest_Click of Modul Modul2"
    End If
    Resume bef_LoeschBest_Click_Exit
End Sub
Ach ja und die Meldungen unbedingt wieder einschalten mit
Code:
    DoCmd.SetWarnings True

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Marsupilami72
Gast


Verfasst am:
27. Jul 2011, 11:58
Rufname:

AW: Laufzeitfehler unterdrücken - AW: Laufzeitfehler unterdrücken

Nach oben
       Version: Office 2010

Zitat:
Bitte prüfe das noch mal, meiner Meinung nach sind beide Befehle gleichwertig.
Sie tun das Gleiche, verhalten sich aber unterschiedlich... Confused

DoCmd.GoToRecord verursacht keinen Fehler, wenn man schon in einem neuen Datensatz ist.
KlausMz
Moderator Access


Verfasst am:
27. Jul 2011, 12:02
Rufname:
Wohnort: Irgendwo in der Pfalz

Re: AW: Laufzeitfehler unterdrücken - Re: AW: Laufzeitfehler unterdrücken

Nach oben
       Version: Office 2010

Hallo,

Sorry, Du hast recht, den Unterschied hast Du erklärt.
Trotzdem würde ich eine Fehlerbehandlung einbauen.
Die übrigens in jede Prozedur/Funktion gehört.

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
marek_mintal
Im Profil kannst Du frei den Rang ändern


Verfasst am:
27. Jul 2011, 12:11
Rufname:

AW: Laufzeitfehler unterdrücken - AW: Laufzeitfehler unterdrücken

Nach oben
       Version: Office 2010

Hi, ja habs durchprobiert, es funktioniert. Smile
Fehlerbehandlungen hab ich schon in meinen Codes drin.
SetWarnings habe ich am Ende des Codes wieder auf True gestellt.

Aber danke! Wink
MissPh!
Office-VBA-Programmiererin


Verfasst am:
28. Jul 2011, 20:58
Rufname:
Wohnort: NRW


AW: Laufzeitfehler unterdrücken - AW: Laufzeitfehler unterdrücken

Nach oben
       Version: Office 2010

Hallo miteinander,

gaanz wichtig:
Das Wiedereinschalten der Warnmeldungen sollte stets direkt vor dem Exit stehen, damit der Befehl auch im Fehlerfall ausgeführt wird.
Code:
    ...
bef_LoeschBest_Click_Exit:
    DoCmd.SetWarnings True
    Exit Sub
bef_LoeschBest_Click_Error:
    If Err.Number <> 2046 Then
        MsgBox "Error " & Err.Number & " (" & Err.Description _
             & ") in procedure bef_LoeschBest_Click of Modul Modul2"
    End If
    Resume bef_LoeschBest_Click_Exit
End Sub

Gleiches gilt für das Freigeben von Objektvariablen etc., d.h. alles was am Ende wiederhergestellt oder aufgeräumt werden muss.
Unter Umständen ist da ein vorangesetztes "On Error Resume Next" nötig, um nicht umständlich prüfen zu müssen, ob das was man Löschen will überhaupt existiert.

_________________
Gruß MissPh!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Laufzeitfehler 3211 9 diimex 299 19. Jun 2013, 22:27
derArb Laufzeitfehler 3211
Keine neuen Beiträge Access Tabellen & Abfragen: Laufzeitfehler 3071 7 Ramon2012 198 30. Jan 2012, 19:51
KlausMz Laufzeitfehler 3071
Keine neuen Beiträge Access Tabellen & Abfragen: #Fehler in Abfrage unterdrücken 3 moebiusband 507 15. Sep 2011, 14:09
moebiusband #Fehler in Abfrage unterdrücken
Keine neuen Beiträge Access Tabellen & Abfragen: ODBC-Zugriff auf SQL Server; Laufzeitfehler 3146 2 Jay-F 2126 28. Okt 2010, 15:07
Gast ODBC-Zugriff auf SQL Server; Laufzeitfehler 3146
Keine neuen Beiträge Access Tabellen & Abfragen: Laufzeitfehler 3109, Datensatz nicht zu löschen 0 Mitch26 407 31. Okt 2008, 18:45
Mitch26 Laufzeitfehler 3109, Datensatz nicht zu löschen
Keine neuen Beiträge Access Tabellen & Abfragen: Importfehler unterdrücken 2 sonixxl 2024 13. März 2008, 11:12
Zed2k Importfehler unterdrücken
Keine neuen Beiträge Access Tabellen & Abfragen: Laufzeitfehler 3001 1 luckypunch 591 23. Jan 2007, 12:19
JörgG Laufzeitfehler 3001
Keine neuen Beiträge Access Formulare: Laufzeitfehler 429 3 Rollo 21613 18. März 2006, 20:14
Gast Laufzeitfehler 429
Keine neuen Beiträge Access Formulare: Felder in einem Datenblatt unterdrücken 1 addi1975 489 27. Feb 2006, 17:27
stpimi Felder in einem Datenblatt unterdrücken
Keine neuen Beiträge Access Tabellen & Abfragen: Access Laufzeitfehler 3061 5 Gast Andreea 11706 19. Jan 2006, 19:54
Willi Wipp Access Laufzeitfehler 3061
Keine neuen Beiträge Access Tabellen & Abfragen: Laufzeitfehler 3061 / UPDATE SQL 6 Spoldo 4349 18. Jan 2006, 21:01
jens05 Laufzeitfehler 3061 / UPDATE SQL
Keine neuen Beiträge Access Formulare: Laufzeitfehler 2113 bei Textfeld 0 didi82 1511 03. Nov 2005, 12:35
didi82 Laufzeitfehler 2113 bei Textfeld
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel-Formeln