webForumDet fria alternativet

INSERT - händer inget!

ASPur ASP

6 svar · 150 visningar · startad av udden

uddenMedlem sedan mars 200174 inlägg
#1

Varför händer inget? Jag hämtar ett recordset och jämför datum, om datumet inte hittas, och en addera-knapp tryckts, så vill jag insert'a. Kod:

Set conn = Server.CreateObject("ADODB.Connection")
Set rstemp = Server.CreateObject("ADODB.Recordset")
Set rsclone = Server.CreateObject("ADODB.Recordset")
Set cmd = Server.CreateObject("ADODB.Command")

conn.ConnectionTimeout = 30
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\test\db\test.mdb")

Set cmd.ActiveConnection = conn
strSQL = "SELECT * FROM UserEdu WHERE UserAlias='" & temp_sign & "'"
cmd.CommandText = strSQL
rstemp.Open cmd.Execute(, , adCmdText)

Do While rstemp.EOF = False
If CDate(rstemp("EduDate")) = temp_datum Then dubb = True
rstemp.MoveNext
Loop
If temp_submit="addera" AND dubb = False Then
cmd.ActiveConnection = conn
tmpSQL = "INSERT into UserEdu (UserAlias,EduDate) VALUES ('" & temp_sign & "',#" & temp_datum & "#)"
cmd.Execute(tmpSQL)
conn.Close
rstemp.Close
End If

Inserten sker aldrig, och får inte ens något felmeddelande. Kollat att rstemp fungerar. Vet även att den går in i if-satsen. Inte så haj på rs o cmd o dyl. Något som inte verka stämma?

------------------
Udden.

uddenMedlem sedan mars 200174 inlägg
#2

Ett tillägg:

Om jag istället för:
tmpSQL = "...sqlsatsen..."
cmd.Execute(tmpSQL)

Skriver:
cmd.CommandText = "...sqlsatsen..."
cmd.Execute(, , adCmdText)

som när jag hämtar rstemp, så får jag felmeddelandet:

Microsoft VBScript compilation (0x800A0414)
Cannot use parentheses when calling a Sub
/test/edu_add.asp, line 36, column 26
cmd.Execute(, , adCmdText)

Nog inte hajat skillnaderna dem emellan? Vilken ska jag använda? Vilken ger bäst lösning?

------------------
Udden.

LarsGMedlem sedan dec. 200012 464 inlägg
#3
if temp_submit = "addera" then
Set conn = Server.CreateObject("ADODB.Connection")

conn.ConnectionTimeout = 30
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\test\db\test.mdb")

strSQL = "SELECT * FROM UserEdu WHERE UserAlias='" & temp_sign & "'"  & _
" and EduDate = #" & temp_datum & "#"

set rstemp = conn.execute(strSQL)
if  rstemp.eof then
tmpSQL = "INSERT into UserEdu (UserAlias,EduDate) VALUES ('" & temp_sign & "',#" & temp_datum & "#)"
conn.Execute tmpSQL,,128
end if
conn.Close
rstemp.Close
End If

Om man anropar en sub så skall man inte ha parenteser. Du behöver inget commandobjekt.

Jag skrev om lite så att du slipper hämta flera poster.

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

[Redigerat av LarsG den 19 aug 2001]

uddenMedlem sedan mars 200174 inlägg
#4

Smart, tack för de tipsen!

Två frågetecken dock:

1. får ett felmeddelande på slutet, rstemp.Close ger:
ADODB.Recordset (0x800A0E78)
Operation is not allowed when the object is closed.

Vilket är konstigt för jag stänger ju det inte någon annanstans. Obs dock att det fungerar utmärk om jag tar bort denna rad.

2. Vad står 128 för i conn.Execute tmpSQL,,128?

------------------
Udden.

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Oj då. Om du stänger recordsetet innan connection stängs så borde det bli bättre.

rstemp.Close
conn.Close

Fråga 2
http://cgi.webforum.nu/wf/Forum11/HTML/005881.html

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

jorgenMedlem sedan feb. 20012 412 inlägg
#6

Hej!

Eftersom det inte skapas ett recset vid en insert, så kan du inte stänga något som inte finns.

därför räcker det att skriva:

conn.Execute(tmpSQL)

eller ännu hellre som LarsG skrev:

conn.Execute tmpSQL,,128

Kolla dagens motivering varför:
http://cgi.webforum.nu/wf/Forum11/HTML/005881.html

mvh Jörgen

------------------
*** Var går gränsen mellan långa kortbyxor och korta långbyxor? ***

uddenMedlem sedan mars 200174 inlägg
#7

Kanon, tack för mycket bra svar o länkar, fungerar perfekt.

------------------
Udden.

129 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)