Database Engine エラー が出てしまうのですが?

解決


万年中年  2004-11-02 04:40:03  No: 11604

Borland Database Engine エラー  $2109 初期化中にエラー

Aパソコン  \d\work\Pay.exe  pay.db等(今作成中のすべて入っています。)
                     ↑          
                     |
Bパソコン      ___|  ファイルの共有でつながっています。

  上記のようにパソコンをハブでつないで検索(今作成中)プログラムを
立ち上げましたら,Aパソコンでは何の問題も無くプログラムが動きます。
これは当然と思われます。
Bパソコンでは上記のエラーメッセージがでます。
プログラムはBでも立ち上がりますが,Pay.db(データ)がない状態です。

この意味は推測できますが、どうしたら回避できるのでしょうか?
ヘルプをみてもどこがどうやらわからない状態です。

申し訳ありませんがご存知でしたらご教示願いたいのですが。。。


HOta  2004-11-02 05:28:44  No: 11605

データーベースへの接続は何を使っているのでしょうか?
BDEでしたら、そのAlias等はどのようになっているのでしょうか?
このあたりが分からないとどうしようもありません。


@っしー  2004-11-02 18:21:44  No: 11606

BDE - Paradox7
TTable-TDatasource-TDBGridの構成で、データベースファイルをファイル指定(エイリアスはなし)して試験的にアプリを作ってみました。
そして、MicrosoftNetwork経由でアプリ起動してみましたが、問題ないですし、ネットワークドライブも割り当てて実行してみましたが、問題なしでした。

ただ、この構成ですと、Aパソコンでデータベースファイルを使用している状態で、Bパソコンからアクセスすると保証は出来ないと思うのですが、、、

TSessionを置いて、NetDirの設定等が必要になるのではないでしょうか?


HOta  2004-11-02 20:12:27  No: 11607

多分ファイル共有でしたら、@っしーさんのおっしゃるように、
NetDirの設定が必要です。
ただ、この場合、Bパソコンからつながらないのは、BDEの設定で回避できると思います。
プログラムで、TTableかTQueryかTDataBaseのDataBaseプロパティに設定しているAliasがBパソコンでAパソコンのPay.dbのあるディレクトリを指しているかどうかが問題です。


@っしー  2004-11-02 20:28:36  No: 11608

HOtaさんのご指摘に追加して、、、

データベースファイルをフルパス指定しているとか。

EXEと同じ場所にデータベースファイルがあるんですから、データベースファイル名のみ指定したら走りませんか?
もしくは、"./pay.db"(ダブルクォーテーションは除く)にするとかはどうでしょう?


HOta  2004-11-02 20:59:14  No: 11609

ファイル共有ですから、フルパス指定でするよりも、BDEのAliasを使って、
それぞれのパソコンで同じ名前でパソコンAのデーターファイルを指すように
すれば、いけます。
プログラムでは、TTableかTQueryかTDataBaseのDataBaseプロパティに
Aliasを設定します。


@っしー  2004-11-02 21:20:48  No: 11610

また憶測ですが、、、

BパソコンからAパソコンのPay.exeにはどのようにアクセスされてるのでしょうか?  >万年中年さん

BパソコンにAパソコンのPay.exeのエイリアスを作成されてアクセスされているのであれば、エイリアスのプロパティを開いて、作業ディレクトリを確認してみてください。


万年中年  2004-11-02 22:11:11  No: 11611

少し難しくなると混乱してしまいます。

答えを頂戴しておいて申し訳ありませんが,
@っしーさんの書かれました,TSession NetDir  の設定のことがわかりません。

エイリアスは設定していません。
DatabaseName  のところは空白です。
Query1.DatabaseName := ExtractFilePath(Application.ExeName);
データベースを指定しています。(?)

まず、

1: Bのパソコンにショートカットキーを作りそれを実行してみました。
1: BからAのフォルダーに入りプログラムを実行してみました。
最初に掲載しました、エラー表示が出まして、
どちらもデータのない状態でプログラムは立ち上がります。

    現在は同じやり方で
  AパソコンのフォルダーにExcellで検索マクロを二つ作り
AとBのパソコンでそれぞれショートカットキーを画面のトップに作り検索マクロを
動かしています。
これと同じようにできるんじゃないかと思ったのですが,。。

HOta さんの書かれた、
BDEのAliasを使って、それぞれのパソコンで同じ名前でパソコンAのデーターファイル
を指すようにすれば、いけます。
プログラムでは、TTableかTQueryかTDataBaseのDataBaseプロパティに
Aliasを設定します。
これをやってみます。


HOta  2004-11-02 22:45:07  No: 11612

万年中年さん、こんにちは。
TSession NetDir
はこれから行おうとしている、ファイル共有におけるシステムを
作成しようとすると、パソコンAからレコードを変更しようとしていると、
同じレコードをパソコンBからは変更できなくする機能です。
これをしていないと、おかしなことになり、プログラムが動作しなくなります。

方法は、まずマニュアルで調べてみて下さい。それから質問してみて下さい。


@っしー  2004-11-02 23:07:11  No: 11613

万年中年さん

FormのCreate時にSession.NetFileDirを設定してから、DataSetをOpenしてみてください。

procedure TForm1.FormCreate(Sender: TObject);
begin
  Session.NetFileDir := '\\{サーバ名}\{データベースのPath}';
  
  Query1.Open;
end;
//タイプミスがあれば適宜修正してください。  m(__)m


万年中年  2004-11-03 04:56:07  No: 11614

いろいろとご面倒かけます。
TSession NetDir  の意味はわかりました。調べてみます。

こんな考えだったのですが?
まちがっているのでしょうか?

1:Aパソコンのフォルダーにプログラムとデータを入れて
2:BパソコンからはそのAパソコンの実行ファイルのショートカットキー
    でAパソコンのプログラムを実行する。

それが・・・
こんな風に感じてきました。
Bのパソコンの場合はプログラムをBパソコンに作りAにあるデータを利用する。
プログラムをAとBにおいてそれぞれエイリアス等を設定する。
パソコンの数だけプログラムを作成するのでしょうか?

なんかトンチンカンな質問で申し訳ありません。

家に調度2台のパソコンがありますの会社と同じようにハブでつないで実験してみます。


HOta  2004-11-03 05:40:54  No: 11615

万年中年さん、こんにちは

データーファイルを、ネットワークのファイル共有で使う場合です。
BパソコンからAパソコンの実行ファイルを実行する場合、
そのままだと、データーファイルの位置が違ってきます。
実行ファイルは、それぞれのパソコンのBDE設定を調べます。
実行するのはAパソコンの実行ファイルでも、環境はそれぞれの
パソコンになりますので、Aパソコンから見たデーターパスが
C:\プログラムパス\データーパス
でも他のパソコンから見れば、
Aパソコン\\C:\プログラムパス\データーパス
になります。このあたりを吸収するのがBDEになります。
一般的な使い方は、それぞれのパソコンにインストールシルドで
インストールします。


万年中年  2004-11-03 17:51:00  No: 11616

HOta  さん
>Aパソコン\\C:\プログラムパス\データーパス
>になります。このあたりを吸収するのがBDEになります。
>一般的な使い方は、それぞれのパソコンにインストールシルドで
>インストールします。

わかりやすい解説ありがとうございます。
上記のことがわかっただけでもおお助かりであります。
会社でのパソコンはまだ解決していませんけれども、
なんとなくどういうことかがわかりましたので時間をかけて
自分なりにやってみますので一応解決としていただきます。
無理でしたらもう一度新規発言をさせていただきます。
ありがとうございました。


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

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






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