|
| Kan ikke få værdie ud af det der retuner~ Fra : pnr | Vist : 1060 gange 100 point Dato : 29-10-03 20:29 |
|
Jeg har følgende stored procedure:
CREATE PROC indsaetNyKunde
(
@navn varchar(50),
@adresse varchar(50),
@postnr int,
@tlf nvarchar(20),
@brugernavn nvarchar(30),
@dato varchar(30),
@forhandlernr nvarchar(40),
@adgangskode nvarchar(15),
@kundenr varchar(10) = null output
)
AS
begin
select @kundenr = MAX(kundenr) FROM Bruger
select @kundenr = @kundenr + 1
INSERT INTO bruger
(kundenr, brugernavn, adgangskode, navn, adresse, postnr, tlf, dato, forhandlernr)
VALUES
(@kundenr, @brugernavn,@adgangskode,@navn,@adresse,@postnr,@tlf,@dato,@forhandlernr)
end
GO
laver så følgende i ASP:
sqlFor = "EXECUTE indsaetNyKunde '" & navn & "','" & adresse & "','" & postnr & "','" & tlf & "','" & brugernavn & "','" & now() & "','" & session("forhandlernr") & "','" & adgangskode & "';"
set rs = Server.CreateObject("ADODB.Recordset")
rs = cn.execute(sqlFor)
response.write "kundenr: " & rs("kundenr") <-- Dette er linie 85
Og får følgende fejl:
ADODB.Fields error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
/opretBruger.asp, line 85
| |
| Kommentar Fra : gandalf |
Dato : 30-10-03 10:52 |
|
Hej pnr
Ændre din stored procedure som følger:
Gandalf
*************************************
CREATE PROC indsaetNyKunde
(
@navn varchar(50),
@adresse varchar(50),
@postnr int,
@tlf nvarchar(20),
@brugernavn nvarchar(30),
@dato varchar(30),
@forhandlernr nvarchar(40),
@adgangskode nvarchar(15),
@kundenr varchar(10) = null output
)
AS
begin
SET NOCOUNT ON
select @kundenr = MAX(kundenr) FROM Bruger
select @kundenr = @kundenr + 1
INSERT INTO bruger
(kundenr, brugernavn, adgangskode, navn, adresse, postnr, tlf, dato, forhandlernr)
VALUES
(@kundenr, @brugernavn,@adgangskode,@navn,@adresse,@postnr,@tlf,@dato,@forhandlernr)
SET NOCOUNT OFF
select @kundenr kundenr
end
GO
| |
| Kommentar Fra : pnr |
Dato : 30-10-03 14:51 |
|
Det var sq lækkert!! Jeg takker mange gange, hvordan får vi afregnet det her?
| |
| Kommentar Fra : pnr |
Dato : 30-10-03 15:11 |
|
Hov forresten jeg har hørt noget om at man bør bruge noget command iforbindelse med MS SQL, hvis man vil have det til at performe bedre. Hvordan kan jeg bygge det ind i det jeg har?
| |
| Kommentar Fra : gandalf |
Dato : 30-10-03 15:32 |
|
Hej PNR
Man kan sige i dit tilfælde her kan det godt betale sig at køre med ado.command, fordi du kun returnere en værdi. Det er lidt overkill at bruge et helt recordset for kundenr.
For at gøre dette skal du skrive
Return @kundenr (i stedet for select @kundenr)
Her er et eksempel på hvordan du bruger command objektet.
---------------------------------------------------------------
function isUserOK(ip,username,passwd)
dim adoCommand
set adoCommand = server.CreateObject("ADODB.Command")
with adoCommand
.ActiveConnection = ConnectionString
.CommandType = adCmdStoredProc
.CommandText = "sp_checkuser"
.Parameters.Append .CreateParameter("IsUserOK",adInteger, adParamReturnValue)
.Parameters.Append .CreateParameter("@ip",adVarchar,adParamInput,20,ip)
.Parameters.Append .CreateParameter("@username",adVarchar,adParamInput,50,username)
.Parameters.Append .CreateParameter("@passwd",adVarchar,adParamInput,50,passwd)
.Execute
if .Parameters("IsUserOK")=1 then
isUserOK = true
else
isUserOK = false
end if
end with
set adoCommand = nothing
end function
| |
| Godkendelse af svar Fra : pnr |
Dato : 30-10-03 15:39 |
|
MANGE Tak for svaret gandalf.
| |
| Du har følgende muligheder | |
|
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
| |
|
|