デバッガで動かしているなら、通常はカレントディレクトリはプロジェクトフォルダに
なります。特別なんか指定していれば、話は別ですけれど。
ですから、Debugの下においてもカレントディレクトリとはならないと思いますが。
そうですね。Myprojectの直下に置いてました。
Debugには中間ファイルだけですね。
ただ、どちらにしても問題解決には至っていません。
ファイルを置いているディレクトリは関係無いようです。
> いや、ダイアログが指定を要求してくるのは(mdb)ではなく(dsn)なんです。
>
ちなみに、このdsnファイルの内容は、どうなっているのですか?
毎度お世話になっております。
いやあ、なかなかうまく行きませんね。
dsnファイルの内容は以下通りです。
--------------------------------
[ODBC]
DRIVER=Microsoft Access Driver (*.mdb)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=25
DefaultDir=F:\VC++\Myproject
DBQ=F:\VC++\Myproject\MyDatabase.mdb
--------------------------------
どこかおかしいでしょうか?
DefaultDir も DBQ も合っているはずなんですが・・・。
このdsnファイルを指定すると正しく動くわけですよね?
で、Open関数で渡している設定だとダメ。
違いはどんなことがありますか?
ドライバは同じですか?
指定しているmdbファイルは?
その他の設定はどうでしょう?
コンパネのODBCから「MS AccessDatabase」の設定と比較してみてください。
お世話になっております。
そうですね、ダイアログ指定であれば正常に動き、
CDatabase OpenEx では有効にならないですね。
コントロールパネルの設定と違うところといえば、
コントロールパネルでは
Extended Ansi SQL = 0 というのがあります。
これは dsn ファイルにはありませんね。
逆に、 dsn ファイルには
UserCommitSync = Yes
DraverId = 25
DBQ = mdbのフルパス
という設定があります。それ以外は全く同じですね。
他にはどうやって調べればよいのでしょうか?
毎度、お世話になっております。
ファイル DSNがおかしいと思い、コントロールパネルから新規に作成しました。
該当する Accessのファイル(*.mdb)を選択して[OK]すると、
一般エラー:DSNファイル 'F:\ ~(DSNファイルのフルパス) ' が無効です。
というエラーが出ます。これが原因なんでしょうか?
だとすれば対処はできるんでしょうか?
> 一般エラー:DSNファイル 'F:\ ~(DSNファイルのフルパス) ' が無効です。
>
何なんでしょうね、Fドライブは、何か特別なドライブなのでしょうか?
それはそうと、プログラムからDBQ=でmdbファイル名を指定するなら、
ファイルDSNの作成時にmdbを指定しなくても良いのではないでしょうか。
お世話になっております。
F:ドライブはネットワークドライブです。
VC++の(dswファイル)も
Accessの(mdbファイル)も
データソースの(dsnファイル)も
ネットワークドライブ上にあります。
もちろん、VC++はローカルから起動していますが。
システム上何か問題がありますでしょうか?
DBQ でファイルを直接指定していたのは、ある方からアドバイスを頂いて
やってみただけです。今は DBQ は指定していません。
しかし、ファイルDSN を作成する時点で何かおかしいという事は、
VC++以前にシステムの問題なんですか?
・・・
なぜ、解答が得られないのか判りませんか?
>DBQ でファイルを直接指定していたのは、ある方からアドバイスを頂いて
>やってみただけです。今は DBQ は指定していません。
とおっしゃっていますが、このスレをたてた時に貴方は、どのように書きましたか?
読み直してみましょう・・
お世話になってます。
う ~ ん、つまりプログラムではなく、システム上の問題だから ですか?
ファイルそのものは正常。しかし、VC++が見に行ってくれない。
という事は、指定の方法とか、コントロールパネル等の設定ですか?
何故つかないのかはっきりとは分かりません。理由を教えて下さい。
貴方の問題です
始めは、
>MyDatabase_DB.Open
>(NULL,FALSE,TRUE,ODBC;DSN=MS AccessDatabase;DSQ=my.mdb,FALSE);
このようなことをやっていたのに、
途中で
>My_DB.OpenEx
>(DSN=MS Access Database;DBQ=F:\VC++\My.mdb,CDatabase::openReadOnly);
こうなって
最後には、
>DBQ でファイルを直接指定していたのは、ある方からアドバイスを頂いて
>やってみただけです。今は DBQ は指定していません。
こうなっています
さらに
>F:ドライブはネットワークドライブです。
>
>VC++の(dswファイル)も
>Accessの(mdbファイル)も
>データソースの(dsnファイル)も
>ネットワークドライブ上にあります。
この情報も後からですか・・
このように条件がころころ変わっている(情報が足りていない?)状態では、
解答数が増え判りづらくなり解答をする気も起きなくなります。
サポートセンターと勘違いしていませんか?
どうもすいませんでした。
問題解決ではありませんが、このスレッドは終了した方がいいですね。
後は自力で何とかします。
>このように条件がころころ変わっている(情報が足りていない?)状態では、
>解答数が増え判りづらくなり解答をする気も起きなくなります。
>
>サポートセンターと勘違いしていませんか?
ちょっと書きすぎました m(_ _)m