uddenMedlem sedan mars 200174 inlägg 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 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 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 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 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 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 Kanon, tack för mycket bra svar o länkar, fungerar perfekt.
------------------
Udden.