Vb6 byRef参数类型不匹配帮助任何人

Vb6 byRef参数类型不匹配帮助任何人,vb6,Vb6,我的主管让我用vb6调试一个最近的程序。我只有vb的基本知识。当我尝试运行程序时,会显示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

我的主管让我用vb6调试一个最近的程序。我只有vb的基本知识。当我尝试运行程序时,会显示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

ByRef参数不匹配错误通常是传递给需要不同类型的子参数的参数类型之间的简单不匹配。您的变量声明没有出现在代码中,因此无法判断

我看到的对另一个子系统的唯一调用是
调用SetDataRecord(rstInfo,wCnt)


因此,请对照SetDataRecord期望的参数类型检查rstInfo和wCnt的类型。

欢迎使用StackOverflow。请做一些家庭作业,加上你尝试过的和失败的地方。我真的不知道我在这里做什么。如果你能理解这段代码,你能描述一下变量tCnt和S2.day的含义吗?我在这里所做的就是更改具有空值的数据的提供程序和条件。除此之外,我不知道这个程序中到底发生了什么。基本上,使用project、datetime和taskid的参数进行查询是出现错误的地方。我真的不明白程序的这一部分。你被要求调试程序。在VB6 IDE中,您可以使用F8单步执行代码-这样您应该可以看到在哪一行出现错误。我们这里毕竟不能调试您的代码。所以基本上,当我在F8运行时,第一个黄色部分将是这个程序的第一个错误?如果你想看到代码的任何部分,请告诉我,这样我就不能在这里发布。提前感谢btwPublic sCnt、tCnt、wCnt、dCnt As Integer Public S2 As udt_DTSS_Project hear是使用的变量声明。如果代码行确实读取
Public sCnt、tCnt、wCnt、dCnt As Integer
,则与您的想法相反,只有dCnt是整数,之前的变量是变量。将变量传递给需要整数的子函数或函数,您将得到遇到的错误。我已经将sCnt、tCnt、wCnt声明为Integer。我仍然在上面的代码中得到by ref参数不匹配。因此您的代码字面上是:
Dim sCnt as Integer

Dim tCnt as Integer

Dim wCnt as Integer
?然后变量被正确地声明为整数。现在检查是否传递了任何子函数或函数以期望变量。是的,我已将它们分别声明为整数。先生,你指的是什么子功能?在单独更改之后,我猜“nextday”变量中仍然存在错误。其中nextday被声明为私有类型。来自全局变量模块。