Pretrazivanje baze

Pretrazivanje baze

offline
  • prm 
  • Građanin
  • Pridružio: 11 Jun 2006
  • Poruke: 94

Pravio sam nekiprimer sa nekom bazom i uz pomoc metode LOCATE sam nasao neke stavke u bazi.

Eh sad!
Posto pravim sve u gridu on se pomeri na odgovarajuce mesto ako trazim nesto sto ima u gridu. To fino radi i nema frke.
Ali ja hocu da napravim tako da ako nenadje nista metodom LOCATE dobijem neku porukuci tipa 'Nisam nasao' ili takvo sto slicno...

HH



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • badam 
  • Novi MyCity građanin
  • Pridružio: 26 Maj 2006
  • Poruke: 9

Locate je funkcija koja vraca vrednost tipa Boolean. Ako nadje - True, a ako ne nadje - False.
if not Locate('sifra', 123, []) then   ShowMessage('Nisam nasao')



offline
  • prm 
  • Građanin
  • Pridružio: 11 Jun 2006
  • Poruke: 94

OK pokusacu

Dopuna: 17 Jul 2006 17:45

koristio sam nesto kao
adotNekaaAdo.locate('ImeNekogPolja',edtNekiKljuc,[])

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

BTW, ako je ikako bitno za pricu.. Locate je jako spor... BinarySearch je par hiljada puta brzi... i ne trazi po sekvenciji.

offline
  • Strog  Male
  • Stručni saradnik
    Web programiranje
  • Bojan Kopanja
  • Web & Mobile developer @ ZeusSoftware
  • Pridružio: 26 Jul 2003
  • Poruke: 2597
  • Gde živiš: Stara Pazova

Ne znam kako je Locate spor? Ja sam ga koristio na bazi koja ima oko 150.000 slogova i radio je trenutno... U kom smislu je spor i zasto je Binary brzi ( znam kako radi binary, ali z alocate nisam 100% siguran Smile )?

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Pa ako znas kako radi binary, sto pitas?
Da li znas kako radi locate?

Ako ne znas, locate radi na sledeci nacin:
Na poziciji (recNo) na kojoj trenutno jesi, krene sekvencijalno da trazi po indexu, u koliko je trazeno polje indexirano, ako ne, uzima PK index i krece jedno po jedno do kraja tabele, obrne krug i dodje do onog odakle si poceo, osim tog RecNo koji je bio prvi.
Kod locate-a, izuzetno igra ulogu koja je baza u pitanju i koje je polje u pitanju (ne daj Boze da je neki string).

Kod Binary searcha uporedjuju se samo bajtovi. Posto je integer vrednost, nije bitno da li je string ili ne. Takodje, bas zato sto je integer vrednost, moze da pristupi B-Tree trazenju koje je ultra brzo.
Takodje, binary search ima property "sorted"... ako ti nije slozena po index polju.

Probaj da uradis locate nad velikom tabelom, gde ima bar po 40 polja po registru, i to u loop-u, pa ces da vidis kako je brz..

kad uradis samo jednom Locate, to se ne primeti... ali loop...

offline
  • badam 
  • Novi MyCity građanin
  • Pridružio: 26 Maj 2006
  • Poruke: 9

Ajd da se umesam posto me interesuje.

1. Zasto bi radio Locate ili bilo koji search u loop-u? Locate koristim samo da bih nasao odredjeni record i prikazao ga korisniku (obicno na njegov zahtev). Za sve ostalo tu je SQL.

2. O cemu pricamo kad pricamo o BinarySearch. Prvo sam mislio da je rec samo o tehnici pretrage, pa nisam mario posto me mrzi da pravim ili trazim po netu funkciju (zbog onog pod 1. Slazem se sa Strogom i isto tako imam iskustva sa ogromnim bazama kod kojih se Locate dovoljno brzo izvrsavao), a sad vidim da pominjes property. Gde se nalazi ta klasa? Koristim Delphi 6 i nisam je nasao niti u helpu, niti u bilo kom *.pas fajlu u Delphi folderu.

offline
  • prm 
  • Građanin
  • Pridružio: 11 Jun 2006
  • Poruke: 94

TH
Ja i nisam koristio taj LOCATE u lupu .....

Da da SQL ali ako nesto radi ono radi ......

Mada u onoj knjizi kazu da je Metoda ....

Dopuna: 18 Jul 2006 10:41

to ima i u onoj knjizi od Lasla Krausa
to samo vazi za one koji nikad doticnu nisu pogledali.

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Pa ne znam sa kakvim ste bazama radili, ali sigurno niste obracunavali plate, X poreza i doprinosa sve iz istog koraka, nad 20.000 radnika, gde su SQL sintakse po pola metra. Ne znam kako bi to uradio bez loop-a, kada imas 10 razlicitih stvari koje idu u 2 sasvim druge stvari, iz istog koraka.

Inace, sorry za BinarySearch, mi smo ga napravili jos pre 4-5 godina, pa sam se toliko navikao na njega da sam se prebacio i pomislio da je iz DataSet-a.

Evo samo da vidite sta ja radim po 10h dnevno. Ovaj Unit je zaduzen da generise participaciju za zdravstveno osiguranje unutar kompanije

[Link mogu videti samo ulogovani korisnici]

Ko je trenutno na forumu
 

Ukupno su 887 korisnika na forumu :: 12 registrovanih, 0 sakrivenih i 875 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: deLacy, kaskadija, Mrav Obrad, Otto Grunf, PrincipL, RED4G-304, rikirubio, sap, sekretar, vladetije, zlaya011, Đole64