webForumDet fria alternativet

Stored procedure-problem

5 svar · 212 visningar · startad av Andy

AndyMedlem sedan sep. 2001138 inlägg
#1

Får ett felmeddelande när jag anropar en stored procedure på en sida:

Error converting data type varchar to datetime.

/members/default.asp, line 281

Anropet ser ut så här:

Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = Connect
cmd.CommandType = adCmdText
cmd.CommandText = "sp_listTopicsByUser '" & trim(Session("userid")) & "','" & CDate(Session("lastVisit")) & "'"
set rs = cmd.execute

Rad 279 är den sista, dvs: set rs = cmd.execute

Min store procedure ser ut så här:

CREATE PROCEDURE sp_listTopicsByUser 
@id int,
@lastvisit datetime

AS

SELECT     ID AS ID, Title AS Title, [Date] AS Date,
                          (SELECT     COUNT(*)
                            FROM          tablePosts
                            WHERE      BelongsToTopic = tt.ID) AS Replies,
                          (SELECT     COUNT(*)
                            FROM          tablePosts
                            WHERE      (BelongsToTopic = tt.ID AND Date > @lastvisit)) AS NewReplies
FROM         tableTopics tt
WHERE     (Poster = @id)
ORDER BY [Date] DESC
GO

Skriver jag ut cmd.CommandText-strängen med response.write får jag följande resultat:

sp_listTopicsByUser '1','27-11-2001 10:00:31'

LarsGMedlem sedan dec. 200012 465 inlägg
#2

Vilket datumformat har du specificerat för databasen?

Det finns ett sql-server kommando som heter

set dateformat

där man kan ange hur datumvärden skall tolkas. Default är att det tolkas som mdy dvs månad dag år.

set dateformat dmy

skulle då bli att man tolkar datum som dag månad år.

------------------
essentitia preter non sans multiplicandum

AndyMedlem sedan sep. 2001138 inlägg
#3

Det fixade sig när jag lade in

Session.LCID = 1033

En fråga dock - var lägger jag in

set dateformat mdy

?

Får det inte att fungera med den kodsnutten, nämligen.

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Då så, men annars så borde du kunna lägga till set i din procedur eller så

cmd.CommandText = "set dateformat dmy exec sp_listTopicsByUser '" & trim(Session("userid")) & "','" & CDate(Session("lastVisit")) & "'"

------------------
essentitia preter non sans multiplicandum

AndyMedlem sedan sep. 2001138 inlägg
#5

Man kan inte lägga till set dateformat så att det gäller på hela siten? Jag har ju en includefil som förekommer på alla sidor på siten. Det går inte att lägga in där på något sätt?

LarsGMedlem sedan dec. 200012 465 inlägg
#6

Jo, det borde bli ok. Så vitt jag förstår så gäller det tillsvidare inom sessionen.

Sen så går det nog också att bestämma per databas. Det hänger nog ihop med vilket språk man har valt, men det är inget som jag har tittat på.

------------------
essentitia preter non sans multiplicandum

Genererad på 392 ms · cache AV · v20260730165559-full.f96bc7eb