DBGridをSELECTするには?

解決


比嘉医者  2008-04-07 02:41:09  No: 30426

いつもお世話になっております。

データベースデスクトップで以下のような
データベースをつくりました

bangou  name   color

1番   田中      赤
2番   佐藤      白

 データベース名はtestdatabase
 このデータベースをDBGridに表示させております。

このDBGridの
2番   佐藤      白
のみを表示させたい場合、
フォーム上にボタンを配置して、以下のようなコードを書きました。

begin

Query1.SQL.Clear;
Query1.SQL.ADD('SELECT * From testdatabase where bangou=2');

end;

 実行してボタン押しても、DBGridはビタイチ反応しません。

WinXP&Delphi5&データベースはParadoxの環境です。

結構、教科書みたのですが行き詰まりましたので、質問させていただきました。


HOta  2008-04-07 02:46:46  No: 30427

Query1(TQuery) -> TDataSOurce -> TDBGridの接続だと考えます。

Query1.Close;
>Query1.SQL.Clear;
>Query1.SQL.ADD('SELECT * From testdatabase where bangou=2');
Query1.Open;

としたらどうでしょう。


比嘉  2008-04-07 05:02:43  No: 30428

HOta様  コメントありがとうございました。

ボタンのコードはご指摘のとおり、↓のようにしております。

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.ADD('SELECT * From testdatabase where bangou=2');
Query1.Open;

フォームには、
Table  DataSourse Query DBGrid Button  の5つを配置しております。

私の悩みと無関係かもしれませんが、
QueryのAvtiveをTrueにしようとすると、「SQL文がありません」
と拒否されます。

うーむ、SELECTできないデータベースってのは、恐ろしいほど無意味ですね。。。


???  2008-04-07 05:29:24  No: 30429

> 2番   佐藤      白
これがデータの内容だとすれば、bangou=2 では無くbangou=''2番''では?

> QueryのAvtiveをTrueにしようとすると、「SQL文がありません」
QueryにSQL文として直接記述すればokかもよ。


比嘉  2008-04-07 05:49:49  No: 30430

失礼いたしました。
データベースは

bangou  name   color

1   田中      赤
2   佐藤      白

としております。


AY  2008-04-07 06:49:44  No: 30431

>QueryのAvtiveをTrueにしようとすると、「SQL文がありません」
と拒否されます。
これは、オブジェクトインスペクタでですよね。
QueryのSQLに何も設定していないからでしょう
試しに、SELECT * From testdatabase を設定すればActiveに出来るでしょう
それ以前に、DBGridに表示させていると発言と、SQL文がありませんが矛盾します。
Tableも置いてあるようですね。
Dbgridには、Tableを表示させているのではないですか?

現在
Table >  DataSourse >  DBGrid  となっているのではないですかね
Query >  DataSourse >  DBGrid  としてください。


比嘉  2008-04-07 09:16:02  No: 30432

AY様

Table >  DataSourse >  DBGrid  となっているのではないですかね
Query >  DataSourse >  DBGrid  としてください

↑そのとおりでした。
なんとかSelectできました。
ありがとうございました。

HOta様からの

Query1(TQuery) -> TDataSOurce -> TDBGridの接続だと考えます。

のコメントで気づくべきでした。

尚、
Query1.SQL.ADD('SELECT * From testdatabase where name=''田中''');
であれば正常にSELECTされるのに

Edit1.Textに田中と記入して
Query1.SQL.ADD('SELECT * From testdatabase where  name=''Edit1.Text''');

とするとSELECTされなくなりました。

もうちょいSQL入門の教科書みてみます。


ofZ  2008-04-07 17:26:39  No: 30433

> もうちょいSQL入門の教科書みてみます。
そうではなく、文字列と文字列型の区別を、きっちりすることです。

> name=''Edit1.Text''
これは、Edit1.Text  で入力された値で絞り込みしているのではなく、
名前が「Edit1.Text」のもので絞り込んでいることになります。

なのでイカですね。
name='''' + Edit1.Text + ''''


比嘉  2008-04-07 17:50:52  No: 30434

ofz様
ありがとうございました。
いろんな問題が一挙に解決しました。

同じ検討をVCでやってる同僚がおります、
「どっちが優れているか?」
について、これから議論(勝負)してきます。


HOta  2008-04-07 22:26:28  No: 30435

データーベースを使うのなら、Delphiです。


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

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






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