Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pretraga baze bez rezultata

[es] :: Pascal / Delphi / Kylix :: Pretraga baze bez rezultata

[ Pregleda: 2073 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

prginfo
NS

Član broj: 174814
Poruke: 133
*.ADSL.neobee.net.



+1 Profil

icon Pretraga baze bez rezultata23.02.2009. u 07:10 - pre 184 meseci
Koristim D2007 i Firebird.

Sledeci kod mi ne vraca vrednost, tj. TIBDataSetID.Value=''

TIBDataSet.Close;
TIBDataSet.SelectSQL.Clear;
TIBDataSet.SelectSQL.Add('select * from TABELA where NAZIV like ' +QuotedStr(ANsiUpperCase(Edit1.Text)));
TIBDataSet.Prepare;
TIBDataSet.Open;
TABELA.Locate('ID', TIBDataSetID.Value,[]);

Sledeci kod mi vraca vrednost, tj. TIBDataSetID.Value='TEXT'

TIBDataSet.Close;
TIBDataSet.SelectSQL.Clear;
TIBDataSet.SelectSQL.Add('select * from TABELA where NAZIV like ''TEXT''');
TIBDataSet.Prepare;
TIBDataSet.Open;
TABELA.Locate('ID', TIBDataSetID.Value,[]);

Da li neko mozda zna gde je greska u prvom kodu, tj. u kodu koji mi ne vraca vrednosti?

Hvala unapred.
 
Odgovor na temu

rambo
Dejan Petković
Beograd

Član broj: 6095
Poruke: 190
*.eunet.yu.



+6 Profil

icon Re: Pretraga baze bez rezultata23.02.2009. u 08:50 - pre 184 meseci
Ako trežiš NAZIV čiji sadržaj treba da bude identičan onome iz Edit polja, onda koristi =, a ako tražiš zapise kod kojih polje NAZIV treba da sadrži tekst iz Edit polja, onda koristiš LIKE samo što bar iza teksta iz Edit polja dodaš jedan %. Znak procenat zamenjuje bilo koji niz karaktera, pa tako, ako se nalazi iza nekog teksta, onda znači da tražiš "taj tekst i bolo šta posle njega" odnosno "taj tekst koji počinje sa tim stringom, ako se nalazi ispred teksta, onda tražiš "bilo koji tekst koji se završava sa tim stringom", a ako se procenat nalazi ispred i iza tvog teksta, onda znači da tražiš "bilo koji tekst koji u sebi sadrži taj string".
"There is a theory which states that if ever anybody discovers exactly what the
Universe is for and why it is here, it will instantly disappear and be replaced by
something even more bizarre and inexplicable. There is another theory which states
that this has already happened."
-- Douglas Adams
 
Odgovor na temu

prginfo
NS

Član broj: 174814
Poruke: 133
*.ADSL.neobee.net.



+1 Profil

icon Re: Pretraga baze bez rezultata23.02.2009. u 09:07 - pre 184 meseci
Rambo, hvala ti na savetima, ali to vec znam.

Poenta je sledeca:

Ako u Edit1 upisem TEXT

QuotedStr(ANsiUpperCase(Edit1.Text))

ne odradi posao, tj. inacessible value.

Pitanje je zbog cega.

U Delphi 7 mi odradi OK. Sada prebacujem neke programe na D2007, i javlja mi se ova graska. Pitanje je zbog cega.
 
Odgovor na temu

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
93.86.166.*



+2 Profil

icon Re: Pretraga baze bez rezultata23.02.2009. u 11:37 - pre 184 meseci
Probaj umesto
QuotedStr(ANsiUpperCase(Edit1.Text)) da pise
QuotedStr(ANsiUpperCase('%'+Edit1.Text+'%'))
to bi trebalo da radi

Nesto mi tu nije jasno kako je uopste moglo da radi like bez %...
Don't worry be happy
 
Odgovor na temu

prginfo
NS

Član broj: 174814
Poruke: 133
*.ADSL.neobee.net.



+1 Profil

icon Re: Pretraga baze bez rezultata23.02.2009. u 12:17 - pre 184 meseci
Ne radi ni sa %

Ovako radi:

TIBDataSet.SelectSQL.Add('select * from TABELA where NAZIV = ''TEXT''');

Stvarno ne zanam u cemu je problem?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Pretraga baze bez rezultata23.02.2009. u 12:51 - pre 184 meseci
Meni zapravo još nije jasno šta ti je problem, molim te razjasni malo šta tačno želiš.
Ako želiš tačno određeni slog onda koristiš pretragu po jednakosti, ako želiš slog koji sadrži određeni tekst onda koristiš LIKE i %.
 
Odgovor na temu

prginfo
NS

Član broj: 174814
Poruke: 133
*.ADSL.neobee.net.



+1 Profil

icon Re: Pretraga baze bez rezultata23.02.2009. u 13:17 - pre 184 meseci
Zelim tacno odredjeni slog. Ali, nisam mozda bio dovoljno jasan.

Ovako radi:

TIBDataSet.SelectSQL.Add('select * from TABELA where NAZIV = ''TEXT''');

Ovako ne radi:

TIBDataSet.SelectSQL.Add('select * from TABELA where NAZIV = ' +QuotedStr(ANsiUpperCase(Edit1.Text)));

U Edit1 upisem TEXT; kada radim debagovanje, stanem iznad Edit1.Text i on mi ispise 'TEXT' (znaci pravilno iscitava podatke).

Pitanje je zasto select u prvom slucaju odradi posao a u drugom ne. Meni je potreban drugi nacin zbog run-time iscitavanja podataka-naravno.

Mislim da je sada jasnije.

 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Pretraga baze bez rezultata23.02.2009. u 14:26 - pre 184 meseci
> Ovako ne radi:
> TIBDataSet.SelectSQL.Add('select * from TABELA where NAZIV = ' +QuotedStr(ANsiUpperCase(Edit1.Text)));

Koju grešku dobijaš?

Za početak probaj SelectSQL.Text := umesto SelectSQL.Add. Ako ne pomogne onda ubaci IBDataSet.SelectSql.SaveToFile('C:\kveri.txt') posle dodele i uporedi dobijeni fajl kada radi i kada upit ne radi.

 
Odgovor na temu

prginfo
NS

Član broj: 174814
Poruke: 133
*.ADSL.neobee.net.



+1 Profil

icon Re: Pretraga baze bez rezultata23.02.2009. u 14:41 - pre 184 meseci
Hvala, sada sam uz pomoc savkica otkrio.

Naime, napravio sam .txt fajl

Problem je bio sledeci ANsiUpperCase

Kada ne radi, trazio je 'TEXT' a kada radi, trazio je 'Text' kao sto je i u bazi.

Znaci bio je problem sa CaseSensitiv. Ovo mi ranije nije pravilo problema. Ranije, mislim u Delphi7, a mislio sam da je rec o SQL-u tako da ne bi trebalo da ima veze.

Hvala jos jednom
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Pretraga baze bez rezultata

[ Pregleda: 2073 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.