Avatar billede jesperfjoelner Nybegynder
12. september 2005 - 23:34 Der er 16 kommentarer og
1 løsning

Stored procedure til insert - hvad mangler jeg.

Jeg forsøger at indsætte en post i MSSQL som skal have alle værdierne fra variabler fra asp. SP og ASP er vist nedenfor.
Det fejler i den første linje med "cmd.Parameters.Append", så jeg gør noget forkert. Hvad er der galt her? Det er muligt jeg er helt gald på den med opbygningen af enten SP eller ASP.


CREATE PROCEDURE NavnAdresseInsert
@navn nvarchar,
@adresse nvarchar,
@telefon nvarchar,
@email nvarchar,
@postnr nvarchar,
@bynavn nvarchar,
@land nvarchar
AS
INSERT INTO tblBestillinger  (navn,adresse,telefon,email,postnr,bynavn,land)
VALUES (@navn,@adresse,@telefon,@email,@postnr,@bynavn,@land)
GO





<%
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "NavnAdresseInsert"
cmd.Parameters.Append(cmd.CreateParameter("@navn", adVarChar, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@adresse", adVarChar, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@telefon", adVarChar, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@email", adVarChar, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@postnr", adVarChar, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@bynavn", adVarChar, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@land", adInteger, adParamInput)
cmd.Parameters("@navn")="jesper"
cmd.Parameters("@adresse")="hansen"
cmd.Parameters("@telefon")="86868686"
cmd.Parameters("@email")="jesperhansen@mail.com"
cmd.Parameters("@postnr")="8000"
cmd.Parameters("@bynavn")="Viborg"
cmd.Parameters("@stat")="ca"
cmd.Parameters("@land")=1
cmd.Execute
%>
Avatar billede arne_v Ekspert
12. september 2005 - 23:38 #1
har du defineret ad konstanterne ??
Avatar billede jesperfjoelner Nybegynder
12. september 2005 - 23:44 #2
Nej det tror jeg ikke jeg har. Jeg har ikke andet end det jeg har skrevet her.
Jeg er HELT ny med MSSQL :-) og prøver mig bare lidt frem.
Avatar billede arne_v Ekspert
12. september 2005 - 23:47 #3
prøv og sæt følgende ind i toppen:

adParamInput = 1
adParamOutput = 2
adParamReturnValue = 4

adInteger = 3
adDate = 7
adVarChar = 200

adCmdStoredProc = 4
Avatar billede jesperfjoelner Nybegynder
12. september 2005 - 23:53 #4
Jeg har indsat dem i toppen af asp-klumpen, så den så således ud:

<%
adParamInput = 1
adParamOutput = 2
adParamReturnValue = 4
adInteger = 3
adDate = 7
adVarChar = 200
adCmdStoredProc = 4

Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "NavnAdresseInsert"
cmd.Parameters.Append(cmd.CreateParameter("@navn", adVarChar, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@adresse", adVarChar, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@telefon", adVarChar, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@email", adVarChar, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@postnr", adVarChar, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@bynavn", adVarChar, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@stat", adVarChar, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@land", adInteger, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@betalingstype", adInteger, adParamInput)
cmd.Parameters.Append(cmd.CreateParameter("@notat", adVarChar, adParamInput)

cmd.Parameters("@navn")="jesper"
cmd.Parameters("@adresse")="hansen"
cmd.Parameters("@telefon")="26555592"
cmd.Parameters("@email")="jesperhansen@gmail.com"
cmd.Parameters("@postnr")="8800"
cmd.Parameters("@bynavn")="Viborg"
cmd.Parameters("@stat")="ca"
cmd.Parameters("@land")=1
cmd.Parameters("@betalingstype")=1
cmd.Parameters("@notat")="dddd"
cmd.Execute
%>


og SP'en:

CREATE PROCEDURE NavnAdresseInsert
@navn nvarchar,
@adresse nvarchar,
@telefon nvarchar,
@email nvarchar,
@postnr nvarchar,
@bynavn nvarchar,
@stat nvarchar,
@land int,
@betalingstype nvarchar,
@notat ntext
AS
INSERT INTO tblBestillinger  (navn,adresse,telefon,email,postnr,bynavn,stat,land,betalingstype,notat)
VALUES (@navn,@adresse,@telefon,@email,@postnr,@bynavn,@stat,@land,@betalingstype,@notat)
GO



jeg får dog stadig en fejl i linjen:
"cmd.Parameters.Append(cmd.CreateParameter("@navn", adVarChar, adParamInput)"
Avatar billede arne_v Ekspert
12. september 2005 - 23:55 #5
øh - nu tæller jeg lige parenteser ....
Avatar billede arne_v Ekspert
12. september 2005 - 23:55 #6
(()
Avatar billede jesperfjoelner Nybegynder
12. september 2005 - 23:57 #7
ja for søren, jeg tester lige.
Avatar billede jesperfjoelner Nybegynder
13. september 2005 - 00:03 #8
jeg tror parenteserne kom i orden. Nu får jeg en
"Illegal assignment: 'adParamInput'"
ved linjen:
"adParamInput = 1"
men jeg har: <!-- #include virtual="/adovbs.inc" -->
i toppen, så det er måske en dobbelt deklaration.

Når jeg fjerner linjerne med initialiseringen af kontanterne får jeg fejlen:

"ADODB.Parameters (0x800A0E7C)
Parameter object is improperly defined. Inconsistent or incomplete information was provided."

ved linjen:

"cmd.Parameters.Append(cmd.CreateParameter("@navn", adVarChar, adParamInput)"

Jeg beklager den lange process. Kan jeg for øvrigt tilføje nogle flere point til spørgsmålet?
Avatar billede arne_v Ekspert
13. september 2005 - 00:05 #9
ja - så fjerner du de ad konstanter igen
Avatar billede arne_v Ekspert
13. september 2005 - 00:06 #10
Avatar billede arne_v Ekspert
13. september 2005 - 00:08 #11
har du sat conn ?
Avatar billede jesperfjoelner Nybegynder
13. september 2005 - 00:15 #12
Ja det er så'n her. Jeg kan godt lave SELECTs.


Dim conn    'connection object
Dim DSN        'connectionstring
Set conn=Server.CreateObject("ADODB.Connection")
DSN = "Provider=SQLOLEDB.1;
Server=mssql.domaene.dk;
Database=databasenavn;
Uid=brugernavn;
Pwd=xxx;
Network=DBMSSOCN"   
conn.open DSN

mystisk.

Det må være noget med variablerne for det fungerede ok, men SP uden parametre.

CREATE PROCEDURE [testproc] AS
INSERT INTO tblBestillinger (bestillingID,navn,adresse) VALUES (1,2,3)
GO

Den kører lige igennem.
Avatar billede arne_v Ekspert
13. september 2005 - 20:42 #13
prøv og tilføj længde på dine varchars
Avatar billede arne_v Ekspert
13. september 2005 - 20:43 #14
cmd.Parameters.Append(cmd.CreateParameter("@navn", adVarChar, adParamInput, 50)
Avatar billede arne_v Ekspert
13. september 2005 - 20:47 #15
ellers prøv enten

1)  ændre din SP fra NVARCHAR til VARCHAR

eller

2)  ændre fra adVarChar til adVarWChar
Avatar billede jesperfjoelner Nybegynder
13. september 2005 - 22:49 #16
Herligt, nu virker det. Det var længden på VarChars, der skulle tilføjes.
Alle tiders. Læg lige et svar :-) Tusind tak for hjælpen.
Avatar billede arne_v Ekspert
13. september 2005 - 22:52 #17
svar kommer her
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
Computerworld tilbyder specialiserede kurser i database-management

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