[ Vladimir Djuric @ 07.08.2010. 21:26 ] @
Ludim vise od run-time error 13 - data type mismatch, a ne znam sta da radim...
Evo vam dole kod, koji radi kako treba sa brojevima, ali sa textom mi izbacuje problem:

Code:

Private Sub Broj_protokola_AfterUpdate()
If DLookup("[Broj_protokola]", "[TABljekuvjerenje]", "Broj_protokola ='" & Forms![Fljekuvjerenje]![Broj_protokola] & "'") Then
MsgBox "Ovaj broj vec postoji u protokolu"
Me.Broj_protokola.SetFocus
End If
End Sub


Broj_protokola je inace tekstualno polje, ali - kada u njega ukucam neki broj, dlookup odradi kako treba, a kada u broj protokola ukucam tekst, izbaci mi gresku...
Nakon bezuspesnog guglanja, molim za pomoc...

[ Zoran.Eremija @ 07.08.2010. 21:46 ] @
A sa cime uslovljavate u IF Uslov Then ?

Uslov Vam nije potpun samo ste dali konstataciju tj dali vrednost ali cemu ona treba da bude jednaka?

Bolje bi bilo da upotrebite funkciju DCount()


Private Sub Broj_protokola_AfterUpdate()

Dim Broj AS Integer

Broj=DCount("[Broj_protokola]", "TABljekuvjerenje", "Broj_protokola ='" & Forms![Fljekuvjerenje]![Broj_protokola] & "'")

If Broj > 0 Then
MsgBox "Ovaj broj vec postoji u protokolu"
Me.Broj_protokola.SetFocus
End If
End Sub

[ Vladimir Djuric @ 08.08.2010. 01:43 ] @
Ovo sa Dcount-om zaista radi, i na tome sam Vam zahvalan, ali interesuje me zasto ona varijanta sa Dlookup-om ne radi?
Koliko sam ja shvatio Dlookup, njegov pozitivan rezultat u If-u uslovljava than (pozitivan ishod). Moguce je da gresim (ipak sam manje-vise pocetnik), ali kako onda objasniti da sa numbers radi, ali sa textom nece, a pri tome izbacuje samo type mismatch?

Unapred se zahvaljujem na svakom objasnjenju...

P.S. Hvala i na ovom resenju sa Dcountom, nasao sam na par mesta tu varijantu, ali me interesovalo zasto ono prvo resenje ne radi...
[ Zoran.Eremija @ 08.08.2010. 08:09 ] @
Definicija Funkcije je da za zadate parametre vraca i mora da vrati neku vrednost. Sve bi vam bilo jasnije kada bi ste iz uslovnog grananja koje se definise naredbom

If uslov Then
[naredbe]
End If

izvukli Vasu Dlookup funkciju.

Private Sub Broj_protokola_AfterUpdate()

Dim Tekst as String
Tekst = DLookup("[Broj_protokola]", "[TABljekuvjerenje]", "Broj_protokola ='" & Forms![Fljekuvjerenje]![Broj_protokola] & "'")
Msgbox Tekst

Tada biste videli da vi u varijabli Tekst nemate nikakav Uslov

If Tekst Then
MsgBox "Ovaj broj vec postoji u protokolu"
Me.Broj_protokola.SetFocus
End If
End Sub

Znaci to bi izgledalo kao gore a to bi recimo znacilo: Ako je Tekst tada ispisi poruku, sto znaci da je narusena osnovna truktura Naredbe IF u kojoj nije definisan uslov.
a kada biste napisali
Dim Uslov AS String

Uslov = Tekst & " = '" & Forms![Fljekuvjerenje]![Broj_protokola] & "'"

IF Uslov Then ...
Tada bi ispostovali osnovnu strukturu IF naredbe...
[ djux66 @ 08.08.2010. 08:10 ] @
Probaj da staviš ovako i trebalo bi da radi i za text
Code:

Private Sub Broj_protokola_AfterUpdate()
If IsNull(DLookup("[Broj_protokola]", "[TABljekuvjerenje]", "[Broj_protokola] ='" & Forms![Fljekuvjerenje]![Broj_protokola] & "'")) = False Then
MsgBox "Ovaj broj vec postoji u protokolu"
Me.Broj_protokola.SetFocus
End If
End Sub


Ako proveravaš da li je neki podatak već unet možda je bolje da koristiš BeforeUpdate event...
[ Vladimir Djuric @ 08.08.2010. 10:54 ] @
Slazem se i sa jednim i sa drugim, i shvatam da sam pogresio oko uslova. Zoranovo resenje sa Dcountom sam probao, i radi. Djux-ovo resenje nisam probao, ali cini mi se da bi radilo. Hvala Vam obojici na tome.
Mene sada interesuje (vise kopka) zasto ona moja nakaradna varijanta radi sa brojevima, a za text mi izbacuje type mismatch?