Poslao: 25 Apr 2007 23:07
|
offline
- gogi100
- Građanin
- Pridružio: 26 Jan 2006
- Poruke: 233
|
Pokusavam da napravim jedan program gde mi je potrebno proveriti PIB (poreski identifikacioni broj).Na forumu sam nasao funkciju koja vrsi proveru. Medjutim ovaj kod mi nije bas jasan.Moze li mi ko dati blize objasnjenje ovog koda i po kojoj formuli se proveravaju brojevi PIB-a. Nije mi bas jasno kako uklopiti ovu funkciju kod mene.
Procedura bi kod mene bila ovakva korisnik unese PIB u TextBox - txtPIB i kad pritisne dugme na primer cmdProvera izbaci: ako PIB nije ispravan poruku
Vas PIB nje dobar.Ukoliko je PIB ok program nastavlja sa radom
Public Function ProveriPIB(PIB As String)
Dim c0 As Integer
Dim c1 As Integer
Dim c2 As Integer
Dim c3 As Integer
Dim c4 As Integer
Dim c5 As Integer
Dim c6 As Integer
Dim c7 As Integer
Dim c8 As Integer
Dim zadnji As String
zadnji = Right(PIB, 1)
PIB = Left(PIB, 8)
If Len(PIB) <> 8 Then
ProveriPIB = 1
Else
c8 = (CInt(Mid(PIB, 1, 1)) + 10) Mod 10
If c8 = 0 Then
c8 = 10
End If
c8 = (c8 * 2) Mod 11
c7 = (CInt(Mid(PIB, 2, 1)) + c8) Mod 10
If c7 = 0 Then
c7 = 10
End If
c7 = (c7 * 2) Mod 11
c6 = (CInt(Mid(PIB, 3, 1)) + c7) Mod 10
If c6 = 0 Then
c6 = 10
End If
c6 = (c6 * 2) Mod 11
c5 = (CInt(Mid(PIB, 4, 1)) + c6) Mod 10
If c5 = 0 Then
c5 = 10
End If
c5 = (c5 * 2) Mod 11
c4 = (CInt(Mid(PIB, 5, 1)) + c5) Mod 10
If c4 = 0 Then
c4 = 10
End If
c4 = (c4 * 2) Mod 11
c3 = (CInt(Mid(PIB, 6, 1)) + c4) Mod 10
If c3 = 0 Then
c3 = 10
End If
c3 = (c3 * 2) Mod 11
c2 = (CInt(Mid(PIB, 7, 1)) + c3) Mod 10
If c2 = 0 Then
c2 = 10
End If
c2 = (c2 * 2) Mod 11
c1 = (CInt(Mid(PIB, 8, 1)) + c2) Mod 10
If c1 = 0 Then
c1 = 10
End If
c1 = (c1 * 2) Mod 11
c0 = (11 - c1) Mod 10
If c0 <> zadnji Then
ProveriPIB = 1
Else
ProveriPIB = 0
End If
'return(pib || to_char(c0));
End If
End Function
Hvala
Dopuna: 25 Apr 2007 23:07
U pravilniku o PIB-u sam nasao da prvih osam cifara je redni broj obveznika koji moze biti od 10000001 do 999999999.Moze li mi ko napisati opstu formulu kako se izracunava 9 cifra kontrolni broj.
Ako dobijem ovu formulu nije tesko napisati ni proveru PIB-a.
Ja sam napisao proveru - uslove: ukoliko je PIB kraci ili duzi od 9 cifara, zatim ukoliko je prvih 8 cifara manje od 100000001. Sad mi je potrebna opsta formula kako izracunati kontrolni broj.Kad to imam onda nije tesko napisati i proveru.
Hvala
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 25 Apr 2007 23:38
|
offline
- biser-x
- Počasni građanin
- Pridružio: 28 Jun 2004
- Poruke: 990
- Gde živiš: Kucura
|
Predpostavljam da je 0 ispravno, a 1 neispravno. Znaci:
If ProveriPIB(Text1.Text) = 1 Then MsgBox "Neispravan PIB"
If ProveriPIB(Text1.Text) = 0 Then MsgBox "Ispravan PIB"
Dopuna: 25 Apr 2007 23:38
Ja cu ti napisati bilo koju petlju, samo se ne razumem u ove PIB i kontrolne brojeve
|
|
|
|
Poslao: 26 Apr 2007 09:03
|
offline
- gogi100
- Građanin
- Pridružio: 26 Jan 2006
- Poruke: 233
|
provalio sam,ustvario nasao na netu kako se racuna kontrolni broj (deveta cifra) PIB-a
|
|
|
|
Poslao: 26 Apr 2007 11:37
|
offline
- Strog
- Stručni saradnik
Web programiranje
- Bojan Kopanja
- Web & Mobile developer @ ZeusSoftware
- Pridružio: 26 Jul 2003
- Poruke: 2597
- Gde živiš: Stara Pazova
|
Pa valjalo bi da stavis i ovde to resenje posto moze da zatreba jos nekome...
|
|
|
|
Poslao: 28 Apr 2007 12:30
|
offline
- gogi100
- Građanin
- Pridružio: 26 Jan 2006
- Poruke: 233
|
Ovo je komplet kod za komandno dugme koje proverava PIB.,zajedno sa funkcijom koja proverava kontrolni broj(9-a cifra PIB-a).Nisam siguran da li je ovo ispravno sto sam radio sa GOTO naredbama,ali funkcionise.Ostalo mi je jos da ubacim proveru kad nije nista ubaceno u tekst polje.Moze li mi ko napisati kod za validaciju kad je txtPIB.text prazno.
Pokusavao sam da funkcije IsNull ili IsEmpty ubacim ovako
Private Sub txtPIB_Validate(Cancel As Boolean)
If IsEmpty(txtPIB.Text) Then
MsgBox "Vaš PIB je prazan.Unesite ga", vbCritical, "PIB"
End If
End Sub
ali ovo ne funkcionise.
Hvala
'/ komandno dugme
Private Sub cmdPIB_Click()
Dim provera As Boolean
Dim strI As String
strI = txtPIB.Text
provera = ProveriPIB(strI)
If IsNumeric(txtPIB.Text) = False Then
MsgBox "Niste uneli numerièke karaktere.Unesite PIB Ponovo", vbCritical, "PIB"
GoTo ispravnost
End If
If Len(txtPIB.Text) <> 9 Then
lblIspravnost.ForeColor = &HFF&
lblIspravnost.Caption = "PIB nije ispravan"
MsgBox "Vas PIB nema 9 cifara ili ima više od 9 cifara, upišite novi", vbCritical, "PIB"
GoTo ispravnost
ElseIf provera = False Or Mid(strI, 1, 8) < 10000001 Then
lblIspravnost.ForeColor = &HFF&
lblIspravnost.Caption = "PIB nije ispravan"
MsgBox "Vas PIB nije dobar, upišite novi", vbCritical, "PIB"
End If
ispravnost:
If provera = True Then
frmPozivNaBroj.Show
lblIspravnost.ForeColor = &HC000&
lblIspravnost.Caption = "PIB je ispravan"
End If
End Sub
' funkcija koja proverava devetu cifru PIB-a
Public Function ProveriPIB(PIB As String) As Boolean
Dim c0 As Integer
Dim c1 As Integer
Dim c2 As Integer
Dim c3 As Integer
Dim c4 As Integer
Dim c5 As Integer
Dim c6 As Integer
Dim c7 As Integer
Dim c8 As Integer
Dim zadnji As String
If Len(PIB) = 9 And Mid(strI, 1, 8) >= 10000001 Then
zadnji = Right(PIB, 1)
PIB = Left(PIB, 8)
c8 = (CInt(Mid(PIB, 1, 1)) + 10) Mod 10
If c8 = 0 Then
c8 = 10
End If
c8 = (c8 * 2) Mod 11
c7 = (CInt(Mid(PIB, 2, 1)) + c8) Mod 10
If c7 = 0 Then
c7 = 10
End If
c7 = (c7 * 2) Mod 11
c6 = (CInt(Mid(PIB, 3, 1)) + c7) Mod 10
If c6 = 0 Then
c6 = 10
End If
c6 = (c6 * 2) Mod 11
c5 = (CInt(Mid(PIB, 4, 1)) + c6) Mod 10
If c5 = 0 Then
c5 = 10
End If
c5 = (c5 * 2) Mod 11
c4 = (CInt(Mid(PIB, 5, 1)) + c5) Mod 10
If c4 = 0 Then
c4 = 10
End If
c4 = (c4 * 2) Mod 11
c3 = (CInt(Mid(PIB, 6, 1)) + c4) Mod 10
If c3 = 0 Then
c3 = 10
End If
c3 = (c3 * 2) Mod 11
c2 = (CInt(Mid(PIB, 7, 1)) + c3) Mod 10
If c2 = 0 Then
c2 = 10
End If
c2 = (c2 * 2) Mod 11
c1 = (CInt(Mid(PIB, 8, 1)) + c2) Mod 10
If c1 = 0 Then
c1 = 10
End If
c1 = (c1 * 2) Mod 11
c0 = (11 - c1) Mod 10
If c0 = zadnji Then
ProveriPIB = 1
Else
ProveriPIB = 0
End If
'return(pib || to_char(c0));
End If
End Function
|
|
|
|
Poslao: 28 Apr 2007 21:31
|
offline
- biser-x
- Počasni građanin
- Pridružio: 28 Jun 2004
- Poruke: 990
- Gde živiš: Kucura
|
Citat: Moze li mi ko napisati kod za validaciju kad je txtPIB.text prazno.
Moze ovako:
Private Sub txtpib_Change()
If txtpib.Text = "" Then
MsgBox "Vaš PIB je prazan.Unesite ga", vbCritical, "PIB"
End If
End Sub
...ali ovako ce ti izbaciti poruku ukoliko napises prvi broj pogresno pa ga izbrises.
Bolje je da taj deo koda ubacis pre:
...strI = txtpib.Text
provera = ProveriPIB(strI)
If IsNumeric(txtPIB.Text) = False Th...
znaci:
Private Sub cmdPIB_Click()
Dim provera As Boolean
Dim strI As String
If txtpib.Text = "" Then
MsgBox "Vaš PIB je prazan.Unesite ga", vbCritical, "PIB"
Exit Sub
End If
strI = txtpib.Text
provera = ProveriPIB(strI)
...
...
I plzz, koristi [ code ] tagove... (hmm tako se to zove... valjda.... )
|
|
|
|
Poslao: 29 Apr 2007 10:24
|
offline
- gogi100
- Građanin
- Pridružio: 26 Jan 2006
- Poruke: 233
|
Hvala
A sto se tice ovih Goto naredbi da li je ovo sto sam koristio ispravno?
|
|
|
|
Poslao: 23 Jun 2016 09:49
|
offline
- djordje.lazovic
- Novi MyCity građanin
- Pridružio: 23 Jun 2016
- Poruke: 1
|
Drugari,
Puno vam hvala. Ovo rešenje od c8 do c0 radi. Konvertovao sam ga u Clarion i završio posao, Mnogo vremena sam izgubio tražeći pravo rešenje. Čudi me kako ga nisu objavili na sajtu Ministarstva. Treba ih podsetiti.
|
|
|
|