Newsgroup: it.comp.www.asp
Titolo: Cancellare record in base alla data

Ho un DB che contiene degli annunci. Nel DB è presente anche la data di
inserimento: volevo fare in modo di cancellare gli annunci "vecchi". Sto
provando in questo modo ma non ci riesco:
vardata=request.form("data1")
Set rs=Server.CreateObject("ADODB.recordset")
sql="DELETE * FROM annunci where data < '"& vardata &"'"
Set Rec=Conn.Execute(SQL)
rs.Open sql, conn,3,3
rs.close
ho una form in cui inserisci a mano la data, e questo è l'errore:
"Tipi di dati non corrispondenti nell'espressione criterio"

 "Tipi di dati non corrispondenti nell'espressione criterio"
Il valore di vardata qual'e'? '#mm/gg/yyyy#' oppure {d 'mm/gg/yyyy'}
Non mi dire che passi direttamente mm/gg/yyyy :P
-- 
-- 
RedFoxy
A fox around web
Power at fox for a yiffing world!
Un forum per tutte le esigenze: 
http://forum.redfoxy.it

 Non mi dire che passi direttamente mm/gg/yyyy :P
No, ci ha messo gli apici... e potrebbe aver sbagliato, ma non sappiamo 
che database è.
Se si tratta di SQLserver, è giusto così.
Se Access, al posto degli apici ci va il cancelletto #.
Altro... da vedere.
Poi: sicuro che il campo col nome "data" non sia rognoso? Magari 
risolvibile mettendolo tra quadre (WHERE [data]=...), ma io credo sia 
sempre meglio evitare tali nomi.

 Se si tratta di SQLserver, è giusto così.
??
Il formato ISO utilizzato da SQL Server è YYYYMMDD.
Per maggiori info:
http://italy.mvps.org/MVPs/lbenaglia/LorenzoBenaglia-Tip-FormatoDate.htm
Secondo me il problema sta nell'utilizzo del Recordset... A cosa diavolo
serve in questo caso? :-)
1 > vardata=request.form("data1")
2 > Set rs=Server.CreateObject("ADODB.recordset")
3 > sql="DELETE * FROM annunci where data < '"& vardata &"'"
4 > Set Rec=Conn.Execute(SQL)
5 > rs.Open sql, conn,3,3
6 > rs.close
Le righe 5 e 6 sono sicuramente sbagliate, mentre la 4 non va bene perché
una operazione di DELETE non restituisce alcun Recordset infine la 2 è
inutile.
Inoltre non devi eseguire una operazione di INSERT, UPDATE o DELETE con
l'oggetto ADODB.Recordset, ma ricorrere all'oggetto ADODB.Command oppure
ADODB.Connection richiamando il metodo Execute seguito dal parametro
adExecuteNoRecords.
adExecuteNoRecords segnala al Command/Connection di scartare e non
restituire al client
un eventuale result set che può essere generato durante l'esecuzione del
command text.
Ciao!
-- 
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org

 parametro adExecuteNoRecords.
Sostanzialmente e' sbagliato, ma funziona... unica cosa si ritrovera' un RS
u guale ad EOF e un po' di memoria occupata...
Per logica, avara' usato questo metodo perche' utilizza questo metodo per
prendere i dati :)


 un RS u guale ad EOF e un po' di memoria occupata...
Anche in questo caso i conti non mi tornano.
Apri Query Analyzer incolla ed esegui il seguente script T-SQL:
USE tempdb
GO
/* Definisco la tabella dbo.Annunci */
CREATE TABLE dbo.Annunci(
AnnuncioID int NOT NULL IDENTITY PRIMARY KEY,
Data datetime NOT NULL
)
GO
/* La popolo */
INSERT dbo.Annunci VALUES('20040101')
INSERT dbo.Annunci VALUES('20040102')
INSERT dbo.Annunci VALUES('20040301')
GO
Ora incolla in un file .vbs il seguente codice VBScript:
<BOF>
Dim cn
Dim rs
Const CN_STRING = "Provider=SQLOLEDB;Initial Catalog=tempdb;Data
Source=localhost;Integrated Security=SSPI"
Set cn = CreateObject("ADODB.Connection")
cn.Open CN_STRING
Set rs = cn.Execute("DELETE annunci WHERE Data < '20040219'")
MsgBox "Eliminazione eseguita con successo. Ora leggo la proprietà
rs.EOF...", vbInformation
MsgBox rs.EOF
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
<EOF>
La riga MsgBox rs.EOF causerà il seguente errore:
Error: Operation is non allowed when the object is closed.
Code: 800A0E78
Source: ADODB.Recordset


 Source: ADODB.Recordset
E' normale perche' il recorsset non ricevera' assolutamente niente... Ma
questo era scontato!
Io dico che si puo' fare per eseguire la scrittura NON per avere un dato in
ricezione... E' _NORMALE_ che il RS sia asosolutamente vuoto se non
addirittura undefined...
Ciao ;^)=


 Il formato ISO utilizzato da SQL Server è YYYYMMDD.
Hai ragione, ma io parlavo di apici e cancelletti, non del formato