ヘディングがあまり意味をなさないことはわかっていますが、何が起こっているのかについてはまったくわかりません!
次のコードがあります。
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 をバックグラウンドで実行しました。
どこかでバージョンの競合が発生しているように見えますが、どこで解決できないようです。