升级Access 2000到2010然后2016 VB问题

时间:2017-06-25 03:42:57

标签: ms-access ms-access-2010 ms-access-2016

请帮助...我已成功从Access 2000升级到2010然后再到2016而没有编译错误但是我在VB代码中的表单中有一个exe文件,它不再运行或发送错误信息。该项目是一个地磅,并且已经在2000年的访问中运行了15年或更长时间,并对设计进行了许多更改,其中exe文件捕获了地磅和信号中的数据。框并将其发送到我的表单。此exe不再适用于Access 2010(升级期间的程序之间)或Access 2016中。这对项目至关重要,我不再拥有VB中的原始代码或计算机上的VB副本,尽管我确实有复制到原始程序员留下的文本文件中。任何人都可以告诉我为什么Access 2016不承认这个exe。是否需要点击参考?我迷路了。

代码是

Private Sub Form_Load() 
    On Error GoTo Err_Form1 
    Select Case strDocName 
    Case "GetGrossWeight" 
       Set objFrmCtrl = Forms!ConsignmentsIN.GrossWeight
       Warning.Caption = "Get Gross Weight In"   
    Case "GetTareWeight"
       Set objFrmCtrl = Forms!ConsignmentsContractIN.TareWeight 
       Warning.Caption = "Get Tare Weight In" 
    Case "GetGrossWeightcontract" 
       Set objFrmCtrl = Forms!ConsignmentsContract.GrossWeight
       Warning.Caption = "Get Gross Weight In"   
    Case "GetTareWeight"
       Set objFrmCtrl = Forms!ConsignmentsContract.TareWeight 
       Warning.Caption = "Get Tare Weight In" 
    End Select
    OpenEXE
Exit_Form2:
    Exit Sub
Err_Form1:
    MsgBox Error$
    Resume Exit_Form2
End Sub

Private Sub OpenEXE() 
    On Error Resume Next 
    GrossValue = Shell("c:\weighbr\auto\Weight.exe", 6) 
    If Err.Number = 53 And GrossValue = 0 Then 
        MsgBox "Can't find program 'Weight.exe'", vbInformation, "Alert" 
    End If 
    ' ...
End Sub

1 个答案:

答案 0 :(得分:0)

根据documentation for SHELL

  

如果成功,运行可执行程序并返回表示程序任务ID的Variant(Double),否则返回零。

您的代码获得task ID,而不是执行.exe程序的结果(如果nothng else则阻止执行)。因此,在任何情况下,您都不应期望获得此程序生成的值。

您应该使用调试工具进入此Sub并实际弄清楚它的用途。

检查Alternative to Call Shell() ? (2000)是否可以帮助您,以及Access 2000 to 2002 (Shell command)

似乎Shell函数可能已经改变了很久以前。