Bosna i Hercegovina



#1 30.03.2012-08:04
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,376


Subject: Zabrana duplog unosa
U tablici tblPartneri imam polje OIB (osobni indentifikacijski broj), to je text polje koje ima 11 karajtera.
Ovo polje može biti popunjeno, a i ne mora. Pošto u tablici zbog toga ima i nepopunjenih polja ne mogu staviti jedinstveni ključ.
Zanima me dali je moguće napraviti da je prazno polje dozvoljeno, a ako se unese podatak da on ne smije ponavljati.
Pozdrav
↑  ↓

#2 30.03.2012-09:14
Kiro Offline
Clan
Registrovan/a od: 04.02.2009-09:14
Komentari: 119


Subject: Re: Zabrana duplog unosa
mislim da ovako

Ikona prilozene slike:
Capture.jpg
Tip fajla: Informacije o fajlu: jpg jpg
Preuzimanja: 78
Veličina: 13.52 KB
Veličina slike: 428 x 105 Pixels

↑  ↓

#3 30.03.2012-09:31
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,818


Subject: Re: Zabrana duplog unosa
Koliko znam nemoze ali ima rjesenje.
mas proceduru u oristan kod koja provjerava dali je neki podatak vec unesen i nju mozes staviti na exit polja ili after update mozda bolje da ne provjerava prazne.
Nemogu se sjetiti imena ali pronaci cu ti je ako je ti ne nadjes.
Provjerava u nekoj tabeli u nekom polju dali postoji podata i vraca true ili false.
Pozdrav
↑  ↓

#4 30.03.2012-09:35
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,376


Subject: Re: Zabrana duplog unosa
Evo našao sam nešto u međuvremenu i to radi. Ali htio bi to još malo usavršiti pa ću kasnije postaviti pitanje jer sada sam nešto zauzet
DownloadIzvorni kod (vb.net):
  1. Private Sub OIB_BeforeUpdate(Cancel As Integer)
  2. Dim UNOS As String
  3. Dim stDocName As String
  4. Dim stLinkCriteria As String
  5. Dim stLink As String
  6. Dim rsc As DAO.Recordset
  7.  
  8. Set rsc = Me.RecordsetClone
  9.  
  10. UNOS = Me.OIB.Value
  11.  
  12. stLinkCriteria = "[OIB]=" & "'" & UNOS & "'"
  13.    
  14.     ' Provjera dali u  tblPartneri ve
  15.  postoji OIB koji se upisuje
  16.  
  17. If DCount("OIB", "tblPartneri", stLinkCriteria) > 0 Then
  18.  
  19. Me.Undo
  20.  
  21. MsgBox "Upozorenje OIB " & UNOS & " ve
  22. je ranije upisan." & vbCr & vbCr & "Biti ete preba
  23. eni na taj zapis.", vbInformation
  24.  
  25. rsc.FindFirst stLinkCriteria
  26.  
  27. stDocName = "frmKupci"
  28. stLink = "[OIB]=UNOS"
  29. DoCmd.OpenForm stDocName, , , UNOS
  30.  
  31.  
  32. 'Me.Bookmark = rsc.Bookmark
  33. End If
  34. Set rcs = Nothing
  35. End Sub

Pozdrav
↑  ↓

#5 30.03.2012-12:30
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,376


Subject: Re: Zabrana duplog unosa
Evo pokušavam nešto napraviti kako bi korisniku pomogao da ne unosi duple podatke o kupcima.
na formi 'Orders by Customer' u polju 'OIB' imam proceduru koja vraća poruku ako novo upisani OIB već postoji u tblPartneri.
Nakon toga fokus se vrati na formu za pretragu partnera. Sada bih želio da kursor ode na taj rekord.
E to je problem!

Prilozi:
Informacije o fajlu: rar  KupciProba.rar
Preuzimanja: 86
Veličina: 46.34 KB


Pozdrav
↑  ↓

#6 30.03.2012-13:23
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,376


Subject: Re: Zabrana duplog unosa
Eta da se ne mučite. Uspio sam naći riješenje i dobro radi, pa ako nekom treba primjer evo ga.

Prilozi:
Informacije o fajlu: rar  KupciProba_2.rar
Preuzimanja: 102
Veličina: 64.37 KB


Pozdrav
↑  ↓

#7 31.03.2012-17:39
roko Offline
Clan
Registrovan/a od: 02.02.2009-00:23
Komentari: 236


Subject: Re: Zabrana duplog unosa
Evo ti funkcija za provjeru valjanosti oiba po zakonu
http://www.regos.hr/...0OIB-a.pdf

Private Function KontrolnaZnamenka(ByVal s As String) As Long
Dim i As Long, n As Long
n = 10
For i = 1 To Len(s)
n = n + CLng(Mid(s, i, 1))
n = n Mod 10
If n = 0 Then n = 10
n = n * 2
n = n Mod 11
Next
n = 11 - n
If n = 10 Then n = 0
KontrolnaZnamenka = n
End Function
Public Function ProvjeriOIB(ByVal s As String) As Boolean
On Error GoTo e
If Len(s) <> 11 Then Exit Function
If Mid(s, 11, 1) <> KontrolnaZnamenka(Mid(s, 1, 10)) Then Exit Function
ProvjeriOIB = True
e:
End Function
Ulaz je
ProvjeriOIB
↑  ↓

#8 31.03.2012-23:57
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,818


Subject: Re: Zabrana duplog unosa
Probaj ovo moje:
DownloadIzvorni kod (Visual Basic):
  1. Private Sub C_NoviKupac_Click()
  2. On Error GoTo Err_C_NoviKupac_Click
  3.  
  4.     Dim stDocName As String
  5.     Dim stLinkCriteria As String
  6.  
  7.     stDocName = "Orders by Customer"
  8.     DoCmd.OpenForm stDocName
  9.     DoCmd.GoToRecord , , acNewRec
  10.  
  11. Exit_C_NoviKupac_Click:
  12.     Exit Sub
  13.  
  14. Err_C_NoviKupac_Click:
  15.     MsgBox err.Description
  16.     Resume Exit_C_NoviKupac_Click
  17.    
  18. End Sub

DownloadIzvorni kod (Visual Basic):
  1. Private Sub OIB_BeforeUpdate(Cancel As Integer)
  2. Dim Rs As DAO.Recordset
  3. Dim Podatak
  4.  
  5. Podatak = Trim(Me.OIB)
  6. If Format$(Podatak) <> "" Then
  7. Set Rs = Me.Form.RecordsetClone
  8. Rs.FindFirst "[OIB] ='" & Podatak & "'"
  9. If Rs.NoMatch Then GoTo Kraj
  10. Me.Undo
  11. Me.Bookmark = Rs.Bookmark
  12. End If
  13. Kraj:
  14. End Sub

Pozdrav
↑  ↓

#9 01.04.2012-08:47
roko Offline
Clan
Registrovan/a od: 02.02.2009-00:23
Komentari: 236


Subject: Re: Zabrana duplog unosa
nisi me ubro
tvoj kod je provjera dal postoji u bazi a moj kod je dali je struktura oib-a točna ako upišeš "00000000000"
program če ti dozvoliti unos ali takav oib ne postoji. Što ako operator unese krivi oib partnera (recimo zamjeni neke brojke )
za to su ti ove funkcije
:-)
↑  ↓

#10 01.04.2012-10:15
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,376


Ocjena: Ocjena:0 Subject: Re: Zabrana duplog unosa
I jedno i drugo je odlično pa sam spojio obadva koda i primjenio ih u svom primjeru.

Prilozi:
Informacije o fajlu: rar  KupciProba_3.rar
Preuzimanja: 115
Veličina: 71.96 KB


Pozdrav
Ovaj komentar je mijenjan 2 puta. zadnja izmjena 01.04.2012-10:20 od strane pmiroslav. ↑  ↓

#11 03.04.2012-06:51
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,376


Subject: Re: Zabrana duplog unosa
Molio bih jo jednu pomoč oko ovaga.
U gornjem primjeru ispod textBoxu OIB je procedura:
DownloadIzvorni kod (vb.net):
  1. Private Sub OIB_BeforeUpdate(Cancel As Integer)
  2. Dim Rs As DAO.Recordset
  3. Dim Podatak
  4. Dim Provjera As Boolean
  5.  
  6. Podatak = Trim(Me.OIB)
  7. Provjera = ProvjeriOIB(Podatak)
  8. If Provjera = False Then
  9. MsgBox " Neispravan OIB"
  10. Me.Undo
  11. Exit Sub
  12. End If
  13. If Provjera = True Then
  14. If Format$(Podatak) <> "" Then
  15. Set Rs = Me.Form.RecordsetClone
  16. Rs.FindFirst "[OIB] ='" & Podatak & "'"
  17. If Rs.NoMatch Then GoTo Kraj
  18. Me.Undo
  19. Me.Bookmark = Rs.Bookmark
  20. End If
  21. End If
  22. Kraj:
  23. End Sub
Problem je što se nako poruke MsgBox " Neispravan OIB" sa Me.Undo isprazne sva polja koja se prije toga upisao, a trebalo bi da se samo isprazni polje OIB.
Pokušao sam Me.OIB.Value = ""; Me.OIB=Null; Cancel = True

Ali ništa ne sluša.
Pozdrav
↑  ↓

#12 03.04.2012-09:26
roko Offline
Clan
Registrovan/a od: 02.02.2009-00:23
Komentari: 236


Subject: Re: Zabrana duplog unosa
_BeforeUpdate ima samo dvije opcije ili spremi ili ukloni možda da sa cjelom funkciom ideš na _AfterUpdate pa ako je neispravan ili postoji

Private Sub OIB_AfterUpdate()
Dim Rs As DAO.Recordset
Dim Podatak
Dim Provjera As Boolean
Podatak = Trim(Me.OIB)
Provjera = ProvjeriOIB(Podatak)
If Provjera = False Then
MsgBox " Neispravan OIB"
Me.Firma.SetFocus
Me.OIB.SetFocus
Me.OIB = ""
Exit Sub
End If
If Provjera = True Then
If Format$(Podatak) <> "" Then
Set Rs = Me.Form.RecordsetClone
Rs.FindFirst "[OIB] ='" & Podatak & "'"
If Rs.NoMatch Then GoTo Kraj
Me.Bookmark = Rs.Bookmark
End If
End If
Kraj:
End Sub
↑  ↓

#13 03.04.2012-11:57
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,376


Subject: Re: Zabrana duplog unosa
Mislim da je to O.K.
Previdio sam da se BeforeUpdate ne može isprazniti samo jedan textBox

Hvala.
Pozdrav
↑  ↓

Stranice (1): 1


All times are GMT +01:00. Current time: 12.12.2018-20:51.