初心者の質問です。(DBについて)

解決


初心者  2006-11-26 23:36:35  No: 24076  IP: 192.*.*.*

フォームのテキストエリアへのユーザの入力内容と、データベース内の登録データを比べ整合性を取り、登録内容と一緒だったら、データベース内のデータをフォームに表示する、ということは可能ですか?
可能なら、具体的なやり方を教えてもらえると有り難いです。
ログインフォームをイメージしてもらえると、分かりやすいと思います。

開発環境はDelphi professionalです。
色々調べてはみたんですが、どうしても見つからなく、掲示板に投稿しました。

編集 削除
初心者  2006-11-26 23:43:45  No: 24077  IP: 192.*.*.*

上の質問の追加です。
開発環境はDelphi3.1 professionalです。

編集 削除
えーとね  2006-11-26 23:48:33  No: 24078  IP: 192.*.*.*

> 可能ですか?
可能です。

データベースやDelphi のバージョンによって
使用するコンポーネントは異なりますが
基本的にはQuery 系のコンポーネントでSELECT 文を発行して
データが見つかったら、次の処理(データを表示)を行います。

初心者との事ですが、SQL の知識はお持ちなのでしょうか?

編集 削除
初心者  2006-11-27 01:14:10  No: 24079  IP: 192.*.*.*

早速の書き込み、ありがとうございます。
SQLの知識は、SELECT文など基本的な使い方は分かってます。
ただ、Query系のコンポーネントでSELECT分を発行は出来るのですが、
テキスト入力の内容とデータベースのフィールドの内容を比べると、
エラーが出てしまいます。
例えば、
テキスト入力の内容ですと、
Form1.Edit1.Text
データベースのフィールド中身ですと、
Customer.Password
「=」で結ぶとエラーになる、といった状況です。
select Name from Customer where Password = Form1.Edit1.Text;
上記のSQL文ではエラーになります。
こういう状況の場合、テキスト入力の内容を、
SQLで記述出来るよう工夫したりする必要があるのでしょうか?

編集 削除
えーとね  2006-11-27 06:08:04  No: 24080  IP: 192.*.*.*

> テキスト入力の内容を、SQLで記述出来るよう工夫
エラー内容が不明ですが、右辺は''で括らないとマズイと思います。
パラメータクエリを使えば簡単です。

query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select Name from Customer where Password = :password');
query1.ParamByName('password').AsString := Form1.Edit1.Text;
query1.Open;

編集 削除
初心者  2006-11-27 09:42:35  No: 24081  IP: 192.*.*.*

書き込みありがとうございます。
上記の方法で試してみたのですが、

「Project1.exeがEDBEngineErrorクラスの例外を生成しました。
'キーワードの使用が無効です'
キーワード:Password」

とエラーが出てしまいます。
このエラーは「Password」というフィールドが無いということなのでしょうか?
「Password」というフィールドは確かにあり、このエラーを解決する方法が
分かりません。

お手数ですが、よろしくお願いします。

編集 削除
えーとね  2006-11-27 10:50:08  No: 24082  IP: 192.*.*.*

Password がデータベースの予約語だったりしませんか?

フィールド名を変更するか、""や``や[]などで括ると回避できるかもしれません。
これはデータベースごとに異なるので、マニュアルを当って下さい。

編集 削除
えーとね  2006-11-27 11:07:15  No: 24083  IP: 192.*.*.*

単純にSQL が間違っているという事も良くあります。
データベースに付属しているコマンドライン・ツールで、実行できるか確認して下さい。

編集 削除
初心者  2006-11-27 11:42:04  No: 24084  IP: 192.*.*.*

ご指摘いただいたように、Passwordを使わなかったら解決しました。
ありがとうございました。

編集 削除