webForumDet fria alternativet

ta bort gamla inlägg

ASP

15 svar · 295 visningar · startad av berntg

Medlem sedan feb. 200187 inlägg
Frågan#1

Jag håller på att göra en dagbok till min klass på hemsidan.
Hur skriver jag för att samtidigt som jag visar poster så tas inlägg som är mer än ex 6 mån gamla bort. Går det?

Medlem sedan dec. 200012 464 inlägg
#2

Jo

connect.execute "delete from guestbook where datediff('m',guestDate,now()) > 6",,128

Ovanstående fungerar för Access. Hur datum och tid hanteras skiljer sig mellan olika sqldialekter.

------------------
essentitia preter non sans multiplicandum

Medlem sedan feb. 200187 inlägg
#3

Varför skriver man 128. Vad innebär det?

Medlem sedan juni 200032 967 inlägg
#4

Det betyder att inget recordset skall returneras. Konstanten kallas adExecuteNoRecords om jag inte minns fel.

Mvh,

Medlem sedan maj 20002 597 inlägg
#5

såhär hag jag.. e det illa?

<% If Request.QueryString("menu") = "deladmin" Then

	Set RSConn = Server.CreateObject("ADODB.Recordset")

	SQL = "SELECT * FROM t_Administrators Where f_ID=" & Request.QueryString("id")

	RSConn.Open SQL, Connect, 1, 2

	RSConn.Delete
	
	RSConn.Close

altså.. bara för att ta bort en post.. inte nåt med datum å sånt.. vill bara veta om koden verkar bra?
------------------
Regler är till för att ändras, inte för att följas!
I wouldn't if I couldn't

[Redigerat av Sico den 21 jan 2002]

Medlem sedan dec. 200012 464 inlägg
#6

Nja det är inte det mest effektiva, hantering av recordset innebär en hel del databasanrop som är helt onödiga i ditt fall.

<% If Request.QueryString("menu") = "deladmin" Then

SQL = "delete FROM t_Administrators Where f_ID=" & Request.QueryString("id")

connect.execute sql,,128

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 20002 597 inlägg
#7

Mina kunskaper e dåliga :(
Denna kod har jag för att lägga till en admin.

	Set RSConn = Server.CreateObject("ADODB.Recordset")

	SQL = "SELECT * FROM t_Administrators"

	RSConn.Open SQL, Connect, 1, 2

	RSConn.Addnew
	RSConn("f_User") = Request.Form("txtUser")
	RSConn("f_Password") = Request.Form("txtPassword")
	If Request.Form("txtAdmin") = "on" Then
	RSConn("f_Admin") = "1"
	End if
	RSConn.Update

	RSConn.Close

Hmm.. antar att denna kod e lika illa eller?

------------------
Regler är till för att ändras, inte för att följas!
I wouldn't if I couldn't

Medlem sedan juni 200032 967 inlägg
#8

Ungefär. :)

Den borde se ut så här i stället:

if Request.Form("txtAdmin") = "on" then
strSQL = "INSERT INTO t_Administrators (f_User, f_Password, f_admin) VALUES ('" & Request.Form("txtUser") & "', '" & Request.Form("txtPassword") & "', 1)"
Else
strSQL = "INSERT INTO t_Administrators (f_User, f_Password) VALUES ('" & Request.Form("txtUser") & "', '" & Request.Form("txtPassword") & "')"
End if

Connect.Execute strSQL,,128

Mvh,

Medlem sedan dec. 200012 464 inlägg
#9

Ja det är lika mycket overhead, dock så blir koden lite mer komplicerad om man använder SQL

txtUser = replace(request.form("txtUser"),"'","''") 
txtPwd = replace(request.form("password"),"'","''") 

SQL = "insert into t_Administrators(f_users,f_password,txt_admin) values('"
sql = sql & txtUser & "','" & txtPwd &"'," 
If Request.Form("txtAdmin") = "on" Then
 sql = sql & "1)"
else
sql = sql & "null)"
End if
connect.execute sql,,128

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 20002 597 inlägg
#10

Tycker ändå min kod e mycket lättare att läsa och lättare att modifiera.. vad e skillnaden.. Kräver min kod mer arbete eller?

------------------
Regler är till för att ändras, inte för att följas!
I wouldn't if I couldn't

Medlem sedan dec. 200012 464 inlägg
#11

Kräver min kod mer arbete eller?

Jo, din kod innebär att gå över ån efter vatten. För att kunna skapa recordsetet måste ADO fråga databasen hur tabellen är definierad vilket man slipper om man gör en insert direkt. Jaan gjorde en jämförelse av hur mycket anrop det blir från ADO till ODBC (tabell med 4 kolumer)

Med recordset 45 anrop till ODBC
Med insert 3 anrop till ODBC

Den första siffran är propertionell mot antalet kolumner i databasen.

Om man vill slippa att hantera speciella tecken i strängar så är ett alternativ att använda ett kommandoobjekt och dynamiska parametrar i sql-strängen. Det är också fördelaktigt om man vill göra flera insert i samma tabell då man undviker omkompilering av sql-satsen. (I alla fall gäller det de flesta dbms.)
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 21 jan 2002]

Medlem sedan maj 20002 597 inlägg
#12

Då e mina koder fel som bara dänn.

Så här brukarjag skriva när jag infogar från en databas..

<%
	Set RSConn = Server.CreateObject("ADODB.Recordset")

	SQL = "SELECT * FROM t_Administrators, t_News Where t_News.f_By = t_Administrators.f_ID Order By t_News.f_ID DESC"

	RSConn.Open SQL, Connect, 1, 2

	Do Until RSConn.EOF
%>

.. massa html..

<%= RSConn("f_Text") %>

.. massa html..

<%
RSConn.MoveNext	
Loop
RSConn.Close
Connect.Close
%>

då gör jag ju felet igen med ett anrop till ODBC..
Hur ska detta vara.. får det inte å funka :/

------------------
Regler är till för att ändras, inte för att följas!
I wouldn't if I couldn't

Medlem sedan dec. 200012 464 inlägg
#13

Om du hämtar data så måste du alltid använda ett recordset.
Det som kan snabba upp saker och ting ordentligt är att använda en metod som heter getrows, vilket innebär att man hämtar allt data i ett anrop.

Om du gör en sökning på getrows i detta forum så finns det en hel del exempel på hur den används.

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 20002 597 inlägg
#14

ok.. tack för hjälpen

------------------
Regler är till för att ändras, inte för att följas!
I wouldn't if I couldn't

Medlem sedan juli 2000534 inlägg
#15

Om man vill slippa att hantera speciella tecken i strängar så är ett alternativ att använda ett kommandoobjekt och dynamiska parametrar i sql-strängen. Det är också fördelaktigt om man vill göra flera insert i samma tabell då man undviker omkompilering av sql-satsen.

Det där lät intressant. Lust att beskriva lite närmare?

------------------
/Morph
Ever since I was eight or nine, I've been standing on the shoreline
All my life I've been waiting for something lasting

[Redigerat av Morph den 21 jan 2002]

Medlem sedan dec. 200012 464 inlägg
#16

http://cgi.webforum.nu/wf/Forum11/HTML/007069.html

Sista inlägget i den tråden innehåller ett exempel.

------------------
essentitia preter non sans multiplicandum

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