質問のタイトルがおかしいかもしれません。
DBGrid1、DBEdit1、Query1、DataSource1、を貼り付け、DBEdit1に入力した値と同一のものだけがDBGrid1に表示される。という具合に作りたいのですが全くうまくいきません。DBGrid1には2つのテーブルを関連づけさせ、その2つのテーブルから必要なものだけを表示するようにしてます。
ソースは何も書いてません。
DBGrid1のデータを選択するとDBEdit1に表示されるのですが、その逆をやりたいのです。 DBEdit1には入力ができないのでしょうか?初めてのデータベース作成で分らないことだらけですが、どなたか具体的に教えていただけませんでしょうか。
逆にするのなら、TDBEditである必要なし。
データベースの内容を変更するのではなく、絞り込みを行うための
入力ですから、TEditで十分です。
TEditに入力された値に対し、TQuery.SQLを書き換えるようにしたらいいでしょう。
SQLの書き換えじゃなく、TTable.Filter とか、TQuery.Paramsとか使うのかな?
具体的に、と言われても・・・パス。
記憶違いならごめんなさい。
たしかQueryからは普通では編集できなかった気がします。
Tableからの接続なら編集は出来たと思います。
http://www.wwlnk.com/boheme/delphi/dbtips/css0350.htm
> たしかQueryからは普通では編集できなかった気がします。
Query.RequestLive = True
とか
キャッシュアップデート
とか
編集できないなんてことはありませんけど。
2つのテーブルからの選択をDBGridとDBEditに表示させているのですね。そのままでは、テーブルの更新はできません。その場合、TUpdateSQLを追加します。TQueryのUpdateSQLに、TUpdateSQLを設定し、CachedUpdatesをTrueにします。TUpdateSQLを右クリックからSQLの設定で、更新するテーブルの更新するフィールドを指定して、更新SQLを設定します。この場合、POSTだけではCacheを更新するだけで、実際のテーブルは更新できません。Post時に、ApplyUpdatesでデータセットの未処理のキャッシュアップデートをデータベースに書き込みます。
もう一つは、別のTQueryで更新して、選択しているTQueryをRefreshします。
昔作ってるソース探してみたらクエリーで更新してるやつ有りました。
(テーブル一個)
申し訳有りません。
更新できなかった奴は何だったんだろう。
テーブル2個以上で更新しようとしたデータだったのかな・・・
追加です。
複数のテーブルのどちらも更新する場合は、TUpdateSQLを更新するテーブルの和用意します。UpdateSQLプロパティにUpdateSQL1;UpdateSQL2;...の様に設定して、それぞれのテーブル毎の更新SQLを設定します。
TQueryの更新するイベントで、
if Query1.UpdatesPending then
try
Query1.ApplyUpdates;
Except
Query1.CancelUpdates;
End;
で実際のテーブルに登録します。
ツイート | ![]() |