Temat: Autonumerowanie podczas przechodzenia do nowego rekordu
Rozwiązanie:
W swojej tabeli (np.: tWlasnaNumeracja)
Tworzysz normalne pole z autonumeracją (np.: Id)
i pole typu tekstowego gdzie bedzie twoja numeracja (np.: NrIdentyfikacyjny)
Pozostałe pola nie sa istotne
w formularzu podpinasz pod zdarzenie "Po wstawieniu" wywołanie funkcji
Call NadajMojKolejnyNumer(Me.Kombi1, Me.Kombi2)
gdzie pierwsza i druga zmienna to dowolny opis, adekwatnie po pierwszym i podrugyim ukośniku
No i wklejsza np. taką funkcję :]
Public Sub NadajMojKolejnyNumer(DodatkowyNr As Long, DodatkowyOpis As String)
Dim StartowyNrIdentyfikacyjny As String
Dim NowyNrIdentyfikacyjny As String
Dim OstatniNrIdentyfikacyjny As String
Dim OstatniAccessId As Long
Dim IloscZerWidacych As Integer
Dim NazwaTabeli As String
Dim PoleZAutoId As String
Dim PoleZNrIdentyfikatora As String
Dim SqlUpdate As String
NazwaTabeli = "twojaTabela"
PoleZAutoId = "Id"
PoleZNrIdentyfikatora = "NrIdentyfikacyjny"
IloscZerWidacych = 4
StartowyNrIdentyfikacyjny = String(IloscZerWidacych, "0") & "/" & DodatkowyNr & "/" & DodatkowyOpis
OstatniAccessId = Nz(DMax(PoleZAutoId, NazwaTabeli, PoleZNrIdentyfikatora & " like ""*/" & DodatkowyNr & "/*"" AND " & PoleZNrIdentyfikatora & " like ""*/" & DodatkowyOpis & """"), 0)
If OstatniAccessId = 0 Then
OstatniNrIdentyfikacyjny = StartowyNrIdentyfikacyjny
Else
OstatniNrIdentyfikacyjny = DLookup(PoleZNrIdentyfikatora, NazwaTabeli, PoleZAutoId & "=" & OstatniAccessId)
End If
NowyNrIdentyfikacyjny = Format(CLng(Left(OstatniNrIdentyfikacyjny, IloscZerWidacych)) + 1, String(IloscZerWidacych, "0")) & "/" & DodatkowyNr & "/" & DodatkowyOpis
SqlUpdate = "UPDATE " & NazwaTabeli & " SET " & PoleZNrIdentyfikatora & "='" & NowyNrIdentyfikacyjny & "' " & " WHERE " & PoleZAutoId & " = " & DMax(PoleZAutoId, NazwaTabeli)
DoCmd.RunSQL SqlUpdate
End Sub
i powinno działać :]
Paweł D. edytował(a) ten post dnia 25.08.11 o godzinie 12:28