C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 119 を表示中)
■69596 / )  Re[5]: ネットワーク越しのショートカットEXEの起動について
□投稿者/ G (10回)-(2014/01/10(Fri) 17:08:17)
2014/01/10(Fri) 17:09:32 編集(投稿者)

魔界の仮面弁士 さん 回答ありがとうございます。

No69594 (魔界の仮面弁士 さん) に返信
> ■No69588 (G さん) に返信
>>ネットワーク管理者等に確認したところ 実行ユーザは、Adminの権限があるので問題ないそうです。
> ネットワーク権限があることは分かりましたが、それはもしかして、
> 管理者権限が無いと動かないようなアプリになっている、ということなのでしょうか。
>
> Vista 以降の OS では、UAC の働きにより、
>  ・%SystemRoot%  … C:\
>  ・%ProgramFiles% … C:\Program Files
>  ・HKEY_LOCAL_MACHINE\Software
> などへの書き込みが仮想化されており、実際とは異なる場所が操作されたりします。
> こうした場所への書き込み(iniなど)があると、たとえ管理者ユーザーで
> あったとしても影響があります。
>
> EXE を右クリックして、管理者モードにて実行した場合に、
> 動作に差が生じるかも確認した方が良いかもしれません。
>
管理者モードで起動してもエラーが発生します。
>
> >> ・exe自体をclientに持ってきた場合(動作環境A)、処理は正常に行われる。
>>上記処理もエラーが発生しました。
> 環境1 では、ローカル実行できるけれども、ネットワーク上の EXE からは実行できない状態。
> 環境2 では、EXE がローカルでもネットワーク上でも、いずれも正常動作していない、ということですね?
>
はい。
>
>>また、Oracleへの接続もありました。
> 何の話でしょうか? Access ではなく、突然 Oracle という言葉が出てきましたが…。
>
最初の投稿時には見つからなかった ドキュメントがその後みつかり、
それベースで oracleへの接続が分かりました。

このアプリが動いてるPCには、odbcの設定が行われていたことを確認しています。

> Oracle Database も併用しているとしたら、それはどうやって接続していますか?
> DAO の ODBCDirect なのか、パススルークエリーなのか、あるいは ODBC リンクテーブルなのか、
> それとも DAO とは無関係に、別途 oo4o や ADO や RDO などで接続しているのか。
>
>
> 環境 2が Win7x64 で、Oracle Client あるいは ODBC Dirver も 64bit 版しか入っていなかった場合、
> 64bit Access からは繋がりますが、VB6 や 32bit Access からは繋がらない、ということはありますね。
>
>
win7 / odbc 32bitです。

>
> >> エラー内容:エラーです。処理を中断します(ユーザメッセージ)
> このエラーが、不正データ検出などのための、意図的な論理エラーなのか、
> あるいは VB ランタイムが発しているものなのか、DAO/JET が発しているものなのか、
> Oracle 関連のエラーなのかはわかりますか?
>
> 発生元が分からないのであれば、まずはそれが、何のエラーなのかを特定する作業が必要でしょう。
> いわゆる「Err.Source」「Err.Number」「Err.Description」の調査です。
>
> VB6 なり VBScript なりで、mdb を開くようなコードを書いて、
> それを実行してみた場合にも、何らかのエラーになりますか?
>
> 実験コードで動くのであれば、実際には、mdb は直接関係ないという可能性もあります。
> (ini ファイルやレジストリの設定ミスなど)
>
>
>>Dim dblocal As DAO.Database
>>Set dblocal = Workspaces(0).OpenDatabase(ローカルパス指定)
> DBEngine の初期化はせず、暗黙の Global object を操作するタイプのコードですね。
> OpenDatabase の第2引数以降は未指定なのですね?
>
>
>>dblocal.OpenRecordse("HOGE",1)
> 『OpenRecordse「t」』の間違いとは思いますが、
> 何故にマジックナンバー 1 が…。dbOpenTable を使いましょう。(^_^;
>
>
>>ここで 3011/3078エラーが発生していると思うのです。
> 「3011/3078エラー」とは何のことですか? エラー番号まで分かっていたのでしょうか。
> そういう重要な情報は最初に出してほしいです…。
>
> 手持ちの Access 2010 で、
>  Debug.Print AccessError(3011)
>  Debug.Print AccessError(3078)
> を確認してみました。
>
> 3011 の方は、
> ・The Microsoft Jet database engine could not find the object <name>. Make sure the object exists and that you spell its name and the path name correctly.
> ・オブジェクト '<オブジェクト名>' が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。'<オブジェクト名>' がローカル オブジェクトでない場合は、ネットワークの接続を確認するか、サーバー管理者に問い合わせてください。
>
> 3078 の方は、
> ・The Microsoft Jet database engine cannot find the input table or query <name>. Make sure it exists and that its name is spelled correctly.
> ・入力テーブルまたはクエリ '<クエリ名>' が見つかりませんでした。そのテーブルやクエリが存在していること、または名前が正しいことを確認してください。
> ですね。
>
> 誤って、別の mdb を開いているという可能性はありませんか?

以下の実験コードで 今回の3011エラーが出ることが判明しました。


Public rdoConnect As rdoConnection
Dim dblocal As DAO.Database

'sqlは select * from HOGE
set rdoResult = rdoConnect.OpenResultset(sql, rdOpenForwardOnly + rdOpenStatic, rdConcurReadOnly)

If Err.Number = 0 Then
Set dblocal = Workspaces(0).OpenDatabase("C:\\TEST.mdb") '第二引数は指定なし
Workspaces(0).BeginTrans
dblocal.OpenRecordset("HOGE", dbOpenTable)
if Err.Number > 0 then
'ここで 3011エラーが発生

WinXP上では エラーは 発生しなかったのですが、
win7上でエラーが発生します。

引き続き実験コードで 調査を行っています。
返信 編集キー/


管理者用

- Child Tree -