[ dejov @ 03.09.2004. 00:10 ] @
Radim sa ado komponentama. Konkretno u pitanju je komponenta AdoQuery. U delu ADoquery.sql potrebno mi je da definisem sledeci upit:
Code:
select *
from film
where :sta= :vrednost


Dakle potrebna su mi 2 parametra. Jedan(obican) kojem se dodeljuje neka vrednost tipa string, integer... To nije problem, ali potreban mi je i parametar koji ce da odredi sta treba da dobije neku vrednost. Konkretno npr ime, prezime,jmbg, sve u zavisnosti od korisnikovih zahteva. medjutim kada napisem ovako kako sam gore napisao dobijem poruku o gresci:

Code:
Parametar object is improperly defined.inconsistent or incompleteinformation was provided

Kako da uradim ovo?
[ slavica2000 @ 03.09.2004. 12:24 ] @
Code:
select *
from film
where Ime_film = :Ime_film
and Prezime_film = :Prezime_film
...
Zatim u Object Inspectoru Params uneti tj. odabrati tip polja za parametar1 a zatim i parametar2.Pre otvaranja Query moras napuniti parametre na pr:
Query.Params[0].AsString := Edit1.Text
Query.Params[1].AsString := Edit2.Text
itd.
[ Almedin @ 03.09.2004. 22:33 ] @
U upitu se ne može parametar koristiti za nazive polja.
[ morlic @ 05.09.2004. 11:50 ] @
Recimo da imas formu sa combobox, editbox i jednim button-om. ComboBox treba da ti bude Style=csDropDownList kako korisnik ne bi mogao sam da unosi vrednosti vec da bira sa liste koju mu ti predlozis preko Items property-a. Na klik buttona stavis sledece:

Code:

procedure TQueryTestFrm.Button1Click(Sender: TObject);
begin
  // Prvo provera unosa!
  if ComboBox1.Text = '' then
    begin
      ShowMessage('Niste izabrali polje!');
      Exit;
    end;
  // Vrednost
  if Edit1.Text = '' then
    begin
      ShowMessage('Niste uneli vrednost!');
      Exit;
    end;

  With ADOQuery1 do
    begin
      if Active then Close;
      SQL.Text := Format('select * from neka_tabela where %s = :vrednost',
                         [ComboBox1.Text]);
      Parameters[0].Value := Edit1.Text;
      Open;
    end;
end;