webForumDet fria alternativet

@@identity

ASPur ASP

6 svar · 134 visningar · startad av Mz

Medlem sedan aug. 2001139 inlägg
Frågan#1

Hej.

Blev tvungen att använda Access97 i ett projekt, tyvärr så fungerar inte @@identity med 97an. Skulle nu behöva lite hjälp att få min kod "97-kompatibel".
Jag har sökt och läst en massa artiklar om det men jag lyckas inte...

Min Access2000 kod:

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("..\db\u_db.mdb")
SQL = "SELECT uMail FROM Users WHERE uMail = '"& trim(Request.Form("mail")) &"' AND uManad = '"& manad &"'"
Set RecSet = Connect.Execute(SQL)
	
If RecSet.EOF Then

	txNAMN = trim(Request.Form("namn"))
	txMAIL = trim(Request.Form("mail"))
	Connect.Execute ("INSERT INTO Users(uNamn, uMail) VALUES('"& txNAMN &"','"& txMAIL &"'")
		
	Set RecSet = Connect.Execute("SELECT @@identity")
	Session("User") = RecSet(0)
		
	RecSet.Close
	Connect.Close

	Response.Redirect "tack.asp"
		
Else
	Response.Write "Finns redan"

End If
	
RecSet.Close
Connect.Close

Set RecSet = Nothing
Set Connect = Nothing
%>

Kan någon vänlig själ hjälpa mig få den här koden 97-kompatibel?
Evigt tacksam!

------------------
~ Mz ~

Medlem sedan dec. 200012 464 inlägg
#2

Du måste använda addnew, här finns ett exempel
http://www.eggheadcafe.com/PrintSearchContent.asp?LINKID=117

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

Medlem sedan aug. 2001139 inlägg
#3

Jo jag har läst på den sidan innan och testat med exemplet, men jag får inte ihop det med min SQL-fråga och så.. Jag måste ju köra ett test för att kolla om värdet redan finns.

Dessutom fattar jag inte var jag stoppar in samtliga värden i databasen.
.Fields("MYCOLUMNNAME") <- ?

------------------
~ Mz ~

*/ Stavfel

[Redigerat av Mz den 02 okt 2001]

Medlem sedan dec. 200012 464 inlägg
#4
SQL = "SELECT * FROM Users WHERE uMail = '"& trim(Request.Form("mail")) &"' AND uManad = '"& manad &"'"

set recset = server.createobject("adodb.recordset")
recset.CursorType = adOpenKeyset
recset.LockType = adLockOptimistic
   
RecSet.open sql,Connect

If RecSet.EOF Then
recset.addnew
recset("uNamn") = trim(Request.Form("namn"))
recset("uMail") = trim(Request.Form("mail"))
recset.update 
Session("User") = RecSet("identitycolumn")

RecSet.Close
Connect.Close

Response.Redirect "tack.asp"

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

Medlem sedan aug. 2001139 inlägg
#5

Tack LarsG men jag får det inte att fungera redigt. Det läggs aldrig till någon ny post, ett felmeddelande dyker upp istället:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access 97 Driver] The Microsoft Jet database engine stopped the process because you and another user are attempting to change the same data at the same time.

Jag kör lokalt på IIS så det finns ingen annan som kan ändra nått..
Någon idé på vad det kan bero på?

------------------
~ Mz ~

Medlem sedan dec. 200012 464 inlägg
#6

Nej, ingen aning, tyvärr.

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

Medlem sedan aug. 2001139 inlägg
#7

Ok, jag har nu lyckats komma runt felmeddelandet genom att använda en dynamisk cursor istället för en statisk.. dock får jag inte fram ID´t från databasen hur jag än gör - det var ju det som var lite medningen med det hela.. ;)

Så här ser min kod ut nu:

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("..\db\quiz.mdb")
SQL = "SELECT * FROM Users WHERE uMail = '"& trim(Request.Form("mail")) &"' AND uManad = '"& manad &"'"
Set RecSet = Server.CreateObject("ADODB.Recordset")
RecSet.CursorType = adOpenDynamic
RecSet.LockType = adLockOptimistic

RecSet.open sql,Connect

If RecSet.EOF Then
		RecSet.addnew
		RecSet("uNamn") = trim(Request.Form("namn"))
		RecSet("uMail") = trim(Request.Form("mail"))
		RecSet("uOrt") = trim(Request.Form("ort"))
		RecSet("uJobb") = trim(Request.Form("yrke"))
		RecSet("uDate") = Now()
		RecSet("uManad") = manad
		RecSet("uPoints") = "0"
		RecSet("u1") = "0"
		RecSet("u2") = "0"
		RecSet("u3") = "0"
		RecSet("u4") = "0"
		RecSet("u5") = "0"
		RecSet("u6") = "0"
		RecSet("u7") = "0"
		RecSet("u8") = "0"
		RecSet("u9") = "0"
		RecSet("u10") = "0"
		RecSet.update 
		Session("User") = RecSet("uID")
		Response.Redirect "quiz.asp?action=question&q=1"

Else
		Response.Write "Text..."

End If

RecSet.Close
Connect.Close

Set RecSet = Nothing
Set Connect = Nothing

Någon aning om varför ID´t som finns i uID inte kommer med i sessionen?

------------------
~ Mz ~

136 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)