2017-06-25 99 views
0

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

的代码是

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 
+0

你的意思是“在表单中有一个exe文件”? – joanolo

+0

感谢您的回复,这是触发exe的事件过程。 – Izzy

+0

设置objFrmCtrl =形式ConsignmentsContract.TareWeight Warning.Caption = “获取皮重出” Box54.BackColor = vbRed 最终选择 OpenEXE Exit_Form2: 退出小组 Err_Form1: MSGBOX错误$ 恢复Exit_Form2 结束小组 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 not find程序'Weight.exe'“,vbInformation,”Alert“ End If – Izzy

回答

0

按照documentation for SHELL

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

您的代码获得task ID,而不是执行.exe程序的结果(如果nothng else阻止执行)。所以,在任何情况下,您都不应期望获得该计划产生的价值。

你应该使用调试工具来进入这个Sub,并且确实找出它的功能。

检查Alternative to Call Shell() ? (2000)是否可以帮到你,还有Access 2000 to 2002 (Shell command)

看来Shell功能可能在一段时间之前改变了looong。

+0

我已经加入了该计划,并在2016年获得了exe文件,但继续进行,好像它不在那里,结果是空白。我会对你给我的东西做更多的研究。感谢您的耐心。我的Access 2000 MDB总是返回一个结果,即如果没有在地秤上,那么我得到一个零但2016年的结果为空。再次感谢 – Izzy

+0

如果地磅上有东西,该怎么办? – Peter

+0

当在桥上的东西转储到我的窗体显示重量,但当我更新到Access 2016(通过2010年)它不会注册任何东西......任何想法? – Izzy