いつもお世話になっております。
データベースデスクトップで以下のような
データベースをつくりました
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の環境です。
結構、教科書みたのですが行き詰まりましたので、質問させていただきました。
Query1(TQuery) -> TDataSOurce -> TDBGridの接続だと考えます。
Query1.Close;
>Query1.SQL.Clear;
>Query1.SQL.ADD('SELECT * From testdatabase where bangou=2');
Query1.Open;
としたらどうでしょう。
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できないデータベースってのは、恐ろしいほど無意味ですね。。。
> 2番 佐藤 白
これがデータの内容だとすれば、bangou=2 では無くbangou=''2番''では?
> QueryのAvtiveをTrueにしようとすると、「SQL文がありません」
QueryにSQL文として直接記述すればokかもよ。
失礼いたしました。
データベースは
bangou name color
1 田中 赤
2 佐藤 白
としております。
>QueryのAvtiveをTrueにしようとすると、「SQL文がありません」
と拒否されます。
これは、オブジェクトインスペクタでですよね。
QueryのSQLに何も設定していないからでしょう
試しに、SELECT * From testdatabase を設定すればActiveに出来るでしょう
それ以前に、DBGridに表示させていると発言と、SQL文がありませんが矛盾します。
Tableも置いてあるようですね。
Dbgridには、Tableを表示させているのではないですか?
現在
Table > DataSourse > DBGrid となっているのではないですかね
Query > DataSourse > DBGrid としてください。
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入門の教科書みてみます。
> もうちょいSQL入門の教科書みてみます。
そうではなく、文字列と文字列型の区別を、きっちりすることです。
> name=''Edit1.Text''
これは、Edit1.Text で入力された値で絞り込みしているのではなく、
名前が「Edit1.Text」のもので絞り込んでいることになります。
なのでイカですね。
name='''' + Edit1.Text + ''''
ofz様
ありがとうございました。
いろんな問題が一挙に解決しました。
同じ検討をVCでやってる同僚がおります、
「どっちが優れているか?」
について、これから議論(勝負)してきます。
データーベースを使うのなら、Delphiです。
ツイート | ![]() |