en fråga :)

ASP

11 svar · 243 visningar · startad av Cactuz

Medlem sedan okt. 2001670 inlägg
Trådstart#1

jag behöver ett script som först kollar om dagens datum finns någonstans i kolumnen datum... om den finns ska den bara köra en update... om den inte finns måste den ju först köra en insert för att kunna uppdatera så den ska då köra en insert o sen en update.

Medlem sedan dec. 20003 563 inlägg
#2
<%
Set RS = conn.execute("SELECT * FROM tabell WHERE datum = '"&date&"' ")
' Om datumet är i textform.
if RS.eof then
 KÖR INSERT
else
 KÖR UPDATE
end if
Set RS = nothing
%>
Medlem sedan okt. 2001670 inlägg
#3

allså... den ska inte kolla om datum är tom... för det kan ligga andra datum n dagens.. den ska kolla om dagens datum står...

[Redigerat av Cactuz den 26 jan 2002]

Medlem sedan dec. 20003 563 inlägg
#4

ehh ja.

If rs.eof betyder ifall end_of_fields
Alltså ifall det finns några poster som upfyller datum = date, alltså ifall dagens datum finns i någon post i kolumnen [datum]?
Om inte lägg till en som har det.
Annars uppdatera den poster som har datumet.
Låter som en version av en besöksräknare? :)

Medlem sedan okt. 2001670 inlägg
#5

ahh.. nu sr jag... kollade fel innan :)

besöksräknre? vad snackar du om? ;)

Medlem sedan okt. 2001670 inlägg
#6

får felmeddelandet:

Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.: 'conn'

Medlem sedan feb. 20012 412 inlägg
#7

hej, posta lite kod.

Du har antagligen två olika namn eller fel namn på ditt connectionobjekt någonstans.

mvh Jörgen :)

Medlem sedan okt. 2001670 inlägg
#8
<%
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("counter.mdb")

Set RS = conn.execute("SELECT * FROM besok WHERE Datum = '"&date&"'")
' Om datumet är i textform.
if RS.eof then

SQL = "INSERT INTO besok (Datum) VALUES ('" & datum &"')"
con.execute(SQL)

besok = "UPDATE besok set Antalbesok = Antalbesok + 1 WHERE Datum = '"&datum&"'"
Set rs = db.execute(besok)

else

besok = "UPDATE besok set Antalbesok = Antalbesok + 1 WHERE Datum = '"&datum&"'"
Set rs = db.execute(besok)

end if
Set RS = nothing
%>
Medlem sedan juni 20019 024 inlägg
#9

Set RS = db.execute("SELECT * FROM besok WHERE Datum = '"&date&"'")

Medlem sedan feb. 20012 412 inlägg
#10

hej, du har 3 olika namn på ditt connectionobject. Con, conn och db.

Eftersom du skapat det som db så ändra alla till det namnet.

red: och utöver Pace ändring:

SQL = "INSERT INTO besok (Datum) VALUES ('" & datum &"')"
db.execute(SQL)

mvh Jörgen :)

Medlem sedan dec. 200012 464 inlägg
#11

Som jorgen sade,så har du blandat namnen

<%
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("counter.mdb")
Set RS = db.execute("SELECT * FROM besok WHERE Datum = '"&date&"'")
' Om datumet är i textform.
if RS.eof then

SQL = "INSERT INTO besok (Datum,antalbesok) VALUES ('" & datum &"',1)"
db.execute(SQL)

else

besok = "UPDATE besok set Antalbesok = Antalbesok + 1 WHERE Datum = '"&datum&"'"
db.execute(besok)

end if
Set RS = nothing
%>

Det är ju också onödigt att först göra insert och sen direkt efteråt göra update på samma tabell.

red:
Det är onödigt att ställa select-frågan också

<%
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("counter.mdb")

sql = "UPDATE besok set Antalbesok = Antalbesok + 1 WHERE Datum = '"&datum&"'"
db.execute sql,rows,128

if rows = 0 then
SQL = "INSERT INTO besok (Datum,antalbesok) VALUES ('" & datum &"',1)"
db.execute SQL,,128 
end if

%>
Medlem sedan mars 20015 287 inlägg
#12

OT!
En stilla kommentar till LarsG's svar.

Om du skulle kika över all min kod jag skrivit skulle du nog kunna reducera den till en fjärdedel, max...

Imponerande gång på gång, både i enklare o tyngre frågor.

262 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)