România
Roportal.ro

Interogarea unei baze de date in Delphi

Început de Constantin Marin, Joi 1 mar 2007 · 3 răspunsuri · 5.212 vizualizări

Constantin Marin43 mesaje#1

Pe un Form am:

Edit1 (care semnifica un nr. de identificare al comenzii),

Edit2 (care semnifica denumirea comenzii), mai am un

Table1 ,DtaSurce1 cu care am legat la o baza de date DBGrid1.

Baza de date este ctreata in Paradox.

Vreau cind introduc in Edit1 nr.de indentificare al comenzii

si in Edit2 denumirea comenzii sa-mi afiseze in DBGrid1 numai

linia care corespunde cu Edit1 si Edit2.

Coloanele din Table1 sunt :

Nr. identificare

Denumire comanda

Nume

Prenume

Compania

Adresa

etc.

Cum fac ci in DBGrid1 sa-mi apara numai rindul specificat de

mine prin Edit1 si Edit2 ?

radu84360 mesaje#2

nu am lucrat deloc cu paradox insa aici ai un exemplu de cum se ia dintr-o tabela paradox informatiile si se exporta intr-un xml: http://delphi.about.com/library/bluc/text/uc050601a.htm

in principiu ca sa realizezi ceea ce vrei iti trebuie un query in care sa dai o comanda de selectie asupra tabelei care vrei tu. grid-ul se leaga de query iar cand query-ul va popula automat grid-ul.

toate cele bune

cdobri1 mesaje#3

Pentru a-ti afisa numai inregistrarile din tabela care corespund unor anumite criterii trebui sa folosesti componenta Query.

De fapt, trebuie sa folosesti o interogare cu parametrii (parameterized query).

In proprietatea SQL a interogarii scrii:

SELECT * FROM NUME_TABELA

WHERE CAMP1=:PARAMETRU1 AND CAMP2=:PARAMETRU2 (Atentie! Sa nu uiti cele 2 puncte dinaintea denumirii parametrului)

Mergi in proprietatea PARAMS a interogarii si stabileste tipul de data (data type) al fiecarui parametru (de ex: ftString).

Mergi in proprietatea ACTIVE a interogarii si stabileste TRUE.

Pune un buton pe form si in evenimentul OnClick al acestuia scrie:

Query1.Close;

Query1.ParamByName('parametru1').AsString:=edit1.Text;

Query1.ParamByName('parametru2').AsString:=edit2.Text;

Query1.Open;

Daca nu doresti sa folosesti componenta query atunci poti sa lucrezi cu metoda LOCATE a tabelei dar aceasta nu iti va

returna NUMAI acea inregistrare care corespunde cerintelor ci te va pozitiona in dreptul randului respectiv.

Table1.Locate('camp1;camp2',vararrayof([edit1.text,edit2.text]),[LoCaseInsensitive]);

radu84360 mesaje#4

SELECT * FROM NUME_TABELA

WHERE CAMP1=:PARAMETRU1 AND CAMP2=:PARAMETRU2 (Atentie! Sa nu uiti cele 2 puncte dinaintea denumirii parametrului)

nu am lucrat cu paradox, insa paradoxul merge pe sintaxa SQL?

Query1.Close;

Query1.ParamByName('parametru1').AsString:=edit1.Text;

Query1.ParamByName('parametru2').AsString:=edit2.Text;

Query1.Open;

1)aici s-ar putea sa apara probleme daca nu se sterg spatiile de la inceput si sfarsit.

2)parametru 1 ar trebui sa fie de tip intreg (Edit1 (care semnifica un nr. de identificare al comenzii))

toate cele bune

← Înapoi la Programare