Avatar billede kramerknudsen Nybegynder
03. januar 2005 - 11:52 Der er 8 kommentarer og
2 løsninger

reslutat fra Stored Procedure til ADO recordset

Hej,

Jeg har lavet en procedure der skulle kunne overføre resultatet fra en stored procedure udført på SQL-server til et recordset. Koden ses nedenfor. Jeg kan se i profileren, at stored procedure køres, men resultatet overføres ikke som forventet til recordsettet. Hvad mangler jeg

på forhånd tak



Private Sub GetValues()
Dim rs As New ADODB.Recordset
Dim Cmd As New ADODB.Command
Dim conn As New ADODB.Connection
Dim cnn As String

cnn = "File Name=" & ThisWorkbook.Path & "\OBH.udl"
conn.Open cnn

Set Cmd.ActiveConnection = conn
Cmd.CommandText = "spgetvalues"
Cmd.CommandType = adCmdStoredProc
Cmd.Parameters.Refresh
Cmd.Parameters(1) = "1150"
Set rs = Cmd.Execute()
MsgBox rs.RecordCount
conn.Close
Set rs = Nothing
End Sub
03. januar 2005 - 11:57 #1
Hvad med denne:

Private Sub GetValues()
Dim rs As New ADODB.Recordset
Dim Cmd As New ADODB.Command
Dim conn As New ADODB.Connection
Dim cnn As String

cnn = "File Name=" & ThisWorkbook.Path & "\OBH.udl"
conn.Open cnn

Set Cmd.ActiveConnection = conn
Cmd.CommandText = "spgetvalues"
Cmd.CommandType = adCmdStoredProc
Cmd.Parameters.Refresh
Cmd.Parameters(1) = "1150"
rs.open "spgetvalues", conn, adOpenStatic
MsgBox rs.RecordCount
conn.Close
Set rs = Nothing
End Sub
Avatar billede kramerknudsen Nybegynder
03. januar 2005 - 12:00 #2
Det virker ikke, da den medfølgende parameter ikke medsendes
Avatar billede kramerknudsen Nybegynder
03. januar 2005 - 12:01 #3
Det virker ikke, da den medfølgende parameter ikke medsendes
Avatar billede terry Ekspert
03. januar 2005 - 12:37 #4
Not sure what this is

cnn = "File Name=" & ThisWorkbook.Path & "\OBH.udl"

but none the less!

try giving the parameter name

Cmd.Parameters("@NameGoesHere").Value = "1150"
and if it is a numeric value

Cmd.Parameters("@NameGoesHere").Value = 1150

then

set rs = Cmd.execute
Avatar billede kramerknudsen Nybegynder
03. januar 2005 - 13:02 #5
cnn er connectionstring, der findes i .udl fil, der konfigureres i filen.

Jeg har afprøvet koden og resultatet er det samme uanset om der anvendes Cmd.Parameters("@NameGoesHere").Value = "1150" eller Cmd.Parameters(1) = "1150"

Jeg kan se at stored procedure afvikles, men resulatet overføres ikke til recordsettet. og det er det der er problemet

som jeg ser det er det linien "set rs = Cmd.execute" der er problemet
Avatar billede kramerknudsen Nybegynder
03. januar 2005 - 14:09 #6
Jeg har selv løst problemet!

den oprindelige kode virker godt nok. Det er blot rs.recordcount der ikke virker ordenligt.

Så begge opgaveløsere må gerne få ½ point hver
03. januar 2005 - 14:14 #7
ja, recordcount kan godt drille lidt...dog mest under DAO.

takker trods alt :o)
Avatar billede kramerknudsen Nybegynder
03. januar 2005 - 16:20 #8
skal blot bruge svar jeg kan acceptere
Avatar billede terry Ekspert
03. januar 2005 - 18:26 #9
:o)
Avatar billede terry Ekspert
03. januar 2005 - 18:28 #10
you can maybe rs.movelast then rs.movefirst before using the recordset
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester