View Full Version : [Visual Basic] Esecuzione query con DoCmd
fulviettino
06-04-2005, 17:26
Avrei bisogno di eseguire una query in visual basic 6 di cancellazione di una tabella solo che con le istruzioni:
DoCmd.RunSQL("DELETE recordset.* FROM recordset")
DoCmd.OpenQuery("DELETE recordset.* FROM recordset")
non mi trova l'oggetto DoCmd
..come posso risolvere (a parte mettere in loop l'istruzione recordset.delete che cancella i record singolarmente)?
l'sql per eliminare una tabella e:
DROP TABLE NOME_TABLE
dove NOME_TABLE è il nome della tabella...
il delete viene utilizzatro per cancellare il contenuto di una tabella.
Ciao..
fulviettino
06-04-2005, 17:39
Originariamente inviato da tglman
l'sql per eliminare una tabella e:
DROP TABLE NOME_TABLE
dove NOME_TABLE è il nome della tabella...
il delete viene utilizzatro per cancellare il contenuto di una tabella.
Ciao..
Scusa mi sono espresso male. La mia intenzione è quella di cancellare il contenuto della tabella (non la tabella).
Quindi con la delete dovrei essere a posto...pensavo cancellasse i singoli record uno alla volta invece mi sa che cancella tutti i campi...
edit: ma no..non mi cancella niente la delete... :muro: :muro:
allora dorebbe essere
DELETE FROM NOME_TABLE WHERE CONDIZIONI
Ha seconda del db su cui lavori puo essere anche necessario inserire * tra delete e from....
Ciao.
fulviettino
06-04-2005, 17:46
Originariamente inviato da tglman
allora dorebbe essere
DELETE FROM NOME_TABLE WHERE CONDIZIONI
Ha seconda del db su cui lavori puo essere anche necessario inserire * tra delete e from....
Ciao.
Il mio problema è che non riesco ad eseguire una query generica perchè non riesco ad usare l'oggetto DoCmd cui passarla come parametro
fulviettino
06-04-2005, 17:48
Ho risolto così anche se fa abbastanza schifo...
Do While Not recordset.EOF
recordset.Edit
recordset.Delete
recordset.MoveNext
Loop
attento cosi mi sa che elimini solo i dati dal risultato della query e non dalla tabella sul db...
Ciao
fulviettino
06-04-2005, 18:03
Originariamente inviato da tglman
attento cosi mi sa che elimini solo i dati dal risultato della query e non dalla tabella sul db...
Ciao
Ho controllato, in questo modo mi elimina tutti i record della tabella che ho aperto così:
Set recordset = database.OpenRecordset("tabella")
Solo che la mia idea era di usare direttamente la query di cancellazione...vabbè
Non puoi semplicemente creare una query e poi
DoCmd.OpenQuery "Nome_Query"
fulviettino
06-04-2005, 21:25
Originariamente inviato da Minelab
Non puoi semplicemente creare una query e poi
DoCmd.OpenQuery "Nome_Query"
è una domanda?..se così fosse, questa era la mia intenzione (usare il DoCmd) ma non mi trova l'oggetto DoCmd...lo devo dichiarare in qualche modo oppure devo includere qualcosa?
salvuccio
06-04-2005, 23:29
così potrebbe andare?
database.Execute("DELETE * FROM NOME_TUA_TABELLA")
dove NOME_TUA_TABELLA è il nome della tabella da cui vuoi cancellare tutti i record, e database è la variabile che contiene il nome del tuo database che dovresti aver settato in qualche parte del codice con
dim database As Database
set database = OpenDatabase("NOME_DEL_DATABASE")
fulviettino
07-04-2005, 09:32
Originariamente inviato da salvuccio
così potrebbe andare?
database.Execute("DELETE * FROM NOME_TUA_TABELLA")
dove NOME_TUA_TABELLA è il nome della tabella da cui vuoi cancellare tutti i record, e database è la variabile che contiene il nome del tuo database che dovresti aver settato in qualche parte del codice con
dim database As Database
set database = OpenDatabase("NOME_DEL_DATABASE")
Spendida risoluzione del caso!!
:winner:
Grazie mille salvuccio!:sofico:
fulviettino
07-04-2005, 14:48
Ragazzi ma è possibile che l'istruzione
miorecordset.MoveNext
generi questo errore
3420 Oggetto non valido o non impostato
se (considerando la posizione attuale del cursore all'interno della tabella) non c'è un record successivo?
salvuccio
07-04-2005, 15:40
Originariamente inviato da fulviettino
Ragazzi ma è possibile che l'istruzione
miorecordset.MoveNext
generi questo errore
3420 Oggetto non valido o non impostato
se (considerando la posizione attuale del cursore all'interno della tabella) non c'è un record successivo?
io sto appena iniziando a cercare di capire qualcosa sui database quindi prendi con le pinze quello che dico. Credo che dovresti considerare i limiti inferiore e superiore del recordset, cioè:
If miorecordset.BOF and miorecordset.EOF Then 'non ci sono record
Else
miorecordset.MoveFirst
Do While Not miorecordset.EOF
... istruzioni
miorecordset.Movenext
Loop
End If
fulviettino
07-04-2005, 15:47
Originariamente inviato da salvuccio
io sto appena iniziando a cercare di capire qualcosa sui database quindi prendi con le pinze quello che dico. Credo che dovresti considerare i limiti inferiore e superiore del recordset, cioè:
If miorecordset.BOF and miorecordset.EOF 'non ci sono record
Else
miorecordset.MoveFirst
Do While Not miorecordset.EOF
... istruzioni
miorecordset.Movenext
Loop
End If
Esattamente ho fatto un ciclo WHILE come hai scritto tu ma alla fine mi dà sempre quell'errore...porc!:muro: :muro:
salvuccio
07-04-2005, 15:55
non è che hai dimenticato di definire nel codice la variabile miorecordset?
Dim miorecordest As Recordset
Set miorecordset = database.OpenRecordset(".....")
fulviettino
07-04-2005, 16:17
Originariamente inviato da salvuccio
non è che hai dimenticato di definire nel codice la variabile miorecordset?
Dim miorecordest As Recordset
Set miorecordset = database.OpenRecordset(".....")
no non l'ho dimenticato:muro: :muro: :muro:
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.