ehm, sapete dirmi come posso eliminare il primo record di una tabella di un database mdb?
sql = "DELETE FROM lastfiverecords WHERE ????"
ehm, sapete dirmi come posso eliminare il primo record di una tabella di un database mdb?
sql = "DELETE FROM lastfiverecords WHERE ????"
Where there is a will, there is a way
Primo inserito?
Se non conosci l'identificativo del record devi prima recuperarlo.
E poi effettui la cancellazione:codice:SELECT TOP 1 id FROM tabella ORDER BY id DESC
(quello recuperato)codice:DELETE FROM tabella WHERE id = "& id
Roby
www.creamweb.it [v. 3.0]
:: Script ASP!
:: Web directory gratuita!
:: Campioni del mondo!
delete * from tabella where id in (SELECT TOP 1 ID from Tabella order by ID ASC)
Tutti vogliono parlare, nessuno sa ascoltare.
si puo' fare tutto in un colpo solo, ma - come dice robbbby - devi decidere *quale* è il primo record
Mmm.. così non mi funziona:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("lastfive.mdb")& ";"
Conn.Open
SELECT TOP 1 id FROM lastfiverecords ORDER BY id DESC
sql = "DELETE FROM lastfiverecords WHERE id = "& id
response.write(sql)
Conn.Execute (sql)
Conn.Close
Set Conn = Nothing
![]()
Where there is a will, there is a way
Beh ovvio!Originariamente inviato da szannotti
Mmm.. così non mi funziona:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("lastfive.mdb")& ";"
Conn.Open
SELECT TOP 1 id FROM lastfiverecords ORDER BY id DESC
sql = "DELETE FROM lastfiverecords WHERE id = "& id
response.write(sql)
Conn.Execute (sql)
Conn.Close
Set Conn = Nothing
![]()
![]()
Fai come suggerito da Gioba così eviti il doppio recordset:
Robycodice:sql = "delete * from tabella where id in (SELECT TOP 1 ID from Tabella order by ID ASC)" Conn.Execute (sql)
www.creamweb.it [v. 3.0]
:: Script ASP!
:: Web directory gratuita!
:: Campioni del mondo!
Ok, ho cambiato il codice:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("lastfive.mdb")& ";"
Conn.Open
sql = "delete * from lastfiverecords where id in (SELECT TOP 1 ID from lastfiverecords order by ID ASC)"
Conn.Execute (sql)
Conn.Execute (sql)
Conn.Close
Set Conn = Nothing
Adesso funziona, ma mi elimina entrambi i due records che ho nel database, lasciandolo vuoto...![]()
Where there is a will, there is a way
argh... doppio execute, scusate ora è ok![]()
Where there is a will, there is a way
adesso però, vorrei fare in modo che venisse eliminato il primo record SOLO se il numero dei records è uguale a 5. Cioè, prima dell'eliminazione dovrebbe essere fatto un controllo sul numero totale di records nel database. Esiste un comando per fare questo controllo??
[ Stò gestendo un database contenente le "ultime 5 news": in pratica fino a quando il numero dei record è < 5 continuo ad aggiungerne (alla fine del database) fino ad arrivare a 5, ma quando il numero dei record è = 5 allora elimino il primo record prima di aggiungerne un altro alla fine ]
Where there is a will, there is a way
cambia logica: se devi avere solo 5 record, elimina tutti gli altri, a partire dal meno vecchio
sql = delete * from tabella where id not in (select top 5 id from tabella order by ID DESC)
occhio che ora ho invertito l'ordinamento della subquery
ragionaci un po' su e casomai modifica in base a quello che serve a te
Tutti vogliono parlare, nessuno sa ascoltare.