Newsgroup: it.comp.www.asp
Titolo: Cancellazione a tempo

Salve a tutto il ng,
il problema di oggi è:
io ho una tabella in access97 di nome ARTICOLI con campo SCADENZA (in
formato data/ora standard). Vorrei che quando la data del sistema che
ospita in db supera la data di scadenza, gli articoli "scaduti" vengano
cancellati dal db. Credo si debba strutturare un' istruzione SQL di
DELETE, ma non so come farla.
Chi mi aiuta???
GRAZIE ALLE ANIME PIE.
P.S.: Io faccio prove in locale su SO windows98, ma il sistema dovra'
girare su SO NT SERVER (che implica - credo - che la data/ora vengano
visti in formato differente, mi sbaglio?)... la cosa comporta problemi
aggiuntivi nel confronto date, no?
--
Nico D'Andretta
Società Informatica Campana
www.sicweb.it
 --- 
in...@sicweb.it
Via E. Fermi 16/18 - 84012 Angri (SA)
Tel. 081/947019 --- Fax 081947250

DELETE, ma non so come farla.
dim ssql
ssql = "delete * from ARTICOLI where SCADENZA < #" & year(date) & "/"
& month(date) & "/" & day(date) & "#"
il problema č: "chi" esegue questa query?

cancellati dal db. 
La query è il meno: "DELETE * FROM ARTICOLI WHERE SCADENZA < Now()".
Il problema è invece questo: lo scheduling della cancellazione.
Ti consiglio le seguenti cose:
- creati una query nel database access, diciamo "PurgeArticles" che
abbia l'istruzione "DELETE * FROM ARTICOLI WHERE SCADENZA < Now()"
- decidi ogni quanto vuoi la cancellazione: es. ogni giorno
cancelliamo gli articoli vecchi, oppure ogni ora, oppure appena si
presenta l'occasione, mettiamola come costante "PurgeDelay"
- crea una variabile, diciamo "LastPurge" a livello di applicazione:
- metti in Session_OnStart un controllo su Now() - LastPurge rispetto
a PurgeDelay, e se il controllo risulta positivo, chiama PurgeArticles
codice esemplificativo:
Sub Application_OnStart
	Application("PurgeDelay") = 24 'hours
	Application("LastPurge") = DateAdd("h", Now(), -
Application("PurgeDelay"))
End Sub
Sub Session_OnStart
	Dim conn, rs
	If DateDiff("h", Application("LastPurge"), Now()) >=
Application("PurgeDelay") Then
		Set conn = Server.CreateObject("ADODB.Connection")
		Set rs = Server.CreateObject("ADODB.RecordSet")
		conn.Open [stringa connessione]
		rs.Open "PurgeArticles", conn, adOpenStatic,
adLockPessimistic
		Set rs = Nothing
		Set conn = Nothing
		Application("LastPurge") = Now()
	End If
End Sub

 il problema è: "chi" esegue questa query?
Ecco, per l'appunto!!!
AIUTATEMI!!!
CORDIALI SALUTI


lascia stare asp
fai un batch wsh (
msdn.microsoft.com
\scripting) e schedulalo in NT con at

 fai un batch wsh (
msdn.microsoft.com
\scripting) e schedulalo in NT con at
--


Tel. 081/947019 --- Fax 081947250
-- 
ben fatto, in fretta, economico: scegline due.

msdn.microsoft.com/scripting
Sempre meglio installare l'ultima versione fornita; serve praticamente a
creare dei batch più evoluti (rispetto ai .bat, per intenderci) in vbscript
e/o JScript.
Se non sai utilizzare AT: se non ricordo male win2000 ha uno schedulatore
grafico (e quindi più semplice ed intuitivo)

Scusa LBO, ma perke' tutta sta polemica???
Guarda che i miei commenti erano ironici!!!
Infatti ho gia' risolto....
CMQ GRAZIE e la prossima volta non essere così categorico, ok?
CIAO CIAO


Guarda che i miei commenti erano ironici!!!
ti assicuro che tutto mi sembrano fuorché ironici, forse sono tardo
io.
