Stworzyłem bazę danych z pliku Excela, jedna z kolumn (PK) to numer licencji, jednak jest to format tekstowy XX / XX / XXXX
Gdy tworzony jest nowy rekord, chciałbymformularz do automatycznego wypełnienia pola numeru licencji podobnym ID zawierającym zarówno tekst, jak i liczby. To musi być zwiększane z każdym nowym rekordem (tylko część numeryczna)
To jest dokładnie to, co chcę osiągnąć, ale otrzymuję błąd pokazany poniżej; https://www.youtube.com/watch?v=kPz-n5w5YtE
Każda pomoc byłaby doceniana, mam doświadczenie z VB, ale znam inne języki programowania.
Odpowiedzi:
2 dla odpowiedzi № 1Jeśli masz zamiar wziąć liczbę (8) i przekonwertować ją na „0008”, tak jak w komentarzu powyżej błędu, spróbuj w ten sposób:
strNextNumber = Format(lngNextNumber, "0000")
lub zobacz cały kod:
Public Sub TestMe()
Dim strNextNumber As String
Dim lngNextNumber As Long
lngNextNumber = 8
strNextNumber = Format(lngNextNumber, "0000")
Debug.Print strNextNumber
End Sub
1 dla odpowiedzi nr 2
Gdyby lngNextNumber
jest większy niż 9999, pierwszy argument argumentu String
-funkcja będzie -1
lub mniejszy, a tym samym nieważny.
Możesz więc sprawdzić wartość lngNextNumber
pierwszy.
If lngNextNumber < 10000 Then
strNextNumber = String(4 - Len(CStr(lngNextNumber)), "0") & CStr(lngNextNumber)
Else
strNextNumber = CStr(lngNextNumber)
End If
Albo jeszcze prościej, użyj Format
-funkcja, jak już wspomniano w odpowiedzi Vityaty.
strNextNumber = Format(lngNextNumber, "0000")
1 dla odpowiedzi nr 3
Potrzebna jest tylko jedna linia:
" Old license like "WT/7634/2002".
" New license like "ABC2003"
Me![License Number].Value = Format(Val(Right(DMax("[License Number]", [Licenses]), 4)) + 1, "ABC0000")