2013-05-10 4 views
-1

Мой руководитель попросил меня отладить недавнюю программу в vb6. У меня есть только базовые знания в vb. Когда я пытаюсь запустить программу, отображается несоответствие аргумента byref. Кто-нибудь может мне с этим помочь. Буду признателен за любые комментарии.byRef аргумент типа несоответствие help any

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

+0

Я действительно не знаю, что я делаю здесь. если вы можете понять, что этот код может описать, что означает переменная tCnt и что означает S2.day? все, что я сделал здесь, это изменение поставщика и условия данных, имеющих нулевое значение. кроме этого, я не знаю, что на самом деле происходит в этой программе. –

+0

В основном запрос с параметрами для проекта, даты и времени и taskid - это то место, где появляется ошибка. и я действительно не получаю эту часть программы. –

ответ

1

ByRef ошибка Аргумент несоответствия, как правило, простое несоответствие между типом аргумента, которым passsed к югу, который ожидает другой типа. Ваши объявления переменных отсутствуют в коде, поэтому невозможно сказать.

Единственный звонок в другой Sub, который я вижу, это линия Call SetDataRecord(rstInfo, wCnt).

Так что проверьте тип rstInfo и wCnt на тип аргументов, которые ожидает SetDataRecord.

+0

Public SCNT, tCnt, wCnt, dCnt As Integer Public S2 Как udt_DTSS_Project слышащими являются переменная декларация, используется. –

+0

Если строка кода действительно читает 'public sCnt, tCnt, wCnt, dCnt As Integer', то вопреки тому, что вы думаете, только dCnt является Integer, переменные до этого являются вариантами. Передайте вариант Sub или Function, который ожидает Integer, и вы получите сообщение об ошибке, с которой вы столкнулись. – Dabblernl

+0

Я уже объявлял sCnt, tCnt, wCnt как interger. Тем не менее я получаю несоответствие аргумента ref в коде выше. –

Смежные вопросы