2013-05-10 44 views
-1

我的主管要求我在vb6中調試最近的程序。我只有vb的基礎知識。當我嘗試運行該程序時,會顯示byref參數不匹配。誰能幫我這個。我會很感激任何意見。byRef參數類型不匹配幫助任何人

Public Sub S2_Sort() 

'loop day 
For dCnt = 1 To UBound(S2.Day()) 
    ReDim S2.Day(dCnt).tList(0) 

    'loop shift 
    For tCnt = 1 To UBound(TaskID()) 
     ReDim Preserve S2.Day(dCnt).tList(tCnt) 
     ReDim Preserve S2.Day(dCnt).tList(tCnt).sList(0) 
     'dicShift.RemoveAll 

     'loop task 
     For sCnt = 1 To UBound(Shift()) 
      ReDim Preserve S2.Day(dCnt).tList(tCnt).sList(sCnt) 
      ReDim Preserve S2.Day(dCnt).tList(tCnt).sList(sCnt).TaskRecList(0) 

      'query with paramaters for project, datetime, and taskid 
      strQuery = "SELECT * FROM PROD_DB WHERE PROJECT_ID = '" & inpProject & "'" & _ 
        " AND " & GetTimestamp(S2.Day(dCnt).DayVal, Shift(sCnt).NextDay, True, Shift(sCnt).StartHour, _ 
        Shift(sCnt).HourLen) & _ 
        " AND TASK_ID = '" & TaskID(tCnt).TaskID & "'" & _ 
        " ORDER BY START_TIME, TASK_ID" 
      Set rstInfo = AdoConn.Execute(strQuery) 

      If Not (rstInfo.EOF And rstInfo.BOF) Then 
       rstInfo.MoveFirst 
       wCnt = 0 
       Do Until rstInfo.EOF 
        wCnt = wCnt + 1 
        ReDim Preserve S2.Day(dCnt).tList(tCnt).sList(sCnt).TaskRecList(wCnt) 
        'save the records to a arraylist datarecord 
        Call SetDataRecord(rstInfo, wCnt) 

        'then compute, get the work time number and list it on stLIst 
        S2.Day(dCnt).tList(tCnt).sList(sCnt).Val = S2_Compute(S2.Day(dCnt).tList(tCnt).sList(sCnt).TaskRecList(wCnt), S2.Day(dCnt).tList(tCnt).sList(sCnt).Val) 
        S2.Day(dCnt).tList(tCnt).Val = S2_Compute(S2.Day(dCnt).tList(tCnt).sList(sCnt).TaskRecList(wCnt), S2.Day(dCnt).tList(tCnt).Val) 
        'S2.Day(dCnt).tList(tCnt).MstUnit = DataRecord(X).MeasurementUnit 
        'S2.Day(dCnt).tList(tCnt).Cost = DataRecord(X).Cost 
        S2.Day(dCnt).tList(tCnt).ResourceName = S2.Day(dCnt).tList(tCnt).ResourceName + S2.Day(dCnt).tList(tCnt).sList(sCnt).TaskRecList(wCnt).ResourceName 
        S2.Day(dCnt).Val = S2_Compute(S2.Day(dCnt).tList(tCnt).sList(sCnt).TaskRecList(wCnt), S2.Day(dCnt).Val) 

        rstInfo.MoveNext 
       Loop 
      End If 
      Set rstInfo = Nothing 
     Next sCnt 'Next Shift 
    Next tCnt 'Next Task 
Next dCnt 'Next Day 
End Sub 
+0

歡迎來到StackOverflow。請做某種你的功課,並添加你嘗試過的和失敗的地方。 – rekire 2013-05-10 05:53:40

+0

我真的不知道我在這裏做什麼。如果你能理解這個代碼,你可以描述什麼變量tCnt和S2.day是什麼意思?我在這裏完成的所有操作都是更改提供者和條件數據的空值。除此之外,我不知道這個計劃真的發生了什麼。 – 2013-05-10 06:07:07

+0

基本上用參數查詢項目,日期時間,taskid是彈出錯誤的地方。我真的沒有得到這部分的程序。 – 2013-05-10 07:11:01

回答

1

ByRef參數不匹配錯誤通常是傳遞給期望不同類型的Sub的參數類型之間的簡單不匹配。你的變量聲明不在代碼中,所以不可能告訴。

我看到的另一個子的唯一調用是Call SetDataRecord(rstInfo, wCnt)行。

因此,根據SetDataRecord預期的參數類型檢查rstInfo和wCnt的類型。

+0

公共SCNT,TCNT,WCNT,DCNT作爲整數 公共S2作爲udt_DTSS_Project 聽見變量聲明是變量聲明用來。 – 2013-05-14 08:05:07

+0

如果代碼行確實讀取了「Public sCnt,tCnt,wCnt,dCnt As Integer」,那麼與您的想法相反,只有dCnt是一個Integer,之前的變量是Variant。將變體傳遞給期望爲Integer的子或函數,您將遇到您遇到的錯誤。 – Dabblernl 2013-05-14 21:27:14

+0

我已經將sCnt,tCnt,wCnt聲明爲整數。仍然在上面的代碼中通過ref參數不匹配。 – 2013-05-16 01:34:02