現在、ODBC-BDE経由でデータベースにアクセスする。
プログラムを作ろうと思っているのですが、
データーベースのログイン画面が出てきてしまいます。
たしか、データベース・コンポーネントのParamsプロパティに
USER NAME=scott
PASSWORD=tiger
を設定すれば、よかったと記憶しているのですが、
これだけではなさそうです。
何方か、データベースへのログイン画面を出さない方法を知っていらっしゃる方よろしくおねがいします
LoginPrompt:=False; // ?
ネットでけんさくしたら下記のプログラムが乗っていました
try
with Database1 do
begin
AliasName := 'BDEで設定したエリアス';
DatabaseName := 'TQueryやTTableで用いるDatabaseName';
LoginPrompt := False;
Params.Clear;
Params.Add('USERNAME=scott');
Params.Add('PASSWORD=tiger');
Open;
end; {end with Database1}
except
MessageDlg('データベースの接続に失敗しました。', mtError, [mbOk], 0);
end;
しかし、tryでエラーがでてうまくゆきませんでした。delphi6をしようしてます。何か意見ありましたらよろしくおねがいします。
どんなエラーでしょう?
Params.Add('USERNAME=scott');
Params.Add('USER NAME=scott'); // ?
早速の返答ありがとうございます。大変はずかしいエラーなのですが[[エラー] Unit1.pas(117): except または finally が必要です]と表示されます。なので上記のプログラムではうまくいかないと思われます。 どのようなプロフラムに変更したらよいのでしょうか? ご意見お待ちしております
コンパイルエラーですよね?
試したものをそのままコピペします。エラーはありません。
try
with Database1 do begin
AliasName := 'ABC';
DatabaseName := 'DEF';
LoginPrompt := False;
Params.Clear;
Params.Add('USER NAME=XYZ');
Params.Add('PASSWORD=password');
Open;
end;
except
MessageDlg('Connection Failed !!',mtError,[mbOK],0);
end;
そちらのコードと何か違いがありませんか?特にexceptのあたりで。
早速のご返答ありがとうございます。上記ソースをコピペさせていただきました。[エラー] Unit1.pas(113): 宣言 が必要な場所に 'TRY' があります」とコンパイルエラー表示がでます。 ご迷惑かけてもうしわけございません。ご意見よろしくおねがいいたします。
先ほどのコードをコピペした場所の問題かと思います。
コードあげてもらえますか?
procedure TForm1.FormCreate(Sender: TObject);
try
with Database1 do begin
AliasName := 'db2';
DatabaseName := 'db2';
LoginPrompt := False;
Params.Clear;
Params.Add('USER NAME=scott');
Params.Add('PASSWORD=tiger');
Table1.Open;
end;
except
MessageDlg('Connection Failed !!',mtError,[mbOK],0);
end;
end;
コードは上記のようになります。よろしくおねぎいたします。
procedure TForm1.FormCreate(Sender: TObject);
begin // <--です
try
with Database1 do begin
AliasName := 'db2';
DatabaseName := 'db2';
LoginPrompt := False;
Params.Clear;
Params.Add('USER NAME=scott');
Params.Add('PASSWORD=tiger');
Table1.Open;
end;
except
MessageDlg('Connection Failed !!',mtError,[mbOK],0);
end;
end;
毎度すみませんありあがとうございました。上記ソースでコンパイルは通ったのですが、データベースへのログイン画面が表示されてしまいます。たびたびすみませんよろしくおねがいいたします。
状況がよく見えないのですが、
procedure TForm1.FormCreate(Sender: TObject);
begin
try
with Database1 do begin
AliasName := 'db2';
DatabaseName := 'db2';
LoginPrompt := False;
Params.Clear;
Params.Add('USER NAME=scott');
Params.Add('PASSWORD=tiger');
ShowMessage('Step1');
Table1.Open; //?
ShowMessage('Step2');
end;
except
MessageDlg('Connection Failed !!',mtError,[mbOK],0);
end;
end;
として、どうなるでしょう?
ご返答ありがとうございます。ネットで検索したところ、「データベースへのログイン画面を出さない方法」として上記のソースが載っていたので、コピーしただけです。addでユーザーネームとパスワードに勝手に挿入してくれるプログラムだと予想していましたが、最近はじめたばかりで勉強不足でもうしわけございません。上記のプログラムではデータベースへのログイン画面は表示されてしまうので、表示させないためには、どのようなコードになるのでしょうか?
procedure TForm1.Create(Sender: TObject);
begin
try
with Database1 do begin
AliasName := 'ABC';
DatabaseName := 'DEF';
LoginPrompt := False;
Params.Clear;
Params.Add('USER NAME=XYZ');
Params.Add('PASSWORD=password');
Open; // *
end;
except
MessageDlg('Connection Failed !!',mtError,[mbOK],0);
end;
end;
先ほどもあげたコードなのですが。。。
記述されているエリアスやユーザー名/パスワードで
接続したいデータベース(DB2?Oracle?)に手動で
接続は出来てるんですよね?
データベースはAccessを使用しています。ODBCで手動では接続できます。上記コードをコピペさせていただいたんですが、コンパイルはとおるのですがログイン画面が表示されてしまいます。他に設定しなけばいけない部分があるのでしょうか?
Access/ODBCですか。
詳しくないので、ごめんなさい。
http://t-sakamoto.hp.infoseek.co.jp/D00300.html
の第5回か第6回あたりを見ていただくと非常に参考になると思います。
図版が多いので重いですが、丁寧に説明されています。
LoginPromptの記述もあったはずです。
?さんありがとうございます。毎回丁寧な返答感謝してます。自分の勉強不足にもかかわらず丁寧な返答たすかりました。上記ホームページ昨日閲覧してみたのですが、ログインの画面については触れていないようです。またなにかありましたらご意見お願い致します。今までありがとうございました。
きんたろうさん
お役に立てず申し訳ありませんでした。
では、またいずれの機会に。
?さんいろいろ助かりました。感謝しています。又機械ありましたらよろしくお願い致します
『dBase』表記の部分を『アクセス』に変えて
http://www.borland.co.jp/qanda/delphi/d0000887.html
を参考にして下さい。
ポイントは
>オプションの,[ログインプロンプトを出す(L)]をチェックを外します。
の部分です。これでログインプロンプトが出なくなります。それと
TDatabaseの設定で
>Database をクリックして,[ドライバ名]の右下矢印を押して,BDE 環境
>設定で指定した BDE ドライバー名を選択します。
とありますが、なぜかBDE ドライバーでうまくいかないとき
(TTable の TableNameでBDE10013エラーが出る)
は[ドライバ名]ではなく[エリアス名]に直接ODBCドライバーを指定する
とうまくいく場合があります。
ご参考まで・・・。
TDataBaseの
LoginPrompt:=False;
は試されましたか?
DataBase1の設定をしていますが、毎回設定先が変わるのでしょうか?
一定のデーターベースならば、プロパティの設定でよいと思いますが、いかがでしょうか?
ツイート | ![]() |