Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 8 odgovora
  • 2.820 pregleda

Najnovija ↓

Pretraga baze bez rezultata 23.02.2009. u 08:10 · pre 215 meseci #1
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.
Re: Pretraga baze bez rezultata 23.02.2009. u 09:50 · pre 215 meseci #2
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".
Potpis
"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
Re: Pretraga baze bez rezultata 23.02.2009. u 10:07 · pre 215 meseci #3
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.
Re: Pretraga baze bez rezultata 23.02.2009. u 12:37 · pre 215 meseci #4
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 %...
Potpis
Don't worry be happy
Re: Pretraga baze bez rezultata 23.02.2009. u 13:17 · pre 215 meseci #5
Ne radi ni sa %

Ovako radi:

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

Stvarno ne zanam u cemu je problem?
Re: Pretraga baze bez rezultata 23.02.2009. u 13:51 · pre 215 meseci #6
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 %.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Pretraga baze bez rezultata 23.02.2009. u 14:17 · pre 215 meseci #7
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.

Re: Pretraga baze bez rezultata 23.02.2009. u 15:26 · pre 215 meseci #8
> 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.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Pretraga baze bez rezultata 23.02.2009. u 15:41 · pre 215 meseci #9
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
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme