1

ヘディングがあまり意味をなさないことはわかっていますが、何が起こっているのかについてはまったくわかりません!

次のコードがあります。

Sub UpdateStatusReport()

    Try
        Dim oAccess As Access.Application
        oAccess = New Access.Application()

        oAccess.OpenCurrentDatabase("I:\GPS_Conversion\XY_Convert2.mdb", True)
        oAccess.DoCmd.SetWarnings(WarningsOn:=False)
        oAccess.DoCmd.OpenQuery("A1qryMt_FindMaxStatusReportID")
        oAccess.DoCmd.OpenQuery("A2qryUpd_ReduceMaxStatusReportID")
        oAccess.DoCmd.OpenQuery("A3qryMt_StatusReport")
        oAccess.DoCmd.SetWarnings(WarningsOn:=True)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(oAccess)
        oAccess = Nothing
        Console.WriteLine("updated table with live info")
    Catch ex As Exception
        Dim ex1 = ex.ToString
        My.Computer.FileSystem.WriteAllText("C:\logfile.txt", ex1, True)

    End Try

End Sub

以下をインポートします。

Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.DataRowExtensions
Imports System.Data.SqlClient
Imports System.ComponentModel
Imports Microsoft.Office.Interop
Imports ADODB

上記から得られるエラーは次のとおりです。

 System.Runtime.InteropServices.COMException (0x800A09C5): The OpenQuery action was canceled.
       at Microsoft.Office.Interop.Access.DoCmd.OpenQuery(Object QueryName, AcView View, AcOpenDataMode DataMode)
       at CurrentPositionHTMLCreate.Module1.UpdateStatusReport() in C:\IT3_New\Michael\CurrentPositionHTMLCreate\CurrentPositionHTMLCreate\Module1.vb:line 30
System.Runtime.InteropServices.COMException (0x800A09C5): The OpenQuery action was canceled.
       at Microsoft.Office.Interop.Access.DoCmd.OpenQuery(Object QueryName, AcView View, AcOpenDataMode DataMode)
       at CurrentPositionHTMLCreate.Module1.UpdateStatusReport() in C:\IT3_New\Michael\CurrentPositionHTMLCreate\CurrentPositionHTMLCreate\Module1.vb:line 30

これは30行目です:

 oAccess.DoCmd.OpenQuery("A1qryMt_FindMaxStatusReportID")

アクセスで一連の MAKETABLE クエリを呼び出す小さなサブです。

プログラムを書いたコンピューターでは問題なく動作しますが、他のコンピューターを使用すると、あらゆる種類の問題が発生します。アプリケーション全体から、機能しないものが見つかるまで、コードをゆっくりと分解して絞り込みました。

基本的に、これは slq サーバー上にある DBO から DB 内のテーブルを更新します。そのサーバーに直接アクセスすることはできません。これらのクエリを含むaccessDBを介してのみアクセスできます。

基本的に、バージョンの問題であるという結論に達しましたか? このマシンにはOffice 2007があり、試した他のほとんどのマシンは2000または2003になっているようです。私の問題。

これを行う別の方法はありますか?古いバージョンのアクセスで動作する可能性のある、私が書くことができる下位互換性のあるコードはありますか? ここで何を探しているのかよくわかりませんが、DBO からライブ データを取得して、このアプリケーションに使用するデータベースに更新できる方法が必要です。


*更新* *


したがって、この問題を解決するために多くの作業を行った後、私はそうすることができませんでした。最終的に更新をアクセスフォームに移動し、時計として使用されるネットワーク内のマシンで DB をバックグラウンドで実行しました。

どこかでバージョンの競合が発生しているように見えますが、どこで解決できないようです。

4

1 に答える 1

1

別のコンピューターで接続文字列が正しくないために、データベースが開かれていない可能性があります。たとえば、ファイルI:\GPS_Conversion\XY_Convert2.mdbがドライブq:にマップされているか、まったくマップされていない可能性があります。openステートメントの後、ステータスをチェックして、データベースが実際に開いているかどうかを確認します。開封に失敗してもエラーにならない場合があります。

于 2013-01-17T05:42:29.203 に答える