Jag har problem med att uppdatera ett "datetime"-fält vid namn "datum" i en mysql-databas till dagens datum i format av typ: yyyy-mm-dd hh:mm:ss. försök undvika att använda reserverade ord som datum, döp istället fältet till actualdate eller currentdate eller orderdate osv. Nu vet jag inte om MySQL har fältet datum som reserverat ord.. har nu bytt namn på fätet till "actualdate" men det hjälper inte får ändå samma felmeddelande. Fältet är av typ datetime. Beror på att du inte har ett rediger bart recordset. Du måste öppna det med adLockOptimistic och adOpenKeyset: Ändrade till det du skrev men får då upp felmeddelandet: Set objGetData = Server.CreateObject("ADODB.Recordset") Tackar!!! Jag testade med "objGetData.Update" istället men fick då felmeddelandet: Koden ser alltså ut så här nu: Gissar på att tabellen saknar primär nyckel. Om den gör det. Så bör det fungera om du lägger till en primärnyckel. Du saknade Trotts att du skrev att jag skulle strunta i det så testade jag det du skrev. Kolla även: Så ja. nu vet jag i alla fall att det går att updatera endast den raden och "datum"-fältet. Jippi!!! - Det funkar nu. Tack skall ni ha.Uppdatera objGetData("datum") till NOW [löst]
Får fram detta felmeddelandet när jag kör sidan:
<code>
ADODB.Field fel '800a0cb3'
The operation requested by the application is not supported by the provider.
/community1/aaa/login_check.asp, rad 34
</code>
Koden:
<code>
objGetData("datum") = Now
RecSet.Update
</code>
...Så vad är det som är fel?Sv: Uppdatera objGetData("datum") till NOW
/PelleSv: Uppdatera objGetData(
Här är sidans hela kod:
<code>
<%
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "databasen"
Set objGetData=objCon.Execute("SELECT * FROM members")
Dim poang
'----- Rensar bort sånna som inte loggat ut korrekt.. -------
Do Until objGetData.EOF
If objGetData("status") = "1" AND DateDiff("n", objGetData("actualdate"), Now) > 45 Then
objGetData("status") = "0"
objGetData.Update
End If
objGetData.MoveNext
Loop
objGetData.Close
'---------------- SLUT PÅ UTRENSNINGEN ------------------
objGetData.Open
Do Until objGetData.EOF
If objGetData("username") = Request.Form("username") AND objGetData("losen") = Request.Form("losen") Then
objGetData("actualdate") = Now
objGetData("status") = "1"
objGetData("poang") = objGetData("poang")+1
RecSet.Update
Session("namn") = objGetData("fnamn") & " " & objGetData("enamn")
Session("fnamn") =objGetData("fnamn")
Session("enamn") = objGetData("enamn")
Session("username") = objGetData("username")
Session("login") = "ok"
Session("id") = objGetData("id")
Session("status") = "1"
Session("epost") = objGetData("epost")
Session.TimeOut = 40 '<-- Kontrollera
objGetData.Close
Set objGetData = Nothing
Set objCon = Nothing
Response.Redirect "inne.asp"
End If
objGetData.MoveNext
Loop
objGetData.Close
Set objGetData = Nothing
Set objCon = Nothing
Session("meddelande") = "Tyvärr! Fel användarnamn eller lösenord. Försök igen!"
Response.Redirect "default.asp"
%>
</code>Sv: Uppdatera objGetData(
<code>
<%
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "'" & Month(Value) & "/" & Day(Value) & "/" & Year(Value) & " " & Hour(Value) & ":" & Minute(Value) & ":" & Second(Value) & "'"
Else
SQLDate = "Null"
End If
End Function
Function SQLText(Value)
If Len(Value) Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function
Const adOpenKeyset= 1
Const adLockOptimistic = 3
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "databasen"
Dim poang
'----- Rensar bort sånna som inte loggat ut korrekt.. -------
objCon.Execute "UPDATE members SET status = '0' WHERE status = '1' AND actualdate < " & SQLDate(DateAdd("n", -45, Now))
'---------------- SLUT PÅ UTRENSNINGEN ------------------
objGetData.Open "SELECT * FROM members WHERE username =" & SQLText(Request.Form("username")) & " AND losen = " & SQLText(Request.Form("losen")), objCon, adOpenKeyset, adLockOptimistic
If objGetData.EOF Then
Session("meddelande") = "Tyvärr! Fel användarnamn eller lösenord. Försök igen!"
Response.Redirect "default.asp"
Else
objGetData("actualdate") = Now
objGetData("status") = "1"
objGetData("poang") = objGetData("poang")+1
RecSet.Update
Session("namn") = objGetData("fnamn") & " " & objGetData("enamn")
Session("fnamn") =objGetData("fnamn")
Session("enamn") = objGetData("enamn")
Session("username") = objGetData("username")
Session("login") = "ok"
Session("id") = objGetData("id")
Session("status") = "1"
Session("epost") = objGetData("epost")
Session.TimeOut = 40 '<-- Kontrollera
Response.Redirect "inne.asp"
End If
objGetData.Close
Set objGetData = Nothing
objCon.Close
Set objCon = Nothing
%>
</code> Sv: Uppdatera objGetData(
<code>
Körningsfel i Microsoft VBScript fel '800a01a8'
Objekt krävs.: 'objGetData'
/community1/aaa/login_check.asp, rad 34
</code>
...så vad är det som är fel?
Undrar också varför det just står "1" och "3":
<code>
Const adOpenKeyset= 1
Const adLockOptimistic = 3
</code>Sv: Uppdatera objGetData(
Lägg till denna raden innan raden där felet uppstår.
/JohanSv: Uppdatera objGetData(
Nu är det inget fel på rad 34 i alla fall.
Men nu får jag upp detta felmeddelandet istället:
<code>
Körningsfel i Microsoft VBScript fel '800a01a8'
Objekt krävs.: 'RecSet'
/community1/aaa/login_check.asp, rad 44
</code>
Det som står på rad 34 är "RecSet.Update"Sv: Uppdatera objGetData(
<code>
Microsoft OLE DB Provider for ODBC Drivers fel '80004005'
Query based update failed. The row to update could not be found.
/community1/aaa/login_check.asp, rad 44
</code>Sv: Uppdatera objGetData(
<code>
<%
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "'" & Month(Value) & "/" & Day(Value) & "/" & Year(Value) & " " & Hour(Value) & ":" & Minute(Value) & ":" & Second(Value) & "'"
Else
SQLDate = "Null"
End If
End Function
Function SQLText(Value)
If Len(Value) Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function
Const adOpenKeyset= 1
Const adLockOptimistic = 3
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "databasen"
Dim poang
'----- Rensar bort sånna som inte loggat ut korrekt.. -------
objCon.Execute "UPDATE members SET status = '0' WHERE status = '1' AND actualdate < " & SQLDate(DateAdd("n", -45, Now))
'---------------- SLUT PÅ UTRENSNINGEN ------------------
Set objGetData = Server.CreateObject("ADODB.Recordset")
objGetData.Open "SELECT * FROM members WHERE username =" & SQLText(Request.Form("username")) & " AND losen = " & SQLText(Request.Form("losen")), objCon, adOpenKeyset, adLockOptimistic
If objGetData.EOF Then
Session("meddelande") = "Tyvärr! Fel användarnamn eller lösenord. Försök igen!"
Response.Redirect "default.asp"
Else
objGetData("actualdate") = Now
objGetData("status") = "1"
objGetData("poang") = objGetData("poang")+1
objGetData.Update
Session("namn") = objGetData("fnamn") & " " & objGetData("enamn")
Session("fnamn") =objGetData("fnamn")
Session("enamn") = objGetData("enamn")
Session("username") = objGetData("username")
Session("login") = "ok"
Session("id") = objGetData("id")
Session("status") = "1"
Session("epost") = objGetData("epost")
Session.TimeOut = 40 '<-- Kontrollera
Response.Redirect "inne.asp"
End If
objGetData.Close
Set objGetData = Nothing
objCon.Close
Set objCon = Nothing
%>
</code>
...när jag kör sidan så får jag alltså fram felmeddelandet:
<code>
Microsoft OLE DB Provider for ODBC Drivers fel '80004005'
Query based update failed. The row to update could not be found.
/community1/aaa/login_check.asp, rad 44
</code>
Någon måste väll vet vad det är för fel. Har försökt fatta men näää... fattar inte vad felet är.
Kan det vara någon felinställning i MySql kanske, tja inte vet jag.
Hjälp mig, snälla , någon?Sv: Uppdatera objGetData(
Sv: Uppdatera objGetData(
objGetData.addnew i din else sats
prova detta
// henke
<code>
<%
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "'" & Month(Value) & "/" & Day(Value) & "/" & Year(Value) & " " & Hour(Value) & ":" & Minute(Value) & ":" & Second(Value) & "'"
Else
SQLDate = "Null"
End If
End Function
Function SQLText(Value)
If Len(Value) Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function
Const adOpenKeyset= 1
Const adLockOptimistic = 3
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "databasen"
Dim poang
'----- Rensar bort sånna som inte loggat ut korrekt.. -------
objCon.Execute "UPDATE members SET status = '0' WHERE status = '1' AND actualdate < " & SQLDate(DateAdd("n", -45, Now))
'---------------- SLUT PÅ UTRENSNINGEN ------------------
Set objGetData = Server.CreateObject("ADODB.Recordset")
objGetData.Open "SELECT * FROM members WHERE username =" & SQLText(Request.Form("username")) & " AND losen = " & SQLText(Request.Form("losen")), objCon, adOpenKeyset, adLockOptimistic
If objGetData.EOF Then
Session("meddelande") = "Tyvärr! Fel användarnamn eller lösenord. Försök igen!"
Response.Redirect "default.asp"
Else
objGetData.addnew ' måste skapa en ny rad innan du lägger in
objGetData("actualdate") = Now
objGetData("status") = "1"
objGetData("poang") = objGetData("poang")+1
objGetData.Update
Session("namn") = objGetData("fnamn") & " " & objGetData("enamn")
Session("fnamn") =objGetData("fnamn")
Session("enamn") = objGetData("enamn")
Session("username") = objGetData("username")
Session("login") = "ok"
Session("id") = objGetData("id")
Session("status") = "1"
Session("epost") = objGetData("epost")
Session.TimeOut = 40 '<-- Kontrollera
Response.Redirect "inne.asp"
End If
objGetData.Close
Set objGetData = Nothing
objCon.Close
Set objCon = Nothing
%>
</code>Sv: Uppdatera objGetData(
och allt blev då som jag ville förutom att det bildades en ny rad i databasen.
Fälten uppdaterades och det kom inte upp något felmeddelande.
Men som sagt det bildades en ny rad där fälten "actualdate", "status" och poang hade de uppgifter som det var meningen att bara den rad med rätt username och losen skulle ha.
Men det var i alla fall bra att den rad med rätt username och losen uppdaterades med de nya uppgifterna.
Men jag vill ju som sagt inte att det skall bildas en ny rad.
Sökte lite för att hitta något exempel på mySQL och asp med update, hittade dessa adresser:
http://www.aspwebpro.com/aspscripts/records/update.asp
http://www.learnasp.com/learn/FAQdbSinglequote.asp
http://www.devarticles.com/content.php?articleId=50&page=5
Man kanske skall skriva något annat än just addnew?
...men vad?
...Eller man kanske är tvungen att skriva en SQL-rad för att updatera.Sv: Uppdatera objGetData(
http://www.pellesoft.nu/development/forum/view.asp?msgid=26038&forumid=1
och:
http://www.pellesoft.nu/development/forum/view.asp?msgid=29496&forumid=1Sv: Uppdatera objGetData(
Med denna kod så updateras fältet:
<%
dim adoConn
dim adoRS
dim strQuery
set adoConn = Server.CreateObject("ADODB.Connection")
adoConn.Open "DSN=databasen"
strQuery = "UPDATE members SET datum = '2004-04-04 04:04:04' WHERE username = 'lumba'"
adoConn.Execute strQuery
%>
...så om någon som har lite mer koll än jag kanske kan förklara hur man kan använda något från denna koden för att få den andra att fungera så vore jag glad.Sv: Uppdatera objGetData(
<code>
<%
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "'" & Month(Value) & "/" & Day(Value) & "/" & Year(Value) & " " & Hour(Value) & ":" & Minute(Value) & ":" & Second(Value) & "'"
Else
SQLDate = "Null"
End If
End Function
Function SQLText(Value)
If Len(Value) Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function
Const adOpenKeyset= 1
Const adLockOptimistic = 3
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "databasen"
Dim poang
'----- Rensar bort sånna som inte loggat ut korrekt.. -------
objCon.Execute "UPDATE members SET status = '0' WHERE status = '1' AND actualdate < " & SQLDate(DateAdd("n", -45, Now))
'---------------- SLUT PÅ UTRENSNINGEN ------------------
Set objGetData = Server.CreateObject("ADODB.Recordset")
objGetData.Open "SELECT * FROM members WHERE username =" & SQLText(Request.Form("username")) & " AND losen = " & SQLText(Request.Form("losen")), objCon
If objGetData.EOF Then
Session("meddelande") = "Tyvärr! Fel användarnamn eller lösenord. Försök igen!"
Response.Redirect "default.asp"
Else
strQuery = "UPDATE members SET status= '1', poang = poang + 1, datum = " & SQLDate(Now()) & " WHERE username = " & SQLText(Request.Form("username"))
Session("namn") = objGetData("fnamn") & " " & objGetData("enamn")
Session("fnamn") =objGetData("fnamn")
Session("enamn") = objGetData("enamn")
Session("username") = objGetData("username")
Session("login") = "ok"
Session("id") = objGetData("id")
Session("status") = "1"
Session("epost") = objGetData("epost")
Session.TimeOut = 40 '<-- Kontrollera
Response.Redirect "inne.asp"
End If
objGetData.Close
Set objGetData = Nothing
objCon.Close
Set objCon = Nothing
%>
</code>Sv: Uppdatera objGetData(
Ett extra stort tack till Andreas Hillqvist så klart.
-----------------------------------------------------------------------------------
Fick ändra lite för att få det att fungera.
Ändrade:
If IsDate(Value) Then
SQLDate = "'" & Month(Value) & "/" & Day(Value) & "/" & Year(Value) & " " & Hour(Value) & ":" & Minute(Value) & ":" & Second(Value) & "'"
Till:
If IsDate(Value) Then
SQLDate = "'" & Year(Value) & "-" & Month(Value) & "-" & Day(Value) & " " & Hour(Value) & ":" & Minute(Value) & ":" & Second(Value) & "'"
Ändrade också:
strQuery = "UPDATE members SET status= '1', poang = poang + 1, actualdate = " & SQLDate(Now()) & " WHERE username = " & SQLText(Request.Form("username"))
Till:
objCon.Execute "UPDATE members SET status= '1', poang = poang + 1, actualdate = " & SQLDate(Now()) & " WHERE username = " & SQLText(Request.Form("username"))
-----------------------------------------------------------------------------------
Så nu ser koden ut så här:
<%
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "'" & Year(Value) & "-" & Month(Value) & "-" & Day(Value) & " " & Hour(Value) & ":" & Minute(Value) & ":" & Second(Value) & "'"
Else
SQLDate = "Null"
End If
End Function
Function SQLText(Value)
If Len(Value) Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function
Const adOpenKeyset= 1
Const adLockOptimistic = 3
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "databasen"
Dim poang
'----- Rensar bort sånna som inte loggat ut korrekt.. -------
objCon.Execute "UPDATE members SET status = '0' WHERE status = '1' AND actualdate < " & SQLDate(DateAdd("n", -45, Now))
'---------------- SLUT PÅ UTRENSNINGEN ------------------
Set objGetData = Server.CreateObject("ADODB.Recordset")
objGetData.Open "SELECT * FROM members WHERE username =" & SQLText(Request.Form("username")) & " AND losen = " & SQLText(Request.Form("losen")), objCon
If objGetData.EOF Then
Session("meddelande") = "Tyvärr! Fel användarnamn och/eller lösenord. Försök igen!"
Response.Redirect "default.asp"
Else
objCon.Execute "UPDATE members SET status= '1', poang = poang + 1, actualdate = " & SQLDate(Now()) & " WHERE username = " & SQLText(Request.Form("username"))
Session("namn") = objGetData("fnamn") & " " & objGetData("enamn")
Session("fnamn") =objGetData("fnamn")
Session("enamn") = objGetData("enamn")
Session("username") = objGetData("username")
Session("login") = "ok"
Session("id") = objGetData("id")
Session("status") = "1"
Session("epost") = objGetData("epost")
Session.TimeOut = 40 '<-- Kontrollera
Response.Redirect "inne.asp"
End If
objGetData.Close
Set objGetData = Nothing
objCon.Close
Set objCon = Nothing
%>