Temat: Access Autonumerowanie

Witam, posiadam bazę w ,której muszę kolejne wpisy dodawać według określonego systemu i nie ukrywam ,że ręcznie było by ciężko. Dlatego zastanawiam się czy jest jakaś funkcja ,która mogła by sama to uzupełniać.
Chodzi aby każdy nowy wpis posiadał format składający się z aktualnej daty + numer np:
07112019/0001
07112019/0002

Pozdrawiam

Temat: Access Autonumerowanie

Takiej funkcji to Access nie posiada ale można ją stworzyć.
Pytanie jest czy numer pojawiający się za "/" to ma być numer narastający w dniu czy numer narastający w ogóle?

Tak czy inaczej pole z atrybutem "Autonumerowanie" można sobie darować tylko stworzyć pole ID gdzie typem będzie tekst. W momencie dodawania nowego rekordu dla wartości pola ID należy przypisać wartość wyliczoną z funkcji.

Kolejną kwestią jest ile znaków ma być po "/"? Dla podanego przykładu widzę tylko 4 znaki. Chodzi o to, że trzeba wyliczyć ile zer wiodących należy dodać. Przyjętą strukturę można zapisać na 2 sposoby:
07112019/0001
07112019/1

Dla pierwszego przypadku należy określić ile zer wiodących należy dodać do numeru (dla 1 będą to trzy zera wiodące ale już dla 11 będą to tylko dwa zera).
Pozdrawiam

Temat: Access Autonumerowanie

Jeśli chodzi o numerację to narastająco w danym dniu, odnośnie struktury to rzeczywiście lepszym rozwiązaniem będzie sposób nr 2. 07112019/1

Temat: Access Autonumerowanie

Function test() As String

Dim strWynik, strW As String
Dim i As Integer

'Sprawdz ostatnie, dzisiejsze ID w bazie danych

strWynik = Nz(DLast("[ID]", "Tab", "[ID] Like '" & CStr(Format(Now, "dd") & Format(Now, "mm") & Format(Now, "yyyy")) & "*'"), "")

If strWynik <> "" Then
' Jeżeli występuje jakiś rekord z dnia dzisiejszego
' to generuj nr narastająco

i = CInt(Right(strWynik, Len(strWynik) - InStr(1, strWynik, "/"))) + 1
strW = CStr(Format(Now, "dd") & Format(Now, "mm") & Format(Now, "yyyy") & "/" & i)
Else
' Nadaj pierwszy nr w dniu dzisiejszym

strW = CStr(Format(Now, "dd") & Format(Now, "mm") & Format(Now, "yyyy") & "/" & 1)
End If

' Przypisz zmienną do wyniku funkcji

test = strW
End Function


Oczywiście DLast podlega poprawie zgodnie ze strukturą własnej bazy danych.
Funkcja nadaje ID dla dnia dzisiejszego.
Pozdrawiam

Temat: Access Autonumerowanie

Muszę robić coś źle bo nie chce działać :/

Mam tabelę o nazwie Tabela zawiera 3 pola:
- Identyfikator (Auto numeracja)
- User (tekst)
- ID (tekst)

Robię z tego formularz o nazwie frmTabela, dodaję przycisk ,który wprowadza rekord do tego dodaję w macro Uruchom Kod z funkcją test()

W DLast zmieniam jedynie tabelę na prawidłową

W linku poniżej załączam bazę:
https://we.tl/t-pZSl2fiBUe

Temat: Access Autonumerowanie

Dziękuje, czyli jednak miałem błąd przy dodaniu funkcji do przycisku, za pomocą kreatora. Teraz pozostaje dopisać część odpowiedzialną za usuwanie treści pól po dodaniu rekordu i może w przyszłości jakieś ,krótkie przedrostki umożliwiające rozpoznanie typu dokumentu.

Następna dyskusja:

MS Access - sztuczki i chwyty




Wyślij zaproszenie do