/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
VB Komponent og Stored Procedure
Fra : Thomas Nielsen


Dato : 27-08-01 11:09

Hej

Jeg har et ASp script som kalder en funktion i et komponent jeg arbeder på.

Komponentet som er skrevet i VB6.0 kalder en Stored Procedure på en MS SQL
8.0

Men jeg får denne fejl når jeg køre ASP scriptet:

Microsoft OLE DB Provider for ODBC Drivers error '80040e0c'

Command text was not set for the command object.

/priser_20/calc_prices.asp, line 6

Og det er en fejl i mit VB6.0 kald til den stored procedure som ser således
ud

Set pf = CreateObject("ADODB.Command")
With pf
.ActiveConnection = Conntemp
.CommandType = 4 'Stored Procedures
.CommandText = "calc_prices"
.Parameters.Refresh
.Parameters("@gruppe").Value = gruppe
.Parameters("@avance_Danmark").Value = avance_Danmark
.Parameters("@avance_Norge").Value = avance_Norge
.Parameters("@avance_Sverige").Value = avance_Sverige
.Parameters("@avance_Udland").Value = avance_Udland
.Execute
End With
Set pf = Conntemp.Execute(ud)

Nogen der kan hjælpe mig med at lokaliserer problemet i overstående linier?



/Thomas




 
 
Anders Holbøll (27-08-2001)
Kommentar
Fra : Anders Holbøll


Dato : 27-08-01 11:20

Thomas Nielsen wrote:
>
> Jeg har et ASp script som kalder en funktion i et komponent jeg
> arbeder på.
>
> Komponentet som er skrevet i VB6.0 kalder en Stored Procedure på
> en MS SQL 8.0

Altså Sql Server 2000 ?

> Men jeg får denne fejl når jeg køre ASP scriptet:
> Microsoft OLE DB Provider for ODBC Drivers error '80040e0c'
> Command text was not set for the command object.
> /priser_20/calc_prices.asp, line 6

Kan du fortælle hvilken linie, som er nummer 6?

> Og det er en fejl i mit VB6.0 kald til den stored procedure som ser således
> ud
>
> Set pf = CreateObject("ADODB.Command")
> With pf
> .ActiveConnection = Conntemp
> .CommandType = 4 'Stored Procedures
> .CommandText = "calc_prices"

Prøv at bytte om på de to linier (CommandType og CommandText).

> .Parameters.Refresh

Det er vist bedre hvis du opretter parametrene manuelt. Så slipper
databasen og lidt ekstra arbejde.

> .Parameters("@gruppe").Value = gruppe
> .Parameters("@avance_Danmark").Value = avance_Danmark
> .Parameters("@avance_Norge").Value = avance_Norge
> .Parameters("@avance_Sverige").Value = avance_Sverige
> .Parameters("@avance_Udland").Value = avance_Udland
> .Execute
> End With
> Set pf = Conntemp.Execute(ud)

Den kombination af to gange execute, kan jeg ikke lige gennemskuge.
Først er pf et command objekt og så er det et recordset?

--
Anders

Thomas Nielsen (27-08-2001)
Kommentar
Fra : Thomas Nielsen


Dato : 27-08-01 12:00

"Anders Holbøll" <dev-null-20010820@serveren.dk> skrev i en meddelelse
news:3B8A1EBD.B106F47E@serveren.dk...
> Altså Sql Server 2000 ?

Ja det må det vidst være

> Kan du fortælle hvilken linie, som er nummer 6?

Det er der hvor jeg kalder mit komponent i ASP scriptet

> Prøv at bytte om på de to linier (CommandType og CommandText).

Ikke nogen ændring

>
> > .Parameters.Refresh

> Det er vist bedre hvis du opretter parametrene manuelt. Så slipper
> databasen og lidt ekstra arbejde.

Hvad mener helt præcist?

> Den kombination af to gange execute, kan jeg ikke lige gennemskuge.
> Først er pf et command objekt og så er det et recordset?

Ups dert var også en fejl at den linie var der. Men det var nu ikke den der
var fejlen.

Har du evt en anden måde at kalde en Stored Procedure på og få resultatet
tilbage i VB komponentet?

MVH
Thomas



Anders Holbøll (27-08-2001)
Kommentar
Fra : Anders Holbøll


Dato : 27-08-01 12:40

Thomas Nielsen wrote:
> "Anders Holbøll" skrev:
> > Kan du fortælle hvilken linie, som er nummer 6?
>
> Det er der hvor jeg kalder mit komponent i ASP scriptet

Jamen, så fortæller det jo ikke meget. Hvad sker der, hvis du laver en
vb-app med en enkelt knap på, klipper din kode ind i OnClick for
knappen, køre projektet og klikker på knappen (så skulle du vel kunne se
hvor i koden fejlen er?).

> > > .Parameters.Refresh
> > Det er vist bedre hvis du opretter parametrene manuelt. Så
> > slipper databasen og lidt ekstra arbejde.
> Hvad mener helt præcist?

Når du laver en Refresh skal komponeten jo spørge databasen, hvilke
parametre proceduren tager. Det svare databasen på og komponenten sætter
de rigtige parametre op. Først da er komponeten klar til (efter du har
tildelt værdierne til parametrene) at eksekverer proceduren. Der skal
altså en ekstra "round-trip" til. Du skal tilføje parametre manuelt
således:
Cmd.Parameters.Append Cmd.CreateParameter(, 3, 1, , Value)
(her oprettes en integer parameter)
Se også:
http://msdn.microsoft.com/library/en-us/ado270/htm/mdmscadoapireference.asp

> Har du evt en anden måde at kalde en Stored Procedure på og få resultatet
> tilbage i VB komponentet?

Det kommer an på om det du skal have tilbage er enkelt scalar værdi
eller et recordset, hvis det er et recordset ville jeg nok gøre sådan:
Rs.open cmd, , 0, 1, 1
Mens hvis det er en scalar værdi, bør du bruge output-parametre, da det
skulle være lidt blidere.

--
Anders

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408872
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste