[ Miloš Baić @ 22.12.2005. 10:43 ] @
| Napravio sam BP u SQL Server-u 2000. Znaci, ima vise tabela u oviru nje.
Povezao sam bazu sa Delphi Aplikacijom putem ADO tehnologije i to sve lepo radi.
Na osnovu ADO tutorijala sa sajta, resio sam neke probleme.
E, sad, hteo bih da nad tabelama a putem Delphi-ja izvodim SQL upite, tipa:
SELECT *
FROM
WHERE
a kasnije i nesto slozenije.
Kako se to u Delphi okruzenju izvodi? Molim za detaljan odgovor zato sto
nisam nikad radio sa SQL upitima...
P.S. SQL naredbe u okviru samog SQL Server-a 2000 daju mi zeljeno i hteo bih to
isto iz Delphi Aplikacije
|
[ Vic @ 22.12.2005. 12:14 ] @
Koristi ado query, pogledaj help u Delphiju
[ Miloš Baić @ 22.12.2005. 16:44 ] @
Da, znam da postoji ADOQuery ali ne znam kako to sve
da povezem kao sa ADOTable i vrsim obradu?!
Moze neko objasnjenje, detaljnije o tome?
Sta sve treba postaviti na formu, povezati sa dbgrid-om?
[ DeYo @ 23.12.2005. 14:00 ] @
imas kompletan ADO tutorijal na:
http://delphi.about.com/od/database/a/databasecourse.htm
konkretno, povezivanje ADOQuery-ja sa ostalim komponentama je objasnjeno u chapter 7:
http://delphi.about.com/od/database/l/aa050101a.htm
[Ovu poruku je menjao DeYo dana 23.12.2005. u 15:01 GMT+1]
[ Miloš Baić @ 24.12.2005. 16:58 ] @
Hvala, pomoglo mi je da uradim sta sam zeleo!!!
with ADOQuery1 do begin
Close;
SQL.Text := 'SELECT OilName FROM Oils ';
Open;
Ispisao sam ovaj kod i on mi prikaze celu tabelu, e sad ja bi hteo da mi se iz OilName
isfiltrira Ime koje sam uneo u Edit1.Text, probao sam sledece, al nece:
with ADOQuery1 do begin
Close;
SQL.Text := 'SELECT OilName FROM Oils '+ Edit1.Text;
Open;
U cemu je problem?
[ dekys @ 24.12.2005. 18:23 ] @
with ADOQuery1 do
begin
Close;
SQL.Text := 'SELECT OilName FROM Oils where OilName ='+ Edit1.Text;
Open;
mozda je umesto znaka jednakosti 'LIKE' ne secam se... tj. koristim mySQL server
Ako ti i dalje ne radi onda zahteva da edit text preneses kao tekst izmedju '' pa onda koristi QuotedStr
[ Miloš Baić @ 24.12.2005. 18:44 ] @
Nije mi uspelo:
with ADOQuery1 do
begin
Close;
SQL.Text := 'SELECT OilName FROM Oils where OilName ='+ Edit1.Text;
Open;
Ni sa LIKE?!
Sta si mislio pod:
"Ako ti i dalje ne radi onda zahteva da edit text preneses kao tekst izmedju '' pa onda koristi QuotedStr?!
Dalje, sta mi je interesantno:
Povezao sam Delphi Aplikaciju sa SQL Serverom 2000 i odradio neke upite.
E, sad, pokusao sam da isfiltriram ali ne ide. Kod:
with ADOQuery1 do begin
Close;
SQL.Text := 'SELECT * FROM Ime Tabele WHERE Ime Polja LIKE "%'+deo_reci+'%"';
Open;
end;
Ovo je sve ok ali nesto nije u redu sa sintaksom, odnosno "%'+deo_reci+'%" ovo deo_reci
uvek bude greska, sve ovo je plave boje ali deo_reci je crne?!
Sta je problem?
Drugo, hteo bih postaviti jedan Edit1.Text i da se u njega unese jedno slovo i da se
isfiltriraju sva imena na to slovo (koja pocinju na to slovo)?
[Ovu poruku je menjao loshmiscg dana 24.12.2005. u 20:09 GMT+1]
[ dekys @ 25.12.2005. 00:48 ] @
Code: SQL.Add('SELECT DUZINA, REC, OPIS');
SQL.Add('FROM Enigma');
SQL.Add('WHERE (REC ="' + Form1.Edit2.Text + '")');
ili
Code:
SQL.Add('SELECT DUZINA, REC, OPIS');
SQL.Add('FROM Enigma');
SQL.Add('WHERE (DUZINA =' + IntToStr(SpinEdit1.Value) + ')');
SQL.Add('AND (REC LIKE' + chr(39)+Form2.Edit1.Text+chr(39)+ ')');
SQL.Add('ORDER BY REC');
Evo ovako sam ja to nekada negde uradio!!!
Sada koristim parametrizirane upite. Tebi ce ovo biti dovoljno!
Citav problem je da znacina apostrofima tj. chr(39)
sto se tice ' (koja pocinju na to slovo)?' koristio sam
Code: SQL.Add('WHERE REC LIKE ' + chr(39) + Form5.Edit1.Text +'%' + chr(39));
[Ovu poruku je menjao dekys dana 25.12.2005. u 01:50 GMT+1]
[ Miloš Baić @ 25.12.2005. 02:33 ] @
Uneo sam ovaj kod:
procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Add('SELECT OilName, LatinName');
ADOQuery1.SQL.Add('FROM Oils');
ADOQuery1.SQL.Add('WHERE OilName LIKE ' + chr(39) + Form1.Edit1.Text +'%' + chr(39));
ADOQuery1.Open;
end;
I nista, samo prikaze DBGrid1 sa poljima tabele ali prazno?!
Druga procedura:
procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery1.SQL.Add('SELECT OilName, LatinName');
ADOQuery1.SQL.Add('FROM Oils');
ADOQuery1.SQL.Add('WHERE (OilName ="' + Form1.Edit1.Text + '")');
end;
I nista, samo prikaze DBGrid1 sa poljima tabele ali prazno?!
Da li to ima neke veze kako su polja indeksirana u SQL Serveru 2000? ( primarni index je OilID,
a ostala dva indexa su OilName i LatinName)
Procedura pokazuje kao da taj podatak koji je unet u bazu ne postoji zato je DBGrid prazan, a u stvari je tu
ili nije polje dobro indeksirano pa ne moze vrsiti pretragu po tom polju?!
Probao sam i sa OilID koji je indeksiran kao primarni i opet isto?!
Kod za OilID(primarni kljuc):
procedure TForm1.Button3Click(Sender: TObject);
begin
ADOQuery1.SQL.Add('SELECT OilID, OilName, LatinName');
ADOQuery1.SQL.Add('FROM Oils');
ADOQuery1.SQL.Add('WHERE (OilID ="' + Form1.Edit1.Text + '")');
end;
A kad ubacim jos i ADOQuery1.Open, kod:
ADOQuery1.SQL.Add('SELECT OilName, LatinName');
ADOQuery1.SQL.Add('FROM Oils');
ADOQuery1.SQL.Add('WHERE (OilName ="' + Form1.Edit1.Text + '")');
ADOQuery1.Open;
izbaci gresku : Invalid Column Name 'neki naziv'?! - a "neki naziv" je upisan
u tu kolonu.
[Ovu poruku je menjao loshmiscg dana 25.12.2005. u 03:51 GMT+1]
[ Vic @ 25.12.2005. 16:18 ] @
Proveri setovanja za SQL server u ODBC. Mislim da bi trebalo da cekiras opciju use Ansi quoted strings.
[ Miloš Baić @ 25.12.2005. 16:59 ] @
Citat: Vic: Proveri setovanja za SQL server u ODBC. Mislim da bi trebalo da cekiras opciju use Ansi quoted strings.
Mozes li malo da mi pojasnis ovo sto si napisao, odnosno da mi objasnis kako to
da izvedem?
[ dekys @ 25.12.2005. 23:19 ] @
Pa svugde moras da uneses ADOQuery1.Open;
[ Miloš Baić @ 26.12.2005. 00:01 ] @
Unesem ali ni tad nece da funkcionise?!
Code: ADOQuery1.SQL.Add('SELECT OilName, LatinName');
ADOQuery1.SQL.Add('FROM Oils');
ADOQuery1.SQL.Add('WHERE (OilName ="' + Form1.Edit1.Text + '")');
ADOQuery1.Open;
Znaci u Edit1.Text je unesena neka vrednost iz polja OilName, znaci ta vrednost postoji u kolono OilName,
i pritiskom na dugme (OnClick) izbaci se greska:
"Invalid column name "trazena_vrednost""
[Ovu poruku je menjao loshmiscg dana 26.12.2005. u 11:24 GMT+1]
[ Miloš Baić @ 30.12.2005. 13:12 ] @
Zar je moguce da mi niko ne moze pomoci resiti problem?!
[ dekys @ 30.12.2005. 21:19 ] @
pa mozes i sam da zakljucis u cemu je problem
"Invalid column name "trazena_vrednost""!!!!!!!!!!!!!!
Verovatno imam u komponenti ADOQuery1 u SQL vec unesen neki upit tako da ti on pokusava odraditi i taj upit i onaj koji ti iz coda dodas zato je potrebno da ga predhodno ocistis
Code: ADOQuery1.Clear;
ADOQuery1.SQL.Add('SELECT OilName, LatinName');
ADOQuery1.SQL.Add('FROM Oils');
ADOQuery1.SQL.Add('WHERE (OilName ="' + Form1.Edit1.Text + '")'); ADOQuery1.Open;
[ Miloš Baić @ 03.01.2006. 13:02 ] @
Code: ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT OilName');
ADOQuery1.SQL.Add('FROM Oils');
ADOQuery1.SQL.Add('WHERE (OilName ="' + Form1.Edit1.Text + '")');
ADOQuery1.Open;
Ista greska : "Invalid column name 'naziv'"!?
Da li treba ADOQuery1 da se stavi u insert mode ili edit mode?!
Ili tako neka caka!?
Polje po kojem ovde zelim vrsiti pretragu je indeksirano i kad
koristim:
Code: ADOTable1.Filter := 'OilName = ' + QuotedStr(Edit1.Text);
ADOTable1.Filtered := true;
if Edit1.Text = '' then
ShowMessage('Unesite OilName po kojem se vrsi filtriranje!');
Edit1.Clear;
i sve lepo odradi?! Gde gresim u Query?
[Ovu poruku je menjao loshmiscg dana 03.01.2006. u 14:03 GMT+1]
[ Miloš Baić @ 04.01.2006. 11:57 ] @
Ljudi, moze li neko?
[ marcha @ 05.01.2006. 11:47 ] @
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT OilName');
SQL.Add('FROM Oils');
SQL.Add('WHERE (OilName =' + QuotedStr(Edit1.Text) + ')');
Open;
end
[ Miloš Baić @ 05.01.2006. 14:56 ] @
To mi je trebalo...
Hvala ti druze...
Idemo dalje:
1) Sad bi hteo da prilikom unosa slova npr. B u Edit1.Text da izlista ( isfiltrira ) sva
imena u koloni OilName koji pocinju na to slovo?!
2) da se pretraga izvrsi po dva polja ( Edit1.Text i Edit2.Text),znaci da se
unesu 2 vrednosti za filtriranje, slicno ovome samo za dve kolone:
Code: with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT OilName');
SQL.Add('FROM Oils');
SQL.Add('WHERE (OilName =' + QuotedStr(Edit1.Text) + ')');
Open;
end
na osnovu polja OilName i LatinName, na primer?!
Moze li?
[Ovu poruku je menjao loshmiscg dana 07.01.2006. u 15:24 GMT+1]
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|