title image


Smiley Gegen verschiedene Programmierstile habe ich eigentlich nichts, ...
... aber Dein geposteter Code ist nun wirklich (Sorry) - Murks und hat nichts mit Stil zu tun.



Und in Deinem jetzigen Posting offenbart sich auch der Grund für Dein Gekrampfe mit der Transaktion -> der Autowert soll mal wieder als schöne Nummer herhalten.

Tut er aber nicht, da kannst Du Dich auf den Kopf stellen und hampeln.

Schau dazu auch hier: 3.2 Autowert zurücksetzen



Stecke die Energie lieber in eine Routine, welche Dir die schöne Nummer erzeugt. Wobei ich persönlich aber gar nichts davon halte. Was ist z.B., wenn Du einen Datensatz mal löschst? Willst Du dann die Lücke auffüllen?

Also schade um die Arbeit.



In Deinem Beispiel fehlt übrigens noch mindestens ein End If vor der Fehlerbehandlung.

Und in den Beispielen zur Transaktion in der OH ist auch immer eine boolsche Variable dabei, um im Errorhandling das gezielte Zurücksetzen einer evtl. Transaktion zu ermöglichen. Diese fehlt bei Dir. Und schon deshalb wird Dein Code nie richtig sicher funktionieren.



So, um nachzuschauen ob ein Buch schon in der DB vorhanden ist, dazu sollte in etwa folgendes reichen:Private Sub Form_BeforeUpdate(Cancel As Integer)

If Len(Nz(Me!Buch, "")) = 0 Then

MsgBox "Kein Buch erfasst!", vbInformation, "unvollständige Eingabe"

Me!Buch.SetFocus

Cancel = True

End If

End Sub



Private Sub Buch_BeforeUpdate(Cancel As Integer)

Cancel = BuchVorhanden(Nz(Me!Buch, ""))

End Sub



Public Function BuchVorhanden(sBuch As String, Optional bMsg As Boolean = True) As Boolean

On Error GoTo Er

Dim rs As DAO.Recordset, s As String



If Len(sBuch) = 0 Then Exit Function

s = "select Count(Buch) from tblBuch where Buch= '" & sBuch & "'"

Set rs = CurrentDb.OpenRecordset(s, dbOpenSnapshot)

If rs(0) > 0 Then

If bMsg Then MsgBox "Buch ist bereits vorhanden!", vbInformation, "doppelter DS"

BuchVorhanden = True

End If



Ex:

On Error Resume Next

rs.Close

Set rs = Nothing

Exit Function

Er:

Dim strErr As String

Select Case Err.Number

Case Else

strErr = "Fehlermeldung/Information..." & vbCrLf

strErr = strErr & "FehlerNummer: " & Err.Number & vbCrLf

strErr = strErr & "Beschreibung: " & vbCrLf & Err.Description

MsgBox strErr, vbCritical + vbOKOnly, "Function: BuchVorhanden"

Resume Ex

End Select

Resume

End FunctionDie Feldnamen mußt Du noch an Deine Bedürfnisse anpassen.

Weiterhin solltest Du im BeforeUpdate Ereignis des Forms noch ein paar Prüfungen laufen lassen, um die Speicherung 'halbfertiger' Datensätze zu vermeiden.







Gruß Carsten












geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: