ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   execute stored proc in Excel (https://www.excelbanter.com/excel-programming/352200-execute-stored-proc-excel.html)

William

execute stored proc in Excel
 
Hi,
i'm trying to execute a stored proc stored in Sybase in VBA EXCEL 2003. the
stored proc is supposed to return about 30 rows. but, if i execute the stored
proc in VBA, rs.recordcount is -1 and rs.eof is true. i enclosed the stored
proc below. it just makes me very frustrated. any help or feedback is very
welcome.
Thank you very much.
will

MsgBox rs.RecordCount == ALWAYS RETURN -1

While Not rs.EOF == rs.EOF = TRUE


create procedure sp_CoverageEventHorizonHistory
@NoteDBSecId varchar(30)
as



select s.Symbol, s.SecurityName as 'Company', t.PriceTarget_Numeric
from Securities s, TargetPriceActions t
where s.NoteDBSecId =@NoteDBSecId
and s.NoteDBSecId=t.NoteDBSecId and t.PriceTarget_Numeric !=NULL


go





Private Sub CommandButton1_Click()

Dim DB As BSERDBConnect.BSERDataConnect
Dim con As ADODB.Connection
Dim comm As ADODB.Command
Dim rs As ADODB.Recordset

Dim SQL As String

Set DB = New BSERDataConnect
DB.connectDB "database", "login", "pwd"


Set conn = DB.oConn
Set comm = New ADODB.Command
Set rs = New ADODB.Recordset

comm.ActiveConnection = conn
comm.CommandType = adCmdStoredProc
comm.CommandText = "sp_CoverageEventHorizonHistory"


Dim paramIn1 As ADODB.Parameter

Set paramIn1 = comm.CreateParameter("NoteDBSecId", adVarChar,
adParamInput, 30, "1782")
comm.Parameters.Append paramIn1

Dim records As Integer

rs.CursorLocation = adUseClient
Set rs = comm.Execute(records)

Set wksEH = Worksheets("TESTING")

For c = 0 To rs.Fields.Count - 1
wksEH.Cells(1, c + 1).Value = rs.Fields(c).Name
Next
With wksEH.Rows(1).Cells.Font
.Underline = True
.Bold = True
End With

MsgBox rs.RecordCount == ALWAYS RETURN -1
Do While Not rs Is Nothing
While Not rs.EOF == rs.EOF = TRUE
MsgBox rs.Fields(0) & " " & rs.Fields(1)
rs.MoveNext
Wend
Set rs = rs.NextRecordset
Loop

Set comm = Nothing

End Sub



--


Robin Hammond[_2_]

execute stored proc in Excel
 
William,

I have no idea whether this works in Sybase, but in SQL you need to

SET NOCOUNT ON
at the start of your stored proc and
SET NOCOUNT OFF
at the end

Robin Hammond
www.enhanceddatasystems.com

"William" wrote in message
...
Hi,
i'm trying to execute a stored proc stored in Sybase in VBA EXCEL 2003.
the
stored proc is supposed to return about 30 rows. but, if i execute the
stored
proc in VBA, rs.recordcount is -1 and rs.eof is true. i enclosed the
stored
proc below. it just makes me very frustrated. any help or feedback is very
welcome.
Thank you very much.
will

MsgBox rs.RecordCount == ALWAYS RETURN -1

While Not rs.EOF == rs.EOF = TRUE


create procedure sp_CoverageEventHorizonHistory
@NoteDBSecId varchar(30)
as



select s.Symbol, s.SecurityName as 'Company', t.PriceTarget_Numeric
from Securities s, TargetPriceActions t
where s.NoteDBSecId =@NoteDBSecId
and s.NoteDBSecId=t.NoteDBSecId and t.PriceTarget_Numeric !=NULL


go





Private Sub CommandButton1_Click()

Dim DB As BSERDBConnect.BSERDataConnect
Dim con As ADODB.Connection
Dim comm As ADODB.Command
Dim rs As ADODB.Recordset

Dim SQL As String

Set DB = New BSERDataConnect
DB.connectDB "database", "login", "pwd"


Set conn = DB.oConn
Set comm = New ADODB.Command
Set rs = New ADODB.Recordset

comm.ActiveConnection = conn
comm.CommandType = adCmdStoredProc
comm.CommandText = "sp_CoverageEventHorizonHistory"


Dim paramIn1 As ADODB.Parameter

Set paramIn1 = comm.CreateParameter("NoteDBSecId", adVarChar,
adParamInput, 30, "1782")
comm.Parameters.Append paramIn1

Dim records As Integer

rs.CursorLocation = adUseClient
Set rs = comm.Execute(records)

Set wksEH = Worksheets("TESTING")

For c = 0 To rs.Fields.Count - 1
wksEH.Cells(1, c + 1).Value = rs.Fields(c).Name
Next
With wksEH.Rows(1).Cells.Font
.Underline = True
.Bold = True
End With

MsgBox rs.RecordCount == ALWAYS RETURN -1
Do While Not rs Is Nothing
While Not rs.EOF == rs.EOF = TRUE
MsgBox rs.Fields(0) & " " & rs.Fields(1)
rs.MoveNext
Wend
Set rs = rs.NextRecordset
Loop

Set comm = Nothing

End Sub



--





All times are GMT +1. The time now is 12:23 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com