2017-06-25 102 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