Oprettet lør. d. 15. januar 2005 kl. 22:45:07

eldaria
eldaria (20.814 point. Point ude: 0)

SQL Stored Procedure og ASP kode meget underligt problem.

Jeg har et Virkeligt underligt problem.
Jeg har oprettet nogle ASP sider, der alle bruger en fælles Function til at eksekvere Stored Procedures på en SQL server.
Men, på de fleste sider der virker det, men for en enkelt der virker det ikke, Og jeg kan simpelten ikke finde ud af vad der genererer den fejl besked.
Jeg har inkluderet all kode jeg kan se relevant, Den line som fejl beskeden referer til er den hvor den eksekverer koden til SQL serveren, Jeg har markeret den med --->>>

Jeg er ved at få hovedpine af dette her.
Sig til om du skal bruge noget mere.

Fejl beskeden Finder du i sluttnigen.
Jeg har lagt nogle debug linier ind i koden så i kan se vad det er den prøver at sende til databasen.


FunktionenÆ
-----------------
Function RetSParg(strSP, ReturnRec, Fields(), FieldTypes(), RetVal, Values())
    Dim cmdSP
    Dim I
    Set cmdSP = Server.CreateObject("ADODB.Command")
    With cmdSP
        .ActiveConnection = cn
        .CommandText = strSP
        .CommandType = adCmdStoredProc
        For i = LBound(Values) to UBound(Values)
            Select Case FieldTypes(i)
                Case adVarChar
                    response.write("Field=" & Fields(i) & " - FieldType=" & FieldTypes(i) & " - Length=" & Len(Values(i)) & " - Value=" & Values(i) & "<br/>")
                    .Parameters.Append .CreateParameter(Fields(i), FieldTypes(i), adParamInput, Len(Values(i)), Values(i))
                Case adInteger
                    response.write("Field=" & Fields(i) & " - FieldType=" & FieldTypes(i) & " - Value=" & Values(i) & "<br/>")
                    .Parameters.Append .CreateParameter(Fields(i), FieldTypes(i), adParamInput, , Values(i))
            End Select
        Next
    Select Case ReturnRec
        Case True
--->>>            Set rsRet = .Execute
        Case False
            .Execute , , adExecuteNoRecords
    End Select
    Select Case RetVal
        Case 0
        Case Else
            RetSParg = .Parameters(RetVal).Value
    End Select
    End With
    set ParamId = Nothing
    set cmdSP = Nothing
    set i = nothing
End Function
-----------------


Stored Procedures Der Virker:
-----------------
CREATE PROC spSMS_ListTemplatesByCat
@Catid INT
AS
SELECT SMSTemplateID, SMSTemplateTitle, SMSTemplateText, SMSTemplateCatID
FROM tbl_SMS_Template
WHERE (SMSTemplateCatID = @Catid)
GO

CREATE PROC spSMS_AddCat
@categorytext VARCHAR(16)
AS
INSERT INTO tbl_SMS_Category (SMSCategoryText)
VALUES (@categorytext)
GO
-----------------

Stored Procedure Der ikke virker:
-----------------
CREATE PROC spSMS_AddTemplate
@title VARCHAR(20),
@text VARCHAR(160),
@catID INT
AS
INSERT INTO tbl_SMS_Template (SMSTemplateTitle, SMSTemplateText, SMSTemplateCatID)
VALUES (@title, @text, @catID)
GO
-----------------


Code i ASP Siderne:

Virker:
-----------------
Dim Values
Dim Fields
Dim FieldTypes
Values = Array(Request.Form("txtText"))
Fields = Array("@CategoryText")
FieldTypes = Array(adVarChar)
call RetSParg("spSMS_AddCat", False, Fields, Fieldtypes, 0, Values)
-----------------

Virker også:
-----------------
Dim Values
Dim Fields
Dim FieldTypes
Values = Array(CatID)
Fields = Array("@CatId")
FieldTypes = Array(adInteger)
call RetSParg("spSMS_ListTemplatesByCat", True, Fields, FieldTypes, 0, Values)
Do until rsRet.EOF
-----------------

Virker ikke:
-----------------
Dim Values
Dim Fields
Dim FieldTypes
Values = Array(Request.Form("selCategory"), Request.Form("txtText"), Request.Form("txtTitle"))
Fields = Array("@CatID", "@Text", "@title")
FieldTypes = Array(adInteger, adVarChar, adVarChar)
call RetSParg("spSMS_AddTemplate", False, Fields, Fieldtypes, 0, Values)

-----------------

Resultatet:
-----------------
Field=@CatID - FieldType=3 - Value=8
Field=@Text - FieldType=200 - Length=67 - Value=Testing a Text for a Category, this is a bit longer.
Field=@title - FieldType=200 - Length=16 - Value=Testing Title

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

[Microsoft][ODBC SQL Server Driver][SQL Server]Error converting data type varchar to int.

/Includes/commoninc.asp, line 73
-----------------

Skrevet lør. d. 15. januar 2005 kl. 22:49:42| #1

arne_v
arne_v (1.005.618 point)
Gæt: argument rækkefølgen

Values = Array(Request.Form("selCategory"), Request.Form("txtText"), Request.Form("txtTitle"))
Fields = Array("@CatID", "@Text", "@title")
FieldTypes = Array(adInteger, adVarChar, adVarChar)

versus

CREATE PROC spSMS_AddTemplate
@title VARCHAR(20),
@text VARCHAR(160),
@catID INT

Skrevet søn. d. 16. januar 2005 kl. 17:54:57| #2

eldaria
eldaria (20.814 point)
Ja det virkedem
Underligt at man skal sende parameterene i en specifik orden, Jeg troede nui at det var grunden til at man sender Parameter Navn og Type sammen med værdien, for om man nu aligevel sender den i den riktigt orden så er der jo ikke nogen grund til at sende parameter type og navn med?
Men smid et svar og få dine points. :-)

Skrevet søn. d. 16. januar 2005 kl. 17:58:09| #3

arne_v
arne_v (1.005.618 point)
Jeg tror ikke at navnene i ADODB.Command parameters er er relateret til
navnene i argument listen af SP men kun til hvordan du sætter og henter dem
i applikationen.

Skrevet søn. d. 16. januar 2005 kl. 17:58:19| #4


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Udskrive mappens navn

Oprettet den 8. februar 2012 kl. 13.32
no_doubt giver 60 point for svar | Giv et svar »

Flere tæller/counter SQL og ASP!

Oprettet den 7. februar 2012 kl. 20.09
denny giver 30 point for svar | Giv et svar »

hjælp til fejl

Oprettet den 1. februar 2012 kl. 10.54
sth giver 100 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger