Button Speichern löst Fehlermeldung aus

Katzenkind

Mitglied
Ich habe schon nach sowas gesucht, doch nichts gefunden, es wäre nett wenn mir jemand helfen könnte.
Ich habe eine Anwendung die Datensätze in einer Access Datenbank speichert.
Doch wenn ich öfter auf den Button "Speichern" klicke, ich glaub beim zweiten oder dritten Mal wird eine Fehlermeldung ausgelöst.

MFG Katzenkind

~ edit ~
Falls ihr noch Infos braucht um mir sagen zu können was los ist bitte sagen...

Code:
Private Sub speichernAdressen()
On Error GoTo fehler

    strSQL = "SELECT * FROM adressen WHERE Nam_Id = '" + lblId.Caption + "'"
    rsAdressen.Open strSQL, con, adOpenDynamic, adLockPessimistic
    
    'Wenn keine Adressen ID vorhanden ist, dann wird ein neuer Adress-Datensatz angelegt
    If Not Len(lblidA.Caption) = 38 Then
        rsAdressen.AddNew
        rsAdressen!Nam_ID = lblId.Caption
    End If

    rsAdressen!Strasse = txtStrasse.Text
    rsAdressen!Plz = txtPlz.Text
    rsAdressen!Ort = txtOrt.Text

    rsAdressen.Update
    
    lblId.Caption = rsAdressen!ID
        
    rsAdressen.Close
    
    txtStrasse.SetFocus
    
    Exit Sub
    
fehler:
MsgBox "Es ist ein Fehler aufgetreten:" + vbCr + vbLf + "Nummer: " & Err.Number & " Beschreibung: " & Err.Description, vbExclamation + vbOKOnly

End Sub
 
Zuletzt bearbeitet:
Die Fehlermeldung wäre mal ganz interessant also fehlernummer und noch besser die description ;D

Da du die ja in der msgbox siehst dürfte es ja kein problem sein diese auch der restlichen welt mitzuteilen ;-)

Gruss bb
 
Oh, ja natürlich, sorry das ichs vergessen hatte...

Nummer: 3021
Beschreibung: Entweder BOF oder EOF ist True, oder der aktuelle Datensatz wurde gelöscht. Der angeforderte Vorgang benötigt einen aktuellen Datensatz.


Allerdings wurde der Datensatz werde gelöscht noch sonsteiges, er ist immer noch vorhanden....
 
Hi Katzenkind,

mir fallen zwei Ungereimtheiten auf:

1) Du baust Deinen SQL-String mit der Caption Eigenschaft eines Controls lblID auf. Die wird auch wieder gesetzt, nachdem der Update durchgeführt worden ist. Deine Prüfung, ob der SELECT erfolgreich war wird aber mit einem Control lblIDA ausgeführt, wo ich nicht erkennen kann, wann und wie das gesetzt wird.

2) Die schon oben angeführte Prüfung würde ich anders machen. Prüfe doch lieber über den Recordcount ab, wieviele Datensätze gefunden worden sind. Macht mehr Sinn als zu Prüfen, ob die Länge eines Wertes ungleich eines Wertes ist

Gruß
Das Orakel
 
Nunja, es soll ja so gehen, wenn ich eine Adresse verändern will, dann soll er speichern.
Das alles über die ID (Replikations-ID).
Wenn er keine ID findet also wenn das lblID ungleich 38 ist (Anzahl Zeichen der ID) dann soll eine neue Adresse angelegt werden.

Wie soll ich das über den Recordcount prüfen?

greez Katzenkind
 
Set db = DBEngine.Workspaces(0).Databases(0)
Set rs = db.OpenRecordset("Deine Tabelle", DB_OPEN_TABLE)

If rs.recordcount > 0 then

das ist es theoretisch schon, so schaut er ob schon etwas vorhanden ist

mfg
zioP
 
Zurück