2016-08-25 7 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 объекта?

Если вы хотите 1-го значения:

if not rs.eof then msgbox rs.collect(0) 
Смежные вопросы