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


ku  2006-09-01 22:13:32  No: 23067

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


ん?  2006-09-01 23:49:03  No: 23068

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

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


Ru  2006-09-02 03:47:24  No: 23069

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

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


ん?  2006-09-02 04:42:52  No: 23070

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


HOta  2006-09-02 06:06:53  No: 23071

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

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


Ru  2006-09-04 23:22:54  No: 23072

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

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


HOta  2006-09-05 18:55:37  No: 23073

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加