Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AccessDB运行MAKETABLE查询的vb.NET应用程序无法在其他机器上运行。错误没有意义。可能是访问版本差异问题?_Vb.net - Fatal编程技术网

使用AccessDB运行MAKETABLE查询的vb.NET应用程序无法在其他机器上运行。错误没有意义。可能是访问版本差异问题?

使用AccessDB运行MAKETABLE查询的vb.NET应用程序无法在其他机器上运行。错误没有意义。可能是访问版本差异问题?,vb.net,Vb.net,我知道我的标题没有多大意义,但我完全不知道发生了什么 我有以下代码: Sub UpdateStatusReport() Try Dim oAccess As Access.Application oAccess = New Access.Application() oAccess.OpenCurrentDatabase("I:\GPS_Conversion\XY_Convert2.mdb", True) oAccess.

我知道我的标题没有多大意义,但我完全不知道发生了什么

我有以下代码:

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")
它是在access中调用一系列MAKETABLE查询的一个小子类

在我编写程序的计算机上,它工作得很好,但当我使用任何其他计算机时,我会遇到各种各样的问题。我通过慢慢分解代码缩小了范围,直到我从整个应用程序中发现了什么不起作用

基本上,这会从slq服务器上的DBO更新数据库中的表。我无法直接访问该服务器,我只能通过accessDB访问它,其中包含这些查询

基本上,我得出的结论是,这是一个版本问题?看起来我在这台机器上安装了Office2007,我试过的大多数其他机器都安装了2000或2003。但我在这些机器上安装了“MicrosoftAccess数据库引擎2010可再发行版”,我认为这可能是问题所在,但它并没有解决我的问题

还有别的办法吗?我是否可以编写一些向后兼容的代码,使其在旧版本的access中可用?我不确定我在这里寻找什么,但我需要一种方法,能够从DBO获取实时数据,并将其更新到我用于此应用程序的数据库中


**更新**


因此,在尝试解决这个问题的大量工作之后,我无法做到这一点,我最终将更新移动到一个访问表单中,并让数据库在网络中用作时钟的机器上后台运行


似乎在某个地方发生了版本冲突,但我似乎无法确定发生在何处。

可能是因为不同计算机上的连接字符串不正确,数据库无法打开。例如,文件
I:\GPS\u Conversion\XY\u Convert2.mdb
可能映射到驱动器q:或根本不映射。在open语句之后,检查状态以查看数据库是否真正打开。如果无法打开,则可能不会生成错误。

可能是由于不同计算机上的连接字符串不正确,导致数据库无法打开。例如,文件
I:\GPS\u Conversion\XY\u Convert2.mdb
可能映射到驱动器q:或根本不映射。在open语句之后,检查状态以查看数据库是否真正打开。如果无法打开,它可能不会生成错误。

是否有任何异常处理?如果是这样,您可能会收到一条有意义的错误消息,而不必求助于神秘的事件日志条目。还有,它在什么时候会失败?您尚未发布任何故障发生位置的指示。您包含的少量代码包含对
I:
驱动器上文件夹的硬编码路径引用-该驱动器和目录是否存在于另一台计算机上?数据库文件是否在该目录中?你漏掉了一大堆可能帮助我们解决这个问题的信息。好的,我会尽力回答你的问题。我还没有加入任何异常处理,但我现在正在加入一些。它似乎在第一行“Dim oAccess As Access.Application”失败了,但我会确认这一点I:'是一个网络驱动器,用于存储accessDB。我知道它工作得很好,因为我可以通过应用程序的其余部分访问它。请编辑您的问题并在那里添加其他信息,而不是在评论中,人们可以在阅读您的问题时看到这些信息。这会增加你得到帮助的机会。您还可以正确设置格式,使其可读,但在注释中很难做到这一点。:-)我更新了更多有意义的错误。你有任何异常处理吗?如果是这样,您可能会收到一条有意义的错误消息,而不必求助于神秘的事件日志条目。还有,它在什么时候会失败?您尚未发布任何故障发生位置的指示。您包含的少量代码包含对
I:
驱动器上文件夹的硬编码路径引用-该驱动器和目录是否存在于另一台计算机上?数据库文件是否在该目录中?你漏掉了一大堆可能帮助我们解决这个问题的信息。好的,我会尽力回答你的问题。我还没有加入任何异常处理,但我现在正在加入一些。它似乎在第一行“Dim oAccess As Access.Application”失败了,但我会确认这一点I:'是一个网络驱动器,用于存储accessDB。我知道它工作得很好,因为我可以通过应用程序的其余部分访问它。请编辑您的问题并在那里添加其他信息,而不是在评论中,人们可以在阅读您的问题时看到这些信息。这会增加你得到帮助的机会。您还可以正确设置格式,使其可读,但在注释中很难做到这一点。:-)我更新了更多有意义的错误。我检查了数据库是否打开,似乎一切都很好。网络中的所有计算机在其主驱动器之外的所有驱动器上都具有相同的映射。这是相当令人困惑的:SIve隔离了连接,似乎正在打开db。我也在代码的另一部分连接到db,没有问题,当我连接到make表时,它似乎不起作用。我检查了db是否正在打开,似乎一切都很好。网络中的所有计算机在其主驱动器之外的所有驱动器上都具有相同的映射。这是相当令人困惑的:SIve隔离了连接,似乎正在打开db。我也在代码的另一部分连接到db,没有问题,只是连接时它似乎不起作用