フォームのテキストエリアへのユーザの入力内容と、データベース内の登録データを比べ整合性を取り、登録内容と一緒だったら、データベース内のデータをフォームに表示する、ということは可能ですか?
可能なら、具体的なやり方を教えてもらえると有り難いです。
ログインフォームをイメージしてもらえると、分かりやすいと思います。
開発環境はDelphi professionalです。
色々調べてはみたんですが、どうしても見つからなく、掲示板に投稿しました。
上の質問の追加です。
開発環境はDelphi3.1 professionalです。
> 可能ですか?
可能です。
データベースやDelphi のバージョンによって
使用するコンポーネントは異なりますが
基本的にはQuery 系のコンポーネントでSELECT 文を発行して
データが見つかったら、次の処理(データを表示)を行います。
初心者との事ですが、SQL の知識はお持ちなのでしょうか?
早速の書き込み、ありがとうございます。
SQLの知識は、SELECT文など基本的な使い方は分かってます。
ただ、Query系のコンポーネントでSELECT分を発行は出来るのですが、
テキスト入力の内容とデータベースのフィールドの内容を比べると、
エラーが出てしまいます。
例えば、
テキスト入力の内容ですと、
Form1.Edit1.Text
データベースのフィールド中身ですと、
Customer.Password
「=」で結ぶとエラーになる、といった状況です。
select Name from Customer where Password = Form1.Edit1.Text;
上記のSQL文ではエラーになります。
こういう状況の場合、テキスト入力の内容を、
SQLで記述出来るよう工夫したりする必要があるのでしょうか?
> テキスト入力の内容を、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;
書き込みありがとうございます。
上記の方法で試してみたのですが、
「Project1.exeがEDBEngineErrorクラスの例外を生成しました。
'キーワードの使用が無効です'
キーワード:Password」
とエラーが出てしまいます。
このエラーは「Password」というフィールドが無いということなのでしょうか?
「Password」というフィールドは確かにあり、このエラーを解決する方法が
分かりません。
お手数ですが、よろしくお願いします。
Password がデータベースの予約語だったりしませんか?
フィールド名を変更するか、""や``や[]などで括ると回避できるかもしれません。
これはデータベースごとに異なるので、マニュアルを当って下さい。
単純にSQL が間違っているという事も良くあります。
データベースに付属しているコマンドライン・ツールで、実行できるか確認して下さい。
ご指摘いただいたように、Passwordを使わなかったら解決しました。
ありがとうございました。
ツイート | ![]() |