web-dev-qa-db-ja.com

関数から値を返す方法

関数から値を返す方法

コード

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コードのヘルプが必要

9
Gopal

返品タイプを指定する必要があります。

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の関数を理解するための良い読み物です。

[〜#〜]編集[〜#〜]

コメントを読んだ後、値を格納するクラスを作成します。

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
13
Neil Knight

値を関数名と戻り値の型に設定する必要があります。

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

詳細については、 このドキュメント を参照してください。

3
Oded
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
0
user3557421