Ik probeer het volgende te bereiken: een record opslaan in een database middels een stored procedure q_saveSubject. De SP kijkt of het record bestaat, zo ja dan doet ie een update, zo nee, dan een insert. So far so good.
Nu return ik in die SP het ID wat het record heeft gekregen. Bij een insert is dit het laatste ID, bij een update is dit ID reeds meegegeven.
De stored procedure:
Als ik deze SP gewoon in de query analyser aanroep werkt het gewoon. Maar vanuit ASP wil ik het resultaat van de SP in een recordset zetten om vervolgens dat ID weer uit te lezen. Maar ik krijg al een foutmelding (Operation is not allowed when the object is closed) als ik check op rsSubject.EoF (regel 6 in onderstaand asp voorbeeld).
Hoe kan dit??
Nu return ik in die SP het ID wat het record heeft gekregen. Bij een insert is dit het laatste ID, bij een update is dit ID reeds meegegeven.
De stored procedure:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| CREATE PROCEDURE q_saveSubject
@intSubjectID int,
@intCategoryID int,
@strDescription varchar(100),
@strSubjecttext varchar(512),
@strBodytext varchar(1024),
@datDate datetime,
@strPath varchar(100),
@strPicturePath varchar(100),
@intUserID int,
@strExternalID varchar(20)
AS
If exists (SELECT ID FROM Subject WHERE ID = @intSubjectID)
BEGIN
UPDATE Subject SET
Category_ID = @intCategoryID,
[Description] = @strDescription,
Subjecttext = @strSubjecttext,
Bodytext = @strBodytext,
[Date] = @datDate,
Path = @strPath,
PicturePath = @strPicturePath,
UpdateDate = GETDATE(),
[User_ID ] = @intUserID,
External_ID = @strExternalID
WHERE [ID] = @intSubjectID
SELECT @intSubjectID AS ID
END
ELSE
BEGIN
INSERT INTO Subject ( Category_ID, [Description], Subjecttext, Bodytext, Path, PicturePath, UpdateDate, [User_ID], External_ID)
VALUES (@intCategoryID, @strDescription, @strSubjecttext, @strBodytext, @strPath, @strPicturePath, GETDATE(), @intUserID, @strExternalID)
SELECT IDENT_CURRENT('Subject') AS ID
END
GO |
Als ik deze SP gewoon in de query analyser aanroep werkt het gewoon. Maar vanuit ASP wil ik het resultaat van de SP in een recordset zetten om vervolgens dat ID weer uit te lezen. Maar ik krijg al een foutmelding (Operation is not allowed when the object is closed) als ik check op rsSubject.EoF (regel 6 in onderstaand asp voorbeeld).
code:
1
2
3
4
5
6
7
8
9
| Set rsSubject = Server.CreateObject("ADODB.Recordset")
spSubject = "q_saveSubject " & .... parametes ....
rsSubject.Open spSubject, dbConnectie, adOpenForwardOnly, adLockReadOnly
If Not rsSubject.EoF Then
intSubjectID = Str2Num( rsSubject("ID"))
End If
rsSubject.Close |
Hoe kan dit??