Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Access steigt in der Fehlerbehandlung aus...
zurück: Dem Wahnsinn nahe bei TreeView weiter: Alphnumerische Werte umwandeln 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
Wolfgang 1958
Trainer


Verfasst am:
12. Dez 2008, 22:01
Rufname: Wolfgang
Wohnort: Geretsried

Access steigt in der Fehlerbehandlung aus... - Access steigt in der Fehlerbehandlung aus...

Nach oben
       Version: Office 2003

Hallo Fachleute,

ich habe in eine funktionierende Funktion in eine Fehlerbehandlung zusätzlichen Code eingebaut, der zu einem bestimmten Datensatz springen soll.
Nun steigt Access hier komplett aus und stürzt ab.
Darf man in einer Fehlerbehandlung den FindFirst nicht ausführen?
Ich würde mich über Tipps von Euch freuen.
Hier mein Code:
Code:
Private Sub Kombinationsfeld193_AfterUpdate()
On Error GoTo Err_Befehl193_Click
    Dim rs As Object
    Dim SaveRechnungsnummer As String
   
    SaveRechnungsnummer = Me!Kombinationsfeld193
    Me!Kombinationsfeld195 = ""
    If Me!InterneRechnungsnummer.Locked = True Then
        If MsgBox("Rechnungsnummer wirklich ändern?", vbYesNo) = vbYes Then
            Me!InterneRechnungsnummer.Locked = False
            Me!InterneRechnungsnummer = Me!Kombinationsfeld193
            If Trim(Nz(Me!Bemerkung, "")) = "" Then
                Me!Bemerkung = Me!Kombinationsfeld193.Column(1) & ", " & _
                               Me!Kombinationsfeld193.Column(2) & " (" & _
                               Me!Kombinationsfeld193.Column(3) & ")"
            End If
            DoCmd.RunCommand acCmdSaveRecord
            Me!InterneRechnungsnummer.Locked = True
        End If
      Else
        Me!InterneRechnungsnummer = Me!Kombinationsfeld193
        If Trim(Nz(Me!Bemerkung, "")) = "" Then
            Me!Bemerkung = Me!Kombinationsfeld193.Column(1) & ", " & _
                           Me!Kombinationsfeld193.Column(2) & " (" & _
                           Me!Kombinationsfeld193.Column(3) & ")"
        End If
        DoCmd.RunCommand acCmdSaveRecord
        Me!InterneRechnungsnummer.Locked = True
    End If
Exit_Befehl193_Click:
    Exit Sub
Err_Befehl193_Click:
    If Err.Number = 3022 Then
        Me!InterneRechnungsnummer = " "
        DoCmd.RunCommand acCmdSaveRecord
        MsgBox "Doppelte Rechnungsnummer ist nicht erlaubt - Datensatz " & _
               "wird gelöscht!"
        DoCmd.SetWarnings False
        DoCmd.RunCommand acCmdDeleteRecord
        DoCmd.SetWarnings True
        DoCmd.GoToRecord , "", acFirst
        Set rs = Me.Recordset.Clone
        ' *******************************************************************
        ' Hier steigt ACCESS komplett aus und stürzt ab - warum nur?
        ' Ist in der Fehlerbehandlung dieser
        ' Code nicht möglich - nicht erlaubt?
        ' ********************************************************************
        rs.FindFirst "[InterneRechnungsnummer] = " & _
                                               Str(Nz(SaveRechnungsnummer, 0))
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
        Me!Kombinationsfeld183.SetFocus
      Else
        MsgBox Err.Description
    End If
    Resume Exit_Befehl193_Click
End Sub
Bis dann und liebe Grüße

Wolfgang

_________________
Ich freue mich über ein Feedback.
JörgG
Access-Team


Verfasst am:
12. Dez 2008, 22:21
Rufname:
Wohnort: b. Dresden


AW: Access steigt in der Fehlerbehandlung aus... - AW: Access steigt in der Fehlerbehandlung aus...

Nach oben
       Version: Office 2003

Hallo,

in der Fehlerroutine darf natürlich keine neuer Fehler auftreten, den könnte man mit On Error Resume Next unterdrücken. Was besagt denn erstmal der Fehler 3022?
Steigt AC aus beim Versuch zu speichern? Ist das ein neuer oder ein existierender DS?

Setze mal einen Haltepunkt und durchlaufe den Code schrittweise mit [F8], dabei hälst Du die Maus über diverse Textfelder und Variablen und prüfst ob gültige Inhalte angezeigt werden.

_________________
MfG, Jörg Very Happy

Bitte das Feedback nicht vergessen.
Wolfgang 1958
Trainer


Verfasst am:
12. Dez 2008, 22:26
Rufname: Wolfgang
Wohnort: Geretsried

AW: Access steigt in der Fehlerbehandlung aus... - AW: Access steigt in der Fehlerbehandlung aus...

Nach oben
       Version: Office 2003

Hallo JörgG,

vielen Dank für Deine schnelle Reaktion.

Der besagte Fehler tritt auf, wenn der DB-User versucht eine InterneRechnungsnummer zu generieren, die schon vorhanden ist.

Eigendlich dürfte kein Fehler mehr auftreten, weil die Fehlerprozedur nur aufgerufen wird, wenn die Rechnungsnummer scnon vorhanden ist. Also müßte der Datensatz mit der entsprechenden Rechnungsnummer, zu der ich springen will, vorhanden sein.

Hast Du noch einen Tipp?

Nochmals danke und ich freue mich von Dir zu hören.

Ciao

Wolfgang

_________________
Ich freue mich über ein Feedback.
JörgG
Access-Team


Verfasst am:
12. Dez 2008, 22:30
Rufname:
Wohnort: b. Dresden

AW: Access steigt in der Fehlerbehandlung aus... - AW: Access steigt in der Fehlerbehandlung aus...

Nach oben
       Version: Office 2003

Hallo,

prüfe doch mit DLookup() im BeforeUpdate der Rechungsnummer ob sie schon da ist und lass AC somit gar nicht erst bis zu einem möglichen Fehler vordringen.

_________________
MfG, Jörg Very Happy

Bitte das Feedback nicht vergessen.
Wolfgang 1958
Trainer


Verfasst am:
12. Dez 2008, 22:40
Rufname: Wolfgang
Wohnort: Geretsried


AW: Access steigt in der Fehlerbehandlung aus... - AW: Access steigt in der Fehlerbehandlung aus...

Nach oben
       Version: Office 2003

Hallo Jörg,

ich habe mal in die Hilfe von DLookup() geschaut. Mit der Beschreibung kann ich nicht viel anfangen, da reichen meine VBA-Kenntnisse nicht aus.

Hast Du ein kleines Beispiel, wie ich mit DLookup() überprüfen kann, ob es die Artikelnummer bereits gibt?

Nochmals danke für Deinen Tipp und

ciao

Wolfgang

_________________
Ich freue mich über ein Feedback.
MiLie
kein Office- VBA- Programmierer


Verfasst am:
13. Dez 2008, 00:57
Rufname: Micha
Wohnort: Chemnitz

AW: Access steigt in der Fehlerbehandlung aus... - AW: Access steigt in der Fehlerbehandlung aus...

Nach oben
       Version: Office 2003

hallo,

ohne jetzt genauer geschaut zu haben, versuchst du einen Datensatz zu löschen, den es nicht gibt.
3022 tritt auf, wenn du einen datensatz anlegen willst, der ein indiziertes Feld mit doppelten werten enthalten würde. der ds wird aber nicht angelegt, daher kannst du ihn auch nicht löschen.
entweder vorher abfragen mit z.B DCount() oder Dlookup() wie jörg bereits schrieb oder einfach die letzte eingabe rückgängig machen, dazu hilft Me.Undo wenn die ds im Formular angelegt werden
Code:
   '...
Err_Befehl193_Click:
    If Err.Number = 3022 Then
        MsgBox "Doppelte Rechnungsnummer ist nicht erlaubt - Datensatz " & _
               "wird gelöscht!"
        Me.Undo
        Me!Kombinationsfeld183.SetFocus
      Else
        MsgBox Err.Description
    End If
    Resume Exit_Befehl193_Click
End Sub

_________________
Viele Grüße

Micha

Schreibfehler die Ihr findet, könnt Ihr behalten
Wolfgang 1958
Trainer


Verfasst am:
13. Dez 2008, 18:19
Rufname: Wolfgang
Wohnort: Geretsried

AW: Access steigt in der Fehlerbehandlung aus... - AW: Access steigt in der Fehlerbehandlung aus...

Nach oben
       Version: Office 2003

Hi MiLie,

vielen Dank für Deinen Tipp. Das funktioniert gut. Der DS wird nicht angelegt.

Mein jetziger Code:
Code:
Private Sub Kombinationsfeld193_AfterUpdate()
On Error GoTo Err_Befehl193_Click
    Me!Kombinationsfeld195 = ""
    If Me!InterneRechnungsnummer.Locked = True Then
        If MsgBox("Rechnungsnummer wirklich ändern?", vbYesNo) = vbYes Then
            Me!InterneRechnungsnummer.Locked = False
            Me!InterneRechnungsnummer = Me!Kombinationsfeld193
            If Trim(Nz(Me!Bemerkung, "")) = "" Then
                Me!Bemerkung = Me!Kombinationsfeld193.Column(1) & ", " & _
                               Me!Kombinationsfeld193.Column(2) & " (" & _
                               Me!Kombinationsfeld193.Column(3) & ")"
            End If
            DoCmd.RunCommand acCmdSaveRecord
            Me.InterneRechnungsnummer.Locked = True
       End If
      Else
        Me!InterneRechnungsnummer = Me!Kombinationsfeld193
        If Trim(Nz(Me!Bemerkung, "")) = "" Then
            Me!Bemerkung = Me!Kombinationsfeld193.Column(1) & ", " & _
                           Me!Kombinationsfeld193.Column(2) & " (" & _
                           Me!Kombinationsfeld193.Column(3) & ")"
        End If
        DoCmd.RunCommand acCmdSaveRecord
        Me!InterneRechnungsnummer.Locked = True
    End If
Exit_Befehl193_Click:
    Exit Sub
Err_Befehl193_Click:
    If Err.Number = 3022 Then
        MsgBox "Doppelte Rechnungsnummer ist nicht erlaubt - Datensatz " & _
               "wird nicht neu angelegt!"
        Me.Undo
        Me!Kombinationsfeld183.SetFocus
      Else
        MsgBox Err.Description
    End If
    Resume Exit_Befehl193_Click
End Sub
Nochmals danke und noch ein schönes Wochenende.

Ciao

Wolfgang

_________________
Ich freue mich über ein Feedback.
Nouba
nicht ganz unwissend :)


Verfasst am:
13. Dez 2008, 19:13
Rufname:
Wohnort: Berlin

AW: Access steigt in der Fehlerbehandlung aus... - AW: Access steigt in der Fehlerbehandlung aus...

Nach oben
       Version: Office 2003

Hallo Wolfgang,

etwas lesbarer wird der Kode vielleicht so. Steuerelementnamen wie KombinationsfeldXYZ erhöhen das Verständnis vom Kode um ein vielfaches - aber das hatten wir ja früher schon einmal. Very Happy Die Eigenschaft <tt>Locked</tt> eines Steuerelements bewirkt übrigens nur, dass Du nichts mehr in das Steuerelement eintragen kannst - VBA kann das sehr wohl noch.

Code:
Private Sub Kombinationsfeld193_AfterUpdate()
  Dim ctl As ComboBox

  On Error GoTo Err_Befehl193_AfterUpdate

  Set cbo = Me!InterneRechnungsnummer
  With Me!Kombinationsfeld193
    If cbo.Locked And _
       MsgBox("Rechnungsnummer wirklich ändern?", vbYesNo) = vbNo Then
      .Undo 'Kombinationsfeld auf den ursprünglichen Wert setzen
      Exit Sub
    End If

    Me!Kombinationsfeld195 = Null '???
    cbo = .Value
    'ob man hier wirklich 'Trim'men muß?
    If Trim(Nz(Me!Bemerkung, "")) = "" Then
      Me!Bemerkung = .Column(1) & ", " & .Column(2) & " (" & .Column(3) & ")"
    End If
  End With
  DoCmd.RunCommand acCmdSaveRecord

Exit_Befehl193_Click:
  cbo.Locked = True
  Exit Sub

Err_Befehl193_AfterUpdate:
  If Err.Number = 3022 Then
    MsgBox "Doppelte Rechnungsnummer ist nicht erlaubt - " & _
           "Datensatz wird nicht neu angelegt!"
    Me.Undo
    Me!Kombinationsfeld183.SetFocus ' ??? 183 oder 193 ???
  Else
    MsgBox Err.Description
  End If
  Resume Exit_Befehl193_AfterUpdate
End Sub

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Wolfgang 1958
Trainer


Verfasst am:
13. Dez 2008, 19:32
Rufname: Wolfgang
Wohnort: Geretsried

AW: Access steigt in der Fehlerbehandlung aus... - AW: Access steigt in der Fehlerbehandlung aus...

Nach oben
       Version: Office 2003

Hallo Nouba,

danke für Deine Antwort.
Was erreichst Du mit folgender Deklaration
Code:
    Dim ctl As ComboBox
Die Kombinationsfelder, die ich sonst noch anspreche sind so ok.
Danke für den Hinweis, auf die Eigenschaft "locked". Das ist ja super, dass man sich im VBA darum nicht kümmern muß.
Nochmals danke für Deine Code-Optimierung. Ich werde Deinen Code ausprobieren.

Schönes Wochenende noch und liebe Grüße

Wolfgang

_________________
Ich freue mich über ein Feedback.
Nouba
nicht ganz unwissend :)


Verfasst am:
13. Dez 2008, 20:17
Rufname:
Wohnort: Berlin

AW: Access steigt in der Fehlerbehandlung aus... - AW: Access steigt in der Fehlerbehandlung aus...

Nach oben
       Version: Office 2003

Hallo Wolfgang,

ich weise der Variablen das Kombifeld Me!InterneRechnungsnummer zu. Der Kode wird dadurch schneller (hier wohl kaum festzustellen) und natürlich kürzer.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Wolfgang 1958
Trainer


Verfasst am:
13. Dez 2008, 20:21
Rufname: Wolfgang
Wohnort: Geretsried


AW: Access steigt in der Fehlerbehandlung aus... - AW: Access steigt in der Fehlerbehandlung aus...

Nach oben
       Version: Office 2003

Hallo Nouba,

danke für die Info.
Ich werde es ausprobieren.

Nochmals ein schönes Wochenende und

ciao

Wolfgang

_________________
Ich freue mich über ein Feedback.
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 Programmierung / VBA: Debugger trotz vorhandener Fehlerbehandlung 2 yoseki 84 24. Feb 2014, 17:59
yoseki Debugger trotz vorhandener Fehlerbehandlung
Keine neuen Beiträge Access Programmierung / VBA: Fehlerbehandlung in VBA 8 Blockbuster 149 20. Feb 2014, 10:57
Blockbuster Fehlerbehandlung in VBA
Keine neuen Beiträge Access Programmierung / VBA: Fehlerbehandlung Recordset Laufzeitfehler 91 6 Zauberbaecker 494 04. Jun 2012, 19:05
MissPh! Fehlerbehandlung Recordset Laufzeitfehler 91
Keine neuen Beiträge Access Programmierung / VBA: Fehlerbehandlung in Formulare 8 Herbert40 494 22. Feb 2012, 15:51
Gast Fehlerbehandlung in Formulare
Keine neuen Beiträge Access Formulare: Me.textfeld.Undo funktioniert bei Fehlerbehandlung nicht 6 derbesteschmitt 583 08. Jun 2011, 10:28
derbesteschmitt Me.textfeld.Undo funktioniert bei Fehlerbehandlung nicht
Keine neuen Beiträge Access Tabellen & Abfragen: Fehlerbehandlung im SQL Statement 14 WasErlaubeSTRUUNZ 755 29. Jul 2010, 14:29
AS55 Fehlerbehandlung im SQL Statement
Keine neuen Beiträge Access Programmierung / VBA: Fehlerbehandlung wenn Formular nicht offen 5 Mirko K 354 12. Jun 2010, 17:46
derArb Fehlerbehandlung wenn Formular nicht offen
Keine neuen Beiträge Access Programmierung / VBA: Fehlerbehandlung Datum 4 Mittelfarwick 657 02. Aug 2008, 14:36
Mittelfarwick Fehlerbehandlung Datum
Keine neuen Beiträge Access Hilfe: Fehlerbehandlung in VBA / Access 1 Gast 972 25. März 2008, 19:06
rita2008 Fehlerbehandlung in VBA / Access
Keine neuen Beiträge Access Formulare: fehlerbehandlung 3 Tom07 481 22. Nov 2007, 23:24
Nouba fehlerbehandlung
Keine neuen Beiträge Access Programmierung / VBA: TransferSpreadsheet - Fehlerbehandlung 4 byteline 1094 20. Sep 2007, 10:08
byteline TransferSpreadsheet - Fehlerbehandlung
Keine neuen Beiträge Access Programmierung / VBA: Fehlerbehandlung beim PDF-Export mit Lebans PDF Tool? 1 tobes 890 12. Jan 2007, 21:44
Guybrush junior Fehlerbehandlung beim PDF-Export mit Lebans PDF Tool?
 

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