2013-05-24 4 views
-3

theres ошибка возникает, когда я ее компилирую. подсказка несоответствия типа byref. выделена часть «setStandard s2.day (dCnt)». Не имеет понятия, как его решить. dCnt, wCnt, tCnt и wCnt объявляются как целые числа.Ошибка компиляции: byRef Несоответствие типа аргумента

Private Sub S2_Sort() 
    Dim x As Integer, t As Integer 
    x = 0 
    t = tCnt 
    'loop record 
    Do While x < t 
     'loop day 
     For dCnt = 1 To UBound(S2.Day()) 

      'inpDate = S2.Day(dCnt).DayVal 
      ReDim S2.Day(dCnt).tList(0) 

      'If DateValue(S2.Day(dCnt).DayVal) = DateValue(DataRecord(x).StartTime) Then 

      '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 
        'If x <= UBound(DataRecord()) Then 
         'If GetTimestamp(S2.Day(dCnt).DayVal, Shift(sCnt).StartHour, Shift(sCnt).HourLen, Shift(sCnt).NextDay, DataRecord(x)) Then 
          '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) 

           wCnt = 0 
           'Do While x <= UBound(DataRecord()) 
            ReDim Preserve S2.Day(dCnt).tList(tCnt).sList(sCnt).TaskRecList(wCnt) 
            ''state here all the conditions 
            If x <= UBound(DataRecord()) Then 
             If GetTimestamp(S2.Day(dCnt).DayVal, Shift(sCnt).StartHour, Shift(sCnt).HourLen, Shift(sCnt).NextDay, DataRecord(x)) Then 
              If DataRecord(x).TaskID = TaskID(tCnt).TaskID Then 
               'should contain the tasks 
               dicDay.RemoveAll 

               'get the work time number and list it on stLIst 
               'S2.Day(dCnt).sList(sCnt).ShiftName = "" 
               'S2.Day(dCnt).sList(sCnt).tList(tCnt).ResourceName = "" 
               S2.Day(dCnt).tList(tCnt).sList(sCnt).TaskRecList(wCnt) = x 

               'Compute for task, for the shift, for the day 
               'compute pataas 
               S2.Day(dCnt).tList(tCnt).sList(sCnt).Val = S2_Compute(x, S2.Day(dCnt).tList(tCnt).sList(sCnt).Val) 
               S2.Day(dCnt).tList(tCnt).Val = S2_Compute(x, 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 + DataRecord(x).ResourceName 
               S2.Day(dCnt).Val = S2_Compute(x, S2.Day(dCnt).Val) 

               x = x + 1 
               wCnt = wCnt + 1 
              End If 
             End If 
            End If 
           'Loop 'task record 
          Next sCnt 'Next Shift 
         'End If 'shift 
        'End If 'x <datarecord 
       Next tCnt 'Next Task 
      'End If 'day 
      setStandard S2.Day(dCnt).Val 
     Next dCnt 'Next Day 
    Loop 
End Sub 

ответ

0

Я пытаюсь переформулировать вопрос, прежде чем отвечать на него. Сначала я рассматривал редактирование, но я не уверен, правильно ли понимаю qustion. Я предполагаю, что это примерно vb6 не vb.net, потому что setStandard S ... должен быть setStandard (S ...) в vb.net и автоматически заменяется Visual Studio.

Вопрос: Почему я получаю byRef Argument type mismatch, когда я компиляцию линии

setStandard S2.Day(dCnt).Val 

Функции подпись:

Private Function setStandard(Rec As Double) ' 

Другой немного другую версию коды в by ref argument type mismatch VB 6.0.

Ответ:S2.Day(dCnt).Val, вероятно, не Double, так что вы можете попробовать

setStandard CDbl(S2.Day(dCnt).Val) 

или

Private Function setStandard(ByVal Rec As Double) ' 

Также проверьте .Val объявление функции, чтобы искать его типа данных. Не стесняйтесь редактировать мой ответ или использовать мой текст для переформулировки вопроса.

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