Firebird embeded オープンがキャンセルされる。

解決


ヤマダ  2008-10-29 02:16:13  No: 32381

実現したいこと
  組み込み系のDBを使用し(free lisence)アプリケーションを
  作りたいです。

質問内容
  firebird embededに添付されたとおりに.dllなどを配置し
  testアプリケーションを作成しています。
  
  self.OBDatabase.DatabaseName 
  := ChangeFileExt(Application.name,'.FDB')
  
  self.IBDatabase.params.add('USER "test"');
  self.IBDatabase.params.add('PASSWORD "masterkey"');
  self.IBDatabase.params.add('PAGE_SIZE',4096);
  
  self.IBDatabase.CreateDatabase; //.FDBファイルが作成される。

  その後
  
  self.OBDatabase.DatabaseName 
  := ChangeFileExt(Application.name,'.FDB');
  
  self.IBDatabase.params.values['USER']:='test';
  self.IBDatabase.params.values['PASSWORD']:='masterkey';        
  self.IBDatabase.open; 

  とするとOpenしたときに"ユーザの要求によりキャンセルされました。"
  と出力されています。

  何がダメなのでしょうか?
  良い関連Webペーじなどございましたらご教示ください?

開発環境
  windows 2000
  D7
  Firebird embeded v1.5

以上  宜しくお願い致します


igy  2008-10-29 02:30:27  No: 32382

>  self.IBDatabase.params.values['USER']:='test';
>  self.IBDatabase.params.values['PASSWORD']:='masterkey';

  self.IBDatabase.params.values['user_name']:='test';
  self.IBDatabase.params.values['password']:='masterkey';
にしたら、どうなりますか?


ヤマダ  2008-10-29 02:44:38  No: 32383

igyさん

ご返信ありがとうございます。

変更してやってみましたが

"ユーザの要求によりキャンセルされました"

とダイアログボックスで出力されてしまいました。


igy  2008-10-29 06:35:09  No: 32384

> self.IBDatabase.CreateDatabase; //.FDBファイルが作成される。

で、実際にデータベースのファイルは生成されていますか?

>  self.OBDatabase.DatabaseName 
>  := ChangeFileExt(Application.name,'.FDB')

で、“OBDatabase”の部分は、“IBDatabase”でなくてもよいのですか?
また、“Application.name” の部分は、“Application.ExeName”でなくてもよいのですか?


ヤマダ  2008-10-30 18:59:17  No: 32385

>igyさん
返信送れまして申し訳ないです。

、“OBDatabase”の部分は、“IBDatabase”でなくてもよいのですか?
また、“Application.name” の部分は、“Application.ExeName”

ご指摘のとおり間違っていました。
ただご指摘のとおりにやっても
"ユーザの要求によりキャンセルされました。"とでてしまいました。

FDBは作成されているのですが・・・・

ちなみにdelphi7を使っているのですがFireBirdはInterBase6がないと
動かないのでしょうか?


igy  2008-10-31 06:15:19  No: 32386

>ちなみにdelphi7を使っているのですがFireBirdはInterBase6がないと
>動かないのでしょうか?

Interbase6がなくても動くと思います。
# ただdelphi7付属のIBXは、Firebirdに正式に対応しているわけでは
# ないと思います。

あと、
 fbembed.dll は gds32.dll にリネームしていますか?

あと、

> self.IBDatabase.params.add('PAGE_SIZE',4096);

↑コンパイル時にエラーがでませんか?

>  self.IBDatabase.params.values['USER']:='test';
>  self.IBDatabase.params.values['PASSWORD']:='masterkey';

  self.IBDatabase.params.values['user_name']:='SYSDBA';
  self.IBDatabase.params.values['password']:='masterkey';
にしたら、どうなりますか?


TS  2008-10-31 07:56:33  No: 32387

参考に
http://dn.codegear.com/article/33775
ZeosLibを使ってみませんか。


ヤマダ  2008-10-31 10:27:15  No: 32388

Igyさん,TSさん

  ありがとうございます。

> fbembed.dll は gds32.dll にリネームしていますか?
  
  これはOKです。

> self.IBDatabase.params.add('PAGE_SIZE',4096);

↑コンパイル時にエラーがでませんか?

  失礼しました。
  self.IBDatabase.params.add('PAGE_SIZE 4096');
  が正でした。
  
>  self.IBDatabase.params.values['USER']:='test';
>  self.IBDatabase.params.values['PASSWORD']:='masterkey';
  

  self.IBDatabase.params.values['user_name']:='SYSDBA';
  self.IBDatabase.params.values['password']:='masterkey';
  にしたら、どうなりますか?
  
    同くダメでしたが英語版のdelphiを使用したら以下のようなメッセージ
    がでました。

  EIBClientError 
  Operation cancelled at user's request  

  EIBClientErrorをHelpでみると

  an EIBClientError is raised when a component can't access the       database because it does not have an IBDatabase component
  specified, attempts to edit a read-only dataset, tries to execute 
  an empty query, and so on.

  設定不足なのかもしれません。無知ですね。私。
  もう少しぐぐってみます。:-(

  TSさん

  ご教授ありがとうございます。
  使用してみます!:-)


ヤマダ  2008-10-31 10:57:17  No: 32389

Igyさん解決しました!

TIBDatabaseだけしか設定していなかったのが悪かったみたいです。
TIBTransaction、TIBSQLを設定しましたらうまくいきました!
本当に感謝です。:-)

  object IBDatabase1: TIBDatabase
    DatabaseName = 'C:\test\TEST.GDS'
    LoginPrompt = False
    DefaultTransaction = IBTransaction1
    IdleTimer = 0
    SQLDialect = 3
    TraceFlags = []
    Left = 128
    Top = 88
  end
  object IBTransaction1: TIBTransaction
    Active = False
    DefaultDatabase = IBDatabase1
    AutoStopAction = saNone
    Left = 216
    Top = 64
  end
  object IBSQL1: TIBSQL
    Database = IBDatabase1
    ParamCheck = True
    Transaction = IBTransaction1
    Left = 176
    Top = 152
  end


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

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






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