何故データソースを手動で指定しないといけないのですか? – 固定ページ 2 – プログラミング – Home

何故データソースを手動で指定しないとい...
 
通知
すべてクリア

[解決済] 何故データソースを手動で指定しないといけないのですか?

固定ページ 2 / 2

PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

デバッガで動かしているなら、通常はカレントディレクトリはプロジェクトフォルダに
なります。特別なんか指定していれば、話は別ですけれど。
ですから、Debugの下においてもカレントディレクトリとはならないと思いますが。


返信引用
Takeshi
 Takeshi
(@Takeshi)
ゲスト
結合: 23年前
投稿: 83
Topic starter  

そうですね。Myprojectの直下に置いてました。
Debugには中間ファイルだけですね。
ただ、どちらにしても問題解決には至っていません。
ファイルを置いているディレクトリは関係無いようです。


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

> いや、ダイアログが指定を要求してくるのは(mdb)ではなく(dsn)なんです。
>
ちなみに、このdsnファイルの内容は、どうなっているのですか?


返信引用
Takeshi
 Takeshi
(@Takeshi)
ゲスト
結合: 23年前
投稿: 83
Topic starter  

毎度お世話になっております。

いやあ、なかなかうまく行きませんね。
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 も合っているはずなんですが・・・。


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

このdsnファイルを指定すると正しく動くわけですよね?
で、Open関数で渡している設定だとダメ。
違いはどんなことがありますか?

ドライバは同じですか?
指定しているmdbファイルは?
その他の設定はどうでしょう?

コンパネのODBCから「MS AccessDatabase」の設定と比較してみてください。


返信引用
Takeshi
 Takeshi
(@Takeshi)
ゲスト
結合: 23年前
投稿: 83
Topic starter  

お世話になっております。

そうですね、ダイアログ指定であれば正常に動き、
CDatabase OpenEx では有効にならないですね。

コントロールパネルの設定と違うところといえば、

コントロールパネルでは

Extended Ansi SQL = 0 というのがあります。

これは dsn ファイルにはありませんね。
逆に、 dsn ファイルには

UserCommitSync = Yes

DraverId = 25

DBQ = mdbのフルパス

という設定があります。それ以外は全く同じですね。

他にはどうやって調べればよいのでしょうか?


返信引用
Takeshi
 Takeshi
(@Takeshi)
ゲスト
結合: 23年前
投稿: 83
Topic starter  

毎度、お世話になっております。

ファイル DSNがおかしいと思い、コントロールパネルから新規に作成しました。
該当する Accessのファイル(*.mdb)を選択して[OK]すると、

一般エラー:DSNファイル 'F:\ ~(DSNファイルのフルパス) ' が無効です。

というエラーが出ます。これが原因なんでしょうか?
だとすれば対処はできるんでしょうか?


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

> 一般エラー:DSNファイル 'F:\ ~(DSNファイルのフルパス) ' が無効です。
>
何なんでしょうね、Fドライブは、何か特別なドライブなのでしょうか?

それはそうと、プログラムからDBQ=でmdbファイル名を指定するなら、
ファイルDSNの作成時にmdbを指定しなくても良いのではないでしょうか。


返信引用
Takeshi
 Takeshi
(@Takeshi)
ゲスト
結合: 23年前
投稿: 83
Topic starter  

お世話になっております。

F:ドライブはネットワークドライブです。

VC++の(dswファイル)も
Accessの(mdbファイル)も
データソースの(dsnファイル)も
ネットワークドライブ上にあります。

もちろん、VC++はローカルから起動していますが。
システム上何か問題がありますでしょうか?

DBQ でファイルを直接指定していたのは、ある方からアドバイスを頂いて
やってみただけです。今は DBQ は指定していません。

しかし、ファイルDSN を作成する時点で何かおかしいという事は、
VC++以前にシステムの問題なんですか?


返信引用
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 80
 

・・・
なぜ、解答が得られないのか判りませんか?

>DBQ でファイルを直接指定していたのは、ある方からアドバイスを頂いて
>やってみただけです。今は DBQ は指定していません。

とおっしゃっていますが、このスレをたてた時に貴方は、どのように書きましたか?
読み直してみましょう・・


返信引用
Takeshi
 Takeshi
(@Takeshi)
ゲスト
結合: 23年前
投稿: 83
Topic starter  

お世話になってます。

う ~ ん、つまりプログラムではなく、システム上の問題だから ですか?

ファイルそのものは正常。しかし、VC++が見に行ってくれない。
という事は、指定の方法とか、コントロールパネル等の設定ですか?

何故つかないのかはっきりとは分かりません。理由を教えて下さい。


返信引用
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 80
 

貴方の問題です

始めは、
>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ファイル)も
>ネットワークドライブ上にあります。

この情報も後からですか・・

このように条件がころころ変わっている(情報が足りていない?)状態では、
解答数が増え判りづらくなり解答をする気も起きなくなります。

サポートセンターと勘違いしていませんか?


返信引用
Takeshi
 Takeshi
(@Takeshi)
ゲスト
結合: 23年前
投稿: 83
Topic starter  

どうもすいませんでした。

問題解決ではありませんが、このスレッドは終了した方がいいですね。

後は自力で何とかします。


返信引用
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 80
 

>このように条件がころころ変わっている(情報が足りていない?)状態では、
>解答数が増え判りづらくなり解答をする気も起きなくなります。
>
>サポートセンターと勘違いしていませんか?

ちょっと書きすぎました m(_ _)m


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました