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

解決


初心者  2006-11-27 08:36:35  No: 24076

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

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


初心者  2006-11-27 08:43:45  No: 24077

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


えーとね  2006-11-27 08:48:33  No: 24078

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

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

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


初心者  2006-11-27 10:14:10  No: 24079

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


えーとね  2006-11-27 15:08:04  No: 24080

> テキスト入力の内容を、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 18:42:35  No: 24081

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

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

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

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


えーとね  2006-11-27 19:50:08  No: 24082

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

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


えーとね  2006-11-27 20:07:15  No: 24083

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


初心者  2006-11-27 20:42:04  No: 24084

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


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

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






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