Fanta Fanta Genije
Član broj: 119794 Poruke: 118 *.adsl.net.t-com.hr.
|
Ne znam u čemu je nastao problem, ali mogu ti predložiti riješenje.
Nedavno sam se susreo sa sličnim problemom, ali ja sam morao spojiti podatke iz dvije tablice u jednoj su mi bili integer, a u drugoj tipa double, a ja sam trebao omogučiti daljni upis podataka po ID-u. Riješenje sam našao u Zidarevoj staroj funkciji:
Poziv funkcije bi otprilike glasio:
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Za novi rekord, automatskis se izracunava broj protokola
If Me.NewRecord Then
Me!PoljekojetiIduformi = fNoviBroj(strTableName:="Imetabele", strFieldName:="Imepoljautabeli")
End If
End Sub
A sama funkcija ti glasi:
Function fNoviBroj(strTableName As String, strFieldName As String) As Variant
'Izracunava novi broj, da bude PK
'u tabelama gde je PK numericki podatak (ne Autonumber)
'Treba pozivati sa BeforeUpdate za formu
'da se izbegne stvaranje duplikata u multi user rezimu
On Error GoTo fNoviBroj_ERROR:
'Koristicemo DMax funkciju, koja moze da vrati i NULL (prazna tabela)
'pa nam treba VARIANt tip (NULL ne moze u numeric data type)
Dim varNoviBroj As Variant
varNoviBroj = 1 + Nz(DMax(strFieldName, strTableName), 0)
'Napomena: ne proveravamo nigde da li je data tip od strFieldName dobar.
'Ako posaljete polje koje je text tipa, dobicete 0 natrag
fNoviBroj = varNoviBroj
fNoviBroj_EXIT:
Exit Function
fNoviBroj_ERROR:
Select Case Err.Number
Case 2001
MsgBox "Pogresan parameter (strFieldName) prosledjeno funkciji", title:="fNoviBroj, Error " & Err.Number
Case 3078
MsgBox "Pogresan parameter (strTableName) prosledjeno funkciji", title:="fNoviBroj, Error " & Err.Number
Case Else
MsgBox prompt:=Err.Description, title:="fNoviBroj Error " & Err.Number
End Select
Resume fNoviBroj_EXIT:
End Function
Ono što sam bio napravio je da sam nakon toga polja autonumber u tablici promijenio u Number, a zadnji broj koji sam unio u polje u tablici je bio cijeli broj pa mi je dalje nastavilo zbrajati sa varNoviBroj = 1 + Nz(DMax(strFieldName, strTableName), 0), tj. imitiralo je autonumber od polja gdje sam stao.
U tvom slučaju predlažem da malo prilagodiš si funkciju po pravilu koji ti odrediš umjesto 1 koja je u mom slučaju.
Nadam se da sam ti pomogao
|