Как вернуть значение из функции - PullRequest
9 голосов
/ 03 января 2012

Как вернуть значение из функции

Код

Private Function LeaveCheck(empid As String)
    Dim rdoRs1 As rdoResultset
    Dim desc As String
    Dim sSQL As String
    sSQL = "Select name from table1 wher empcode = '" & empid & "'"
    Set rdoRs1 = Rdoconn.OpenResultset(sSQL, rdOpenStatic)
    If rdoRs1.RowCount > 0 Then
    desc = rdors1!name        
    return desc 'Showing error in this line    
    End If
    rdoRs1.Close
End Function

Как вернуть значение из вышеприведенного кода.

Нужен код Vb6 Помощь

Ответы [ 3 ]

13 голосов
/ 03 января 2012

Вам необходимо указать тип возврата.

Private Function LeaveCheck(empid As String) As String ' Notice the As String
    Dim rdoRs1 As rdoResultset  
    Dim desc As String  
    Dim sSQL As String  
    sSQL = "Select name from table1 wher empcode = '" & empid & "'"  
    Set rdoRs1 = Rdoconn.OpenResultset(sSQL, rdOpenStatic)  
    If rdoRs1.RowCount > 0 Then  
        desc = rdors1!name          
    End If  
    rdoRs1.Close  

    LeaveCheck = desc ' This will be blank or populated
End Function

Вот ссылка , которая хороша для понимания функций в VB6

EDIT

После прочтения вашего комментария я бы создал класс для хранения ваших значений.

Public Class MyClass
    Dim name As String
    Dim dept As String
    Dim country As String
End Class

Затем вы можете создать новый экземпляр этого класса внутри вашего кода:

Private Function LeaveCheck(empid As String) As MyClass
    Dim myClass As New MyClass
    Dim rdoRs1 As rdoResultset
    Dim sSQL As String   
    sSQL = "Select name, dept, country from table1 wher empcode = '" & empid & "'"   
    Set rdoRs1 = Rdoconn.OpenResultset(sSQL, rdOpenStatic)   
    If rdoRs1.RowCount > 0 Then   
        myClass.name = rdors1!name           
        myClass.dept = rdors1!dept
        myClass.country = rdors1!country
    End If   
    rdoRs1.Close   

    LeaveCheck = myClass
End Function
3 голосов
/ 03 января 2012

Вам необходимо установить значение для имени функции и типа возвращаемого значения:

Private Function LeaveCheck(empid As String) As String
    Dim rdoRs1 As rdoResultset
    Dim desc As String
    Dim sSQL As String
    sSQL = "Select name from table1 wher empcode = '" & empid & "'"
    Set rdoRs1 = Rdoconn.OpenResultset(sSQL, rdOpenStatic)
    If rdoRs1.RowCount > 0 Then
      desc = rdors1!name        
    End If
    rdoRs1.Close

    LeaveCheck = desc

End Function

См. этот документ для получения дополнительной информации.

0 голосов
/ 16 марта 2016
Function returnArray() As Variant
   RTA[ab]=0
   if a=b then RTA[ab]=1

   RTA[xy]=0
   if a=b then RTA[xy]=1

   returnArray=RTA
end function
...