★DBExpressでトラブル
[Delphi2006 WIN32]
Delphi7で作ったプログラムをDelphi2006でコンパイルすると動作がおかしいので、シンプルなプログラムを作成して試してみました。
問題点は、SQLDataSetで取り出された内容をClientDataSetに反映できないということです。
[環境]
Windows XP Pro SP2、Delphi2006(WIN32)
Firebird 1.5.2.4731
1.フォームに次のコンポーネントを配置して関連付けします。
SQLDataSet1+DataProvider1+ClientDataSet1+DataSource1+DBGrid1
Edit1, Button1
2.SQLConnection1を設定します。
3.SQLDataSet1.Commatextを設定します。
SQLDataSet1.Commatext := 'SELECT * FROM SYAIN WHERE ID = :ID';
4.Button1.OnClickを設定します。
procedure TForm1.Button1Click(Sender: TObject);
var
ID: Integer;
begin
ID := StrToInt(Edit1.Text);
ClientDataSet1.Close;
SQLDataSet1.Close;
SQLDataSet1.ParamByName('ID').AsInteger := ID;
SQLDataSet1.Open;
ClientDataSet1.Open;
end;
このプログラムで、IDを変えてもDBGridの表示は一番最初に入力したIDのデータのままとなっています。
Delphi7から変わったことと言えば、DBExpressのInterBase用のDLLがdbexpint.dllからdbxint30.dllに変更されたことだけです。
Firebirdなのが原因なのかよくわかりませんが、解決方法も見つけられず、困っています。
| 固定リンク