Poslao: 17 Jul 2006 08:56
|
offline
- 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.
|
|
Poslao: 17 Jul 2006 11:36
|
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')
|
|
|
|
Poslao: 17 Jul 2006 16:45
|
offline
- Pridružio: 11 Jun 2006
- Poruke: 94
|
OK pokusacu
Dopuna: 17 Jul 2006 17:45
koristio sam nesto kao
adotNekaaAdo.locate('ImeNekogPolja',edtNekiKljuc,[])
|
|
|
|
Poslao: 17 Jul 2006 17:15
|
offline
- beli0135

- Executor
- 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.
|
|
|
|
Poslao: 17 Jul 2006 22:09
|
offline
- Strog

- 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 )?
|
|
|
|
Poslao: 17 Jul 2006 22:18
|
offline
- beli0135

- Executor
- 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...
|
|
|
|
Poslao: 18 Jul 2006 02:51
|
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.
|
|
|
|
Poslao: 18 Jul 2006 09:41
|
offline
- 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.
|
|
|
|
Poslao: 18 Jul 2006 13:07
|
offline
- beli0135

- Executor
- 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]
|
|
|
|