2016-08-25 4 views
0
Public Function `RecordsetSybase(sqlstr As String) As ADODB.Recordset 
    If TestSybaseConnection() = False Then 
     setLogin 
    End If 

    Dim commandObject As ADODB.Command 
    Set commandObject = New ADODB.Command 
    Dim data As New ADODB.Recordset 
    With commandObject 
     .CommandText = sqlstr 
     .ActiveConnection = SybaseConnection(getUID, getPASS) 
     .CommandTimeout = 350 
    End With 

    data.Open commandObject.CommandText, commandObject.ActiveConnection 

    'Do Until data.EOF = True 
    'MsgBox data(0) 
    'data.MoveNext 
    'Loop 

    commandObject.ActiveConnection.Close 

    Set RecordsetSybase = data 
    Set commandObject = Nothing 

End Function 

Sub classific() 

    Dim conn As WorkbookConnection 
    Dim strSQL As String 
    Dim rs As New ADODB.Recordset 

    'Query 
    strSQL = "SELECT DISTINCT name_short_orig, cl_rating " & _ 
      "FROM pbsm_hist.dbo.pbsm_auths_hist_adjusted " & _ 
      "WHERE name_short_orig IS NOT Null " & _ 
      "AND cl_rating NOT IN ('F+','F','Z') " 

    Set rs = RecordsetSybase(strSQL) 
    MsgBox rs 
End Sub 

함수에 레코드 집합을 표시 할 수 있습니다 (주석 참조). 하지만 하위에 할 수 없어, 나는 다음과 같은 오류 메시지가 :레코드 집합을 표시하는 데 문제가 있습니다.

런타임 오류 '13': 당신은 완전히 현재의를 명령 개체를 우회하는

답변

1

형식 불일치 그냥 거기에 앉아서 명령 텍스트와 연결을 저장하는 것입니다.

실제로 use the command object :

오류에 관해서는
set data = commandObject.execute() 

MsgBox rs이 유효하지 않습니다 - 당신은 rs 객체의 문자열 표현으로 볼 무엇을 기대?

당신은 첫번째 값 원한다면 :

if not rs.eof then msgbox rs.collect(0)