[Delphi.net]Runtime aanpassen selectquery DataAdapter

Pagina: 1
Acties:

  • SysRq
  • Registratie: December 2001
  • Laatst online: 13-05 18:04
In Delphi 8 ben ik bezig met een webform applicatie. In de applicatie gebruik ik o.a. een grid (Datagrid). Dit grid is gekoppeld aan een dataset. Die dataset is gekoppeld met een DataAdapter.
Nu heb ik voor die DataAdapter een (select)SQL statement. Bij het starten van de applicatie wordt het grid dan ook netjes gevuld.
Nu wil ik echter runtime het select SQL statement aanpassen, zodat ik een andere recordset krijg. Maar daar gaat het mis. Op de één of andere manier wordt het grid niet geüpdate.

Delphi:
1
2
daDeelact.SelectCommand.CommandText := 'SELECT * FROM deelact where internprojectnr = 1 and projectnr = ' + edProjectnr.text;
DataGrid1.DataBind;

Dit werkt echter niet. Ik heb het al op diverse andere manier geprobeerd, maar geen van de onderstaande oplossingen werkt.

Door in het DataAdapter een parameter toe te voegen, en die dan op onderstaande manier te gebruiken:
Delphi:
1
2
daDeelact.SelectCommand.Parameters['projectnr'].Value:= edProjectnr.text;
DataGrid1.DataBind;

Door de connectie als test opnieuw te openen:
Delphi:
1
2
3
daDeelact.active := false;
daDeelact.SelectCommand.CommandText := 'SELECT * FROM deelact where internprojectnr = 1 and projectnr = ' + edProjectnr.text;
daDeelact.active := true;

Door het grid opnieuw te vullen dmv:
Delphi:
1
daDeelact.Fill(testdataset,'deelact');



De objecten die ik gebruik:
code:
1
2
3
daDeelact   : DataAdapter
DataGrid1   : DataGrid
testdataset  : Dataset


Waar het precies fout gaat weet ik echter niet. Volgens mij wordt de query gewoon niet opnieuw uitgevoerd. Zoeken op Google / GoT gaf echter geen uitkomst.

Bovenstaande code wordt in een postback uitgevoerd.

-


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 00:08

Delphi32

Heading for the gates of Eden

Ik heb dit probleem ook gehad. Wat uiteindelijk bij mij bleek te werken (pseudocode):
Delphi:
1
2
3
4
DataSet.Clear;
DataAdapter.Active :- False;
DataAdapter.SelectCommand.Parameter['someparam'] := SomeValue;
DataAdapter.Active := True;

Maar wat er nou precies mis is met de code die je postte, ik weet het niet, het is een ongrijpbaar iets voor me. Ook de Borland Newsgroup leverde geen relevante info op :'(

  • SysRq
  • Registratie: December 2001
  • Laatst online: 13-05 18:04
Bedankt! Samen met de
Delphi:
1
DataGrid1.databind;

werkte het wel. De dataset.clear moest er blijkbaar bij. :)

-