/ / Access 2013 Zwiększ pole identyfikatora tekstu w formularzu - vba, ms-access, runtime-error, ms-access-2013, autonumerowanie

Dostęp 2013 Przywołaj pole tekstowe w formularzu - vba, ms-access, runtime-error, ms-access-2013, autonumer

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

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

Każda pomoc byłaby doceniana, mam doświadczenie z VB, ale znam inne języki programowania.

Odpowiedzi:

2 dla odpowiedzi № 1

Jeś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")