webForumDet fria alternativet

Update datum

13 svar · 297 visningar · startad av fredrik99

fredrik99Medlem sedan maj 2000426 inlägg
#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?

PatrikBMedlem 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*

fredrik99Medlem sedan maj 2000426 inlägg
#3

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

fredrik99Medlem 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
@ndersMedlem sedan juni 200032 969 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>

fredrik99Medlem 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
PatrikBMedlem 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*

@ndersMedlem sedan juni 200032 969 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>

fredrik99Medlem sedan maj 2000426 inlägg
#9

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

PatrikBMedlem 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*

fredrik99Medlem sedan maj 2000426 inlägg
#11

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

HermanMedlem 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
PatrikBMedlem 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*

emissionMedlem 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å.

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