2012-01-03 37 views
6

Làm thế nào để trả lại giá trị từ chức năngLàm thế nào để trả lại giá trị từ chức năng

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 

Làm thế nào để trả về giá trị từ mã ở trên.

Cần mã Vb6 Trợ giúp

Trả lời

9

Bạn cần chỉ định loại trả lại của mình.

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 

Đây là một link đó là một đọc tốt để tìm hiểu chức năng trong VB6

EDIT

Sau khi đọc comment của bạn, tôi sẽ tạo ra một lớp để lưu trữ giá trị của bạn.

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

Sau đó, bạn có thể nhanh chóng một trường hợp mới của lớp này bên trong mã của bạn:

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

Nếu tôi muốn gửi nhiều giá trị, làm cách nào để sửa đổi mã của tôi, ví dụ như tên, quốc gia, tôi muốn quay lại, để sửa đổi mã của tôi .... – Gopal

+0

Tôi không thể để trả về kết quả đầy đủ ....? – Gopal

+0

@Gopal: Xem câu trả lời được sửa đổi. –

2

Bạn cần phải thiết lập các giá trị cho tên hàm và kiểu trả về:

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 

Xem this document để biết thêm thông tin.

+0

Nếu tôi muốn gửi nhiều giá trị có nghĩa là, ví dụ như tên, nợ, quốc gia tôi muốn trả lại, cho rằng những gì tôi phải sửa đổi mã của tôi .... – Gopal

+0

@Gopal - Tại sao không trả lại toàn bộ kết quả? Hoặc tạo một đối tượng để giữ các giá trị này và trả về giá trị đó. – Oded

+0

Ok tôi sẽ trả lại tập kết quả, từ đầu kia về cách tôi có thể sử dụng bộ bản ghi đó. Ví dụ, tôi trả lại rdo resultset sau đó trong formload như thế nào tôi có thể sử dụng kết quả rdo, bạn có thể xin vui lòng giúp tôi .... – 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 
Các vấn đề liên quan