クエリーがうまく表示されない


ku  2006-09-01 13:13:32  No: 23067  IP: 192.*.*.*

質問のタイトルがおかしいかもしれません。
DBGrid1、DBEdit1、Query1、DataSource1、を貼り付け、DBEdit1に入力した値と同一のものだけがDBGrid1に表示される。という具合に作りたいのですが全くうまくいきません。DBGrid1には2つのテーブルを関連づけさせ、その2つのテーブルから必要なものだけを表示するようにしてます。
ソースは何も書いてません。
DBGrid1のデータを選択するとDBEdit1に表示されるのですが、その逆をやりたいのです。  DBEdit1には入力ができないのでしょうか?初めてのデータベース作成で分らないことだらけですが、どなたか具体的に教えていただけませんでしょうか。

編集 削除
ん?  2006-09-01 14:49:03  No: 23068  IP: 192.*.*.*

逆にするのなら、TDBEditである必要なし。
データベースの内容を変更するのではなく、絞り込みを行うための
入力ですから、TEditで十分です。
TEditに入力された値に対し、TQuery.SQLを書き換えるようにしたらいいでしょう。

SQLの書き換えじゃなく、TTable.Filter とか、TQuery.Paramsとか使うのかな?
具体的に、と言われても・・・パス。

編集 削除
Ru  2006-09-01 18:47:24  No: 23069  IP: 192.*.*.*

記憶違いならごめんなさい。
たしかQueryからは普通では編集できなかった気がします。
Tableからの接続なら編集は出来たと思います。

http://www.wwlnk.com/boheme/delphi/dbtips/css0350.htm

編集 削除
ん?  2006-09-01 19:42:52  No: 23070  IP: 192.*.*.*

> たしかQueryからは普通では編集できなかった気がします。
Query.RequestLive = True
とか
キャッシュアップデート
とか
編集できないなんてことはありませんけど。

編集 削除
HOta  2006-09-01 21:06:53  No: 23071  IP: 192.*.*.*

2つのテーブルからの選択をDBGridとDBEditに表示させているのですね。そのままでは、テーブルの更新はできません。その場合、TUpdateSQLを追加します。TQueryのUpdateSQLに、TUpdateSQLを設定し、CachedUpdatesをTrueにします。TUpdateSQLを右クリックからSQLの設定で、更新するテーブルの更新するフィールドを指定して、更新SQLを設定します。この場合、POSTだけではCacheを更新するだけで、実際のテーブルは更新できません。Post時に、ApplyUpdatesでデータセットの未処理のキャッシュアップデートをデータベースに書き込みます。

もう一つは、別のTQueryで更新して、選択しているTQueryをRefreshします。

編集 削除
Ru  2006-09-04 14:22:54  No: 23072  IP: 192.*.*.*

昔作ってるソース探してみたらクエリーで更新してるやつ有りました。
(テーブル一個)
申し訳有りません。

更新できなかった奴は何だったんだろう。
テーブル2個以上で更新しようとしたデータだったのかな・・・

編集 削除
HOta  2006-09-05 09:55:37  No: 23073  IP: 192.*.*.*

追加です。
複数のテーブルのどちらも更新する場合は、TUpdateSQLを更新するテーブルの和用意します。UpdateSQLプロパティにUpdateSQL1;UpdateSQL2;...の様に設定して、それぞれのテーブル毎の更新SQLを設定します。
TQueryの更新するイベントで、
  if Query1.UpdatesPending then
    try
      Query1.ApplyUpdates;
    Except
      Query1.CancelUpdates;
    End;
で実際のテーブルに登録します。

編集 削除