BiH


Stranice (1): 1

#1 16.02.2012-21:22
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,408


Subject: Usporedba stringa
Opet ja.
Razmišljam nešto kako napraviti proceduru koja bi usporedila string koji upisujem u formu, sa stringovima koji su več upisani u tablicu koja je vezana na tu formu i vrati neku poruku ako je string sličan onom koji je več upisan.
Naime imam tablicu tblPartneri i ponekad se dogodi da korisnik upiše podatke za partnera koji več postoji pa bi bilo interesantno da dobije poruku da več ima upisa pod tim ili sličnim imenom.
Dali je to moguće s obzirom da partner može biti upisan pod imenom Ivanović Ivan, a novi upis bude Ivanović Ivo.
Pozdrav
↑  ↓

#2 16.02.2012-23:07
zxz Online
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,953


Subject: Re: Usporedba stringa
Evo ti procedura na ovom linku.

Nadji Vrijednost
Pozdrav
Ovaj komentar je mijenjan 3 puta. zadnja izmjena 16.02.2012-23:13 od strane zxz. ↑  ↓

#3 17.02.2012-11:27
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,408


Subject: Re: Usporedba stringa
Ovo radi dobro ali nije baš to što sam mislio.
Ja bih želio da mi procedura pronađe i string koji je sličan jer kupac može biti upisan kao
Firma doo
a ja upišem
Firma d.o.o. pa to za funkciju nije isto
ili
Ivan Ivanović
i
Ivo Ivanović

evo nešto sam isprobavo u priloženom primju

ili nešto kao iz linka koji asm pronašau Googlanjem. Primjer sa onom formom Text Compare ima uz nju i neki Kod koji ja baš neznam kako koristiti
Text compare link

Prilozi:
Informacije o fajlu: rar  Kupci.rar
Preuzimanja: 115
Veličina: 74.56 KB


Pozdrav
↑  ↓

#4 18.02.2012-15:06
zxz Online
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,953


Subject: Re: Usporedba stringa
Znam sta hoces i razmisljam sta bi bilo najbolje a da ne bude sporo.
Nema nekog kvalitetnog rezultata sto se nebi pretrazila cijela baza svaki puta.
Moglo bi se sa opciom INstr pa pojedinacno traziti svako slovo upisano pa provjeriti napr ako ima 90% pogodaka da to ponudi ili kako je napravljeno u combu i u exelu da nudi priilikom kucanja dok je isto.
Ovo drugo i nebi sporo radilo jer nebi pretrazivao po bazi ali opnda nebi nasao ono d.o.o. ako je upisano vec doo.
Ponudio bi nakon d ali takvih vjerovatno u bazi bude puno i dok ukuca tacku vise ne vrijedi.
Pozdrav
↑  ↓

#5 18.02.2012-16:26
zxz Online
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,953


Subject: Re: Usporedba stringa
Evo probaj sa ovim
DownloadIzvorni kod (Visual Basic):
  1. Option Compare Database
  2. Option Explicit
  3.  
  4. Private Sub txtUpit_BeforeUpdate(Cancel As Integer)
  5. Dim UpitT As String, Slovo As String * 1, Uslov As String
  6. Dim mySQL As String
  7. Dim rs As Recordset
  8. Dim Db As Database
  9. Dim Brojac As Integer, Reper As Integer
  10. Dim I As Integer
  11. Dim Str As String
  12.  
  13.  
  14. UpitT = Me.txtUpit & "*"
  15.  
  16. Str = "/.q,'- "
  17. Brojac = Len(UpitT)
  18.  
  19. For I = 1 To Brojac
  20. Slovo = Mid(UpitT, I, 1)
  21. Reper = InStr(1, Str, Slovo)
  22. If Reper > 0 Then
  23. Uslov = Uslov & "*"
  24. Else
  25. Uslov = Uslov & Slovo & "*"
  26. End If
  27. Next I
  28. Set Db = CurrentDb
  29. mySQL = "SELECT * FROM qryPartneri WHERE Firma Like '" & Uslov & "'"
  30. Set rs = Db.OpenRecordset(mySQL)
  31. If rs.RecordCount > 0 Then
  32. MsgBox UpitT & " Podatak postoji"
  33. Else
  34. MsgBox UpitT & " Podatak ne postoji"
  35. End If
  36. End Sub

Pozdrav
↑  ↓

#6 19.02.2012-18:09
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,408


Subject: Re: Usporedba stringa
Citat od zxz:

Str = "/.q,'- "
Možeš li mi molim te objesniti ovaj dio koda.
Pozdrav
↑  ↓

#7 19.02.2012-19:03
zxz Online
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,953


Subject: Re: Usporedba stringa
Da to su ti znakovi koji mogu biti u bazi a stavljas zvjezdicu umjesto njih u pretragi.
Mozes ih prosiriti ili smanjiti po zelji.
Pozdrav
↑  ↓

#8 20.02.2012-14:11
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,408


Subject: Re: Usporedba stringa
Primjerio sam da procedura ne prepoznaje riječi koje u sebi imaju slovo LJ kao napr.
Belje
Ljiljana
itd.

Prilozi:
Informacije o fajlu: rar  Kupci2.rar
Preuzimanja: 114
Veličina: 75.32 KB


Pozdrav
↑  ↓

#9 21.02.2012-20:39
zxz Online
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,953


Subject: Re: Usporedba stringa
Evo ti ova procedura.
Mislim da ce ti bolje ova pasati od predhodne pa da ne popravljam nju.
DownloadIzvorni kod (Visual Basic):
  1. Private Sub txtUpit_BeforeUpdate(Cancel As Integer)
  2. Dim Rs As Recordset
  3. Dim Db As Database
  4. Dim Podatak(1 To 2) As String, Slicni(1 To 5) As String, Znak As String, MsgSlicni As String
  5. Dim I As Integer, Duz As Integer, Poeni As Integer, Stanje As Single, X As Integer
  6. Dim Poz As Integer, StartP As Integer
  7.  
  8. If IsNull(Me.txtUpit) Then GoTo Kraj
  9. Podatak(1) = Me.txtUpit
  10. Duz = Len(Podatak(1))
  11. Set Db = CurrentDb
  12.  
  13. Set Rs = Db.OpenRecordset("SELECT Firma FROM TblPartneri")
  14.  
  15. Do While Not Rs.EOF
  16. Podatak(2) = Rs.Fields(0)
  17.     For I = 1 To Duz
  18.     If I = 1 Then
  19.     StartP = 1
  20.     Else
  21.     StartP = I - 1
  22.     End If
  23.     Znak = Mid(Podatak(1), I, 1)
  24.     Poz = InStr(StartP, Podatak(2), Znak)
  25.     If Poz = I + 1 Or Poz = I Or Poz = I - 1 Then
  26.     Poeni = Poeni + 1
  27.     End If
  28.     Next I
  29.     Stanje = Poeni / Duz
  30.     Poeni = 0
  31.     Poz = InStr(1, Podatak(2), Podatak(1))
  32.     If Poz > 0 Then Stanje = 1
  33.     If Stanje > 0.7 Then
  34.     X = X + 1
  35.     Slicni(X) = Podatak(2)
  36.     End If
  37. Rs.MoveNext
  38. Loop
  39. Rs.Close
  40. If X > 0 Then
  41. For I = 1 To X
  42. MsgSlicni = MsgSlicni & Slicni(I) & vbCr
  43. Next I
  44. MsgBox "Slicni su :" & vbCr & MsgSlicni
  45. End If
  46. Kraj:
  47. End Sub

Pozdrav
↑  ↓

#10 22.02.2012-11:28
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,408


Subject: Re: Usporedba stringa
Ovo je odlično. Puno ti hvala.
Pozdrav
↑  ↓

#11 22.02.2012-12:44
zxz Online
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,953


Subject: Re: Usporedba stringa
Ovim mozes povecati ili smanjiti kriterij.
a broj slicnih je ovo:
Slicni(1 To 5) As
Stavio sam pet.
Pozdrav
↑  ↓

#12 22.02.2012-14:35
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,408


Subject: Re: Usporedba stringa
Već sam eksperimentirao sa time jer mi je kod nekih pretraga dolazilo do greške pa sam stavio
Slicni(1 To 30)
Do malo prije mi je sve radilo ali sada mi javlja grešku
ako u pretragu napišem 'miro'

'Subscript out of range'
i zaustavi se na liniji
Slicni(X) = Podatak(2)

a ako napišem 'miroslav' bude sve u redu
Pozdrav
↑  ↓

#13 22.02.2012-19:36
zxz Online
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,953


Subject: Re: Usporedba stringa
Kod mene prolazi i jedno i drugo i kad stavim Slicni(1 to 30)
Pozdrav
↑  ↓

#14 22.02.2012-20:24
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,408


Subject: Re: Usporedba stringa
I kod mene nije problem kada radim na ovom primjeru koji sam poslao i koji ima malo zapisa.
Ali kada importiram moju originalnu tablicu sa oko 800 zapisa onda imam problem koji sam naveo.
U primjeru je kompletna tablica

Prilozi:
Informacije o fajlu: rar  Kupci.rar
Preuzimanja: 115
Veličina: 38.65 KB


Pozdrav
Ovaj komentar je mijenjan 1 puta. zadnja izmjena 22.02.2012-20:29 od strane pmiroslav. ↑  ↓

#15 22.02.2012-20:55
zxz Online
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,953


Subject: Re: Usporedba stringa
Evo ovaj kod ce raditi.
Zeza me redim sto ne radi ko u pravom vb-u

DownloadIzvorni kod (Visual Basic):
  1. Private Sub txtUpit_BeforeUpdate(Cancel As Integer)
  2. Dim Rs As Recordset
  3. Dim Db As Database
  4. Dim Podatak(1 To 2) As String, Znak As String, MsgSlicni As String
  5. Dim I As Integer, Duz As Integer, Poeni As Integer, Stanje As Single
  6. Dim Poz As Integer, StartP As Integer
  7.  
  8. If IsNull(Me.txtUpit) Then GoTo Kraj
  9. Podatak(1) = Me.txtUpit
  10. Duz = Len(Podatak(1))
  11. Set Db = CurrentDb
  12.  
  13. Set Rs = Db.OpenRecordset("SELECT Firma FROM TblPartneri")
  14.  
  15. Do While Not Rs.EOF
  16. Podatak(2) = Rs.Fields(0)
  17.     For I = 1 To Duz
  18.     If I = 1 Then
  19.     StartP = 1
  20.     Else
  21.     StartP = I - 1
  22.     End If
  23.     Znak = Mid(Podatak(1), I, 1)
  24.     Poz = InStr(StartP, Podatak(2), Znak)
  25.     If Poz = I + 1 Or Poz = I Or Poz = I - 1 Then
  26.     Poeni = Poeni + 1
  27.     End If
  28.     Next I
  29.     Stanje = Poeni / Duz
  30.     Poeni = 0
  31.     Poz = InStr(1, Podatak(2), Podatak(1))
  32.     If Poz > 0 Then Stanje = 1
  33.     If Stanje > 0.7 Then
  34.     MsgSlicni = MsgSlicni & vbCr & Podatak(2)
  35.     End If
  36. Rs.MoveNext
  37. Loop
  38. Rs.Close
  39. If MsgSlicni <> "" Then
  40. MsgBox "Slicni su :" & vbCr & MsgSlicni
  41. End If
  42. Kraj:
  43. End Sub

Pozdrav
↑  ↓

Stranice (1): 1


All times are GMT +01:00. Current time: 22.09.2019-21:57.