PersonID måste ligga med i SQLfrågan för att du ska kunna få ut en post med det nyss inlaggda id'et. Gör det inte det finns det ingen post i recordsetet som heter - PersonID (rsUsers("PersonID"))
cya,
PatrikB
18 svar · 333 visningar · startad av Lina
Jahapp, så var det dags igen...
Så här ser koden ut:
set rsUsers = Server.CreateObject("ADODB.Recordset")
rsUsers.Open "Person", Conn, adOpenForwardOnly, adLockOptimistic, adCmdTable
rsUsers.Filter = "EMailAddress = '" & Request.Form("email") & "'"
if rsUsers.EOF then
rsUsers.AddNew
rsUsers("NickName") = Request.Form("NickName")
rsUsers("Surname") = Request.Form("LastName")
rsUsers("FirstName") = Request.Form("FirstName")
rsUsers("EMailAddress") = Request.Form("email")
rsUsers("Password") = Request.Form("password")
rsUsers("StreetAddress1") = Request.Form("Address1")
rsUsers("StreetAddress2") = Request.Form("Address2")
rsUsers("State") = Request.Form("State")
rsUsers("PostalCode") = Request.Form("PostalCode")
rsUsers("Country") = Request.Form("Country")
rsUsers("Active") = True
rsUsers("LastLogin") = Now
rsUsers.Update
Else
Response.Redirect "registrer.asp?takenMailadr=True"
End If
Response.Write(rsUsers("PersonID"))
strHulePersonID = rsUsers("PersonID")
Response.Write(strHulePersonID)
Problemet jag har är att jag när jag har skapat den nya posten inte får upp nåt id....
Eftersom ag inte är så jättehaj på det här med öppet rs så kanske det finna nån som kan hjälpa mig....
Eller kan man inte göra så här???
PersonID måste ligga med i SQLfrågan för att du ska kunna få ut en post med det nyss inlaggda id'et. Gör det inte det finns det ingen post i recordsetet som heter - PersonID (rsUsers("PersonID"))
cya,
PatrikB
Hmmm...
Nu blir jag förvirrad ännu mer....
Erkänner att helt plötsligt fattar jag noll....
Den koden jag visade i mitt förra inlägg är den kod jag har...
Det är inte jag som har gjort koden från början tyvärr utan jag ska bygga på den lite till nu bara....
Det är ju dock inte så bara tydligen...
Jag ser ingen SQL-sats alls....
Trodde att den hämtade upp alla fält i tabellen Person med raden:
rsUsers.Open "Person", Conn, adOpenForwardOnly, adLockOptimistic, adCmdTable
Är det inte så????
he, he .... jo, så är det och den koden du har efter if-satsen "bör" funka och innehålla id'et för den senaste posten.
om du kör ms-sql eller access2k så kan du testa med detta:
strSQLid = "SELECT @@IDENTITY"
Set objRSid = Conn.Execute(strSQLid)
strHulePersonID = objRSid(0)
Set objRSid = Nothing
cya,
PatrikB
Jodå, det är det. Koden ser helt okej ut, men det kan strula med vissa versioner av JET OLEDB.
Har du inkluderat adovbs.inc?
Nä, den filen verkar inte vara inkluderad...
Men det underligaste är ju att detta har funkat innan i koden och jag kan inte förstå varför det helt plötsligt skulle sluta funka....
Men men.... Jag ska inte vara den som är den...
Testar att inkludera den då....
Jahapp... Nu har jag testat att infoga den filen också det hjälpte ändå inte...
Börjar bli lite irriterad på det här nu...
De koderna jag labbar med är två filer som skall läggas ihop till en...
De fungerar var och en för sig och i dessa filer används öppet rs för att skapa nya poster...
Jag får i ursprungsfilen med id:t, men när jag läggar ihop dom så struntar den i id:t trots att jag inte ändrt nån kod...
Bara lagt ihop filerna som sagt...
Jag måste lägga ihop dessa filer för vi har märkt att det ibland klickar i redirecten dem emellan........
Snälla, hjälp mig!
Ingen som har nåt förslag????
Har jobbat lite med detta efter och med hjälp av en loop skriver jag ut alla values i rsUsers.Fields
Då får jag upp alla fälten, men id:t är tomt...
Även om jag har gjort en ny post med hjälp av rsUsers.AddNew och rsUsers.Update så ska väl id:t finnas i recordsetet eller hur funkar det?
Nån som har nåt förslag på en bättre lösning?
set rsUsers = Server.CreateObject("ADODB.Recordset")
rsUsers.Open "Person", Conn, adOpenForwardOnly, adLockOptimistic, adCmdTable
rsUsers.Filter = "EMailAddress = '" & Request.Form("email") & "'"
if rsUsers.EOF then
rsUsers.AddNew
rsUsers("NickName") = Request.Form("NickName")
rsUsers("Surname") = Request.Form("LastName")
rsUsers("FirstName") = Request.Form("FirstName")
rsUsers("EMailAddress") = Request.Form("email")
rsUsers("Password") = Request.Form("password")
rsUsers("StreetAddress1") = Request.Form("Address1")
rsUsers("StreetAddress2") = Request.Form("Address2")
rsUsers("State") = Request.Form("State")
rsUsers("PostalCode") = Request.Form("PostalCode")
rsUsers("Country") = Request.Form("Country")
rsUsers("Active") = True
rsUsers("LastLogin") = Now
rsUsers.Update
session("PersonID") = rsUsers("PersonID")
Else
Response.Redirect "registrer.asp?takenMailadr=True"
End If
Response.Write(session("PersonID"))
strHulePersonID = session("PersonID")
Response.Write(strHulePersonID)
...kanske?
Tack för försöket Brimba...
Men det är just det att jag kan inte göra något alls med id:t....
Får inte fram nåt oavsett vad jag ska göra eller var jag ska göra det...
Ser att det lagras ett id i databasen, men jag kan inte få fram det via mitt recordset....
Det är säkert ett busenkelt fel, men jag kan inte se det.....
Prova att lägga in en rsUsers.Resync eller rsUsers.Movelast efter update.
Skall du inte köra adOpenKeyset istället för adOpenForwardOnly?
PersonID, är en räknare förmodar jag?
Jag vet inte vilken databas du använder. Vissa rdbms kan inte returnera id:n. Kör du access aller ms sql torde det räcka med att byta cursor. Prova med adOpenDynamic.
Skriver jag rsUsers.MoveLast Så får jag fel:
Rowset does not support fetching Microsoft OLE DB Provider for SQL Server (0x80040E24)
Rowset does not support fetching backward.
och skriver jag rsUsers.Resync så får jag felet:
ADODB.Recordset (0x800A0CB3)
Object or provider is not capable of performing requested operation
Ska prova Brimbas förslag med...
Har bytt cursor och testat era förslag, men jag får ändå bara massa fel....
AdOpenKeyset:
Microsoft OLE DB Provider for SQL Server (0x80040E21)
Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done
adOpenDynamic:
Blir det inget fel på... Men jag får inte fram nåt id ändå...
Det jag inte fattar är hur den befintliga sidan som koden kommer ifrån kan fungera...
Jag har ju inte ändrat nåt ju....
Jag kör såhär, och det fungerar perfekt.
Varför det inte fungerar för dig kan jag inte svara på...tyvärr...
Set RSObj = Server.CreateObject("ADODB.Recordset")
RSObj.ActiveConnection = Connection
RSObj.CursorType = 1 ' adOpenKeyset
RSObj.LockType = 3 'adLockOptimistic
RSObj.Source = "Person"
RSObj.Open
RSObj.AddNew
RSObj("Active") = True
RSObj.Update
Session("PersonID") = RSObj("PersonID")
RSObj.Close
Åhhhhh.....
Nu funkar det helt plötsligt...
Skrev in AdOpenKeyset en gång till och då fick jag upp id:t....
Fattar ingenting.... Men tack ändå alla...
Kram på er!
weee