2014-01-13 31 views
0

我面臨着在這裏無聊的問題...TypeOf運算返回類型錯誤...... recorset被稱爲像場

我試圖施放一個記錄到數組,但對象類型不返回correctl

我有一個Recordset類型的函數,我試圖通過記錄集對象接收這個函數的結果。但是,當我嘗試測試對象類型時,typeof函數返回「Fields」類型。

搜索方法:

Public Function Buscar(ByVal query As String) As Recordset 
Dim rs As New Recordset 

If con.State <> 1 Then 
    Conectar 
End If 

rs.Open query, con, adOpenStatic, adLockReadOnly 
Set Buscar = rs 

End Function 


dim r as recordset 
dim c as new clsConnection 

r = c.buscar("select * from costumers") 
c.casttoarray(r) 

Private Sub castToArray(obj As Object) 

Dim rs   As New Recordset 
Dim linhas() As String 
Dim colsize() As Integer 
Dim aux   As Integer 

If TypeOf obj Is adodb.Recordset Then 

    Dim nLin As Long 
    Dim nCol As Integer 
    Dim l As Long 
    Dim c As Integer 

    Set rs = obj 
    colsize = capturarLimites(rs) 
    nLin = rs.RecordCount 
    nCol = rs.Fields.Count 
    ReDim linhas(nLin) 


    rs.MoveFirst 
    For l = 0 To nLin - 1 
     For c = 0 To nCol - 1 
      aux = colsize(c) - Len(rs.Fields(c).Value) 
      linhas(l) = linhas(l) & "" & rs.Fields(c).Value & rptString(" ", aux + 1) 
     Next c 
    Next l 

End If 



End Sub 
+0

不知道它是否相關,但我認爲'r = c.buscar(「select * from costumers」)'應該是'set r = c.buscar(「select * from costumers」)' –

回答

1

的問題是使用括號當你調用

c.casttoarray (r) 

這些評估r等通過記錄類的默認成員(這是Fields集合)的過程。

刪除它們或使用呼叫;

c.casttoarray r 
call c.casttoarray(r) 

或強烈鍵入casttoarray參數。

+0

感謝您的支持幫幫我 –