2012-01-03 8 views
6

Comment retourner la valeur de la fonctionComment retourner la valeur de la fonction

code

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 

Comment retourner la valeur du code ci-dessus.

besoin Code VB6 Aide

Répondre

9

Vous devez spécifier votre type de retour.

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 

Voici un link qui est une bonne lecture pour la compréhension des fonctions dans VB6

EDIT

Après avoir lu votre commentaire, je voudrais créer une classe pour stocker vos valeurs.

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

Ensuite, vous pouvez instancier une nouvelle instance de cette classe à l'intérieur de votre code:

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 
+0

Si je veux envoyer des valeurs multiples signifie, comment ne modifier mon code, par exemple nom, département, pays que je veux revenir, pour que ce que je dois modifier mon code .... – Gopal

+0

Je ne peux pas en mesure retourner le résultat complet ....? – Gopal

+0

@Gopal: Voir la réponse modifiée. –

2

Vous devez définir la valeur au nom de la fonction et le type de retour:

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 

Voir this document pour plus d'informations.

+0

Si je veux envoyer plusieurs valeurs signifie, par exemple nom, département, pays que je veux retourner, pour ce que je dois modifier mon code .... – Gopal

+0

@Gopal - Pourquoi ne pas retourner l'ensemble des résultats? Ou créez un objet pour conserver ces valeurs et renvoyez-le. – Oded

+0

Ok, je vais retourner le jeu de résultats, à partir de l'autre extrémité, comment puis-je utiliser cet ensemble d'enregistrements. Par exemple, je retourne le resultet rdo puis dans le formload comment je peux utiliser ce résultat rdo, Pouvez-vous m'aider s'il vous plaît .... – Gopal

0
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 
Questions connexes