webForumDet fria alternativet

Update datum

ASPur ASP

13 svar · 297 visningar · startad av fredrik99

Medlem sedan maj 2000426 inlägg
Frågan#1

Jag använder denna kod för att uppdatera en datumpost. Men datumen i posten uppdateras inte.

<%
Set RSs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM admin WHERE ID = " & session("id") & " "
RSs.Open SQL, Connection, adOpenStatic, adLockOptimistic

RSs("datum_senast") = getdate()
RSs.Update
RSs.Close
%>

Någon?

Medlem sedan mars 20002 836 inlägg
#2

När man använder sig av uppdatering genom ADODB.Recordset, vilket inte är det optimala vid uppdatering, så måste man använda sig av .UpdateBatch istället för .Update

.Update lägger till en ny post
.UpdateBatch uppdaterar det fältet/posten som recordsetet befinner sig på

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

Medlem sedan maj 2000426 inlägg
#3

Vilket är det optimala? Gärna med något exempel.

Medlem sedan maj 2000426 inlägg
#4

Ändrade lite, men får det inte att funka ändå :(

SQL = "UPDATE admin SET datum_senast = #" & now & "#  and antal_logg = (antal_logg + 1) and inloggad = true WHERE id = '" & session("id") & "'"
Connection.execute SQL
Medlem sedan juni 200032 967 inlägg
#5

borde inte id vara ett talfält i tabellen? då skall du inte ha apostrofer runt. annars kan man ju fråga sig om det verkligen finns ett värde i session("id")?

får du något felmeddelande?

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan maj 2000426 inlägg
#6

Koden ser som följande:

<% response.buffer = TRUE %>
<!--#include file="functions.inc"-->
<%
If Session("fornamn")="" Then

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "admin"
 	
SQLStmt = "SELECT * FROM admin Where user = '" & FixaTecken(Request.Form("user")) & "' AND passw = '" & FixaTecken(Request.Form("passw")) & "'"
Set RS = Connection.Execute(SQLStmt)

If RS.EOF Then

Session("fel") = "Du har angivit ett felaktigit lösenord"
Response.Redirect("default.asp")

Else

Session("id") = RS("id")
Session("fornamn") = RS("fornamn")
Session("efternamn") = RS("efternamn")	
Session("user") = RS("user")
Session("passw") = RS("passw")
Session("level") = RS("level")

RS.Close
		
SQL = "UPDATE admin SET datum_senast = #" & now & "#  and antal_logg = (antal_logg + 1) and inloggad = true WHERE id = '" & session("id") & "'"
Connection.execute SQL

Connection.Close	
Response.Redirect "access.asp"
End If
End If
%>

Jag får detta felmsg:
Feltyp:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i villkorsuttryck.
/0/html/admin_test/formcheck.asp, line 29

rad 29:

Connection.execute SQL
Medlem sedan mars 20002 836 inlägg
#7

Ändra följande:

WHERE id = '" & session("id") & "'"

till detta:

WHERE id = " & session("id")

antar att id är av typen räknare/tal i en access db och då ska inga enkelfnuttar finnas runt värdet. Enkelfnuttar endast runt text-värden.

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

Medlem sedan juni 200032 967 inlägg
#8

borde inte id vara ett talfält i tabellen? då skall du inte ha apostrofer runt.

alltså:

SQL = "UPDATE admin SET datum_senast = #" & now & "# and antal_logg = (antal_logg + 1) and inloggad = true WHERE id = " & session("id")

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan maj 2000426 inlägg
#9

Nu funkar det till en "liten del", inget felmsg kommer upp :) men inget förs in i databasen :(

Medlem sedan mars 20002 836 inlägg
#10

Testa denna:

SQL = "UPDATE admin SET datum_senast = #" & now & "#, " & _
	"antal_logg = antal_logg + 1, " & _
	"inloggad = true WHERE id = " & session("id")

@nders:
Såg det jag oxå ... men fredrik uppmärksammade det inte .... =(

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

Medlem sedan maj 2000426 inlägg
#11

Nu funkar det :)
Tack så mycket Patrik och Anders :-)

Medlem sedan maj 2001431 inlägg
#12

När man använder sig av uppdatering genom ADODB.Recordset, vilket inte är det optimala vid uppdatering, så måste man använda sig av .UpdateBatch istället för .Update
.Update lägger till en ny post
.UpdateBatch uppdaterar det fältet/posten som recordsetet befinner sig på

Fel, det är inte alls på det viset. Anledningen till att det inte fungerar för fredrik99 är ngt annat. Troligen hur Recordsetet öppnas.

Lägga till nya poster görs med metoden rs.AddNew

Prova:

RSs.Open SQL, Connection, adOpenDynamic, adLockOptimistic
Medlem sedan mars 20002 836 inlägg
#13

Jo, visst läggs de till med .AddNew MEN tillägget sker inte förrän du kör .Update
Om du nu vill uppdatera en post som redan finns i recordsetet kan du inte använda dig av .Update utan måste använda dig av .UpdateBatch som uppdaterar den post du står på i recordsetet.

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

Medlem sedan dec. 19996 721 inlägg
#14

Nope, det stämmer inte.

UpdateBatch används om du har modifierat flera rader i recordset, utan att köra en Update. Update uppdaterar bara den rad som pekaren står på.

134 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
131 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)