Newsgroup: it.comp.appl.access
Titolo: Manipolare records e tabelle da VBA

Dato che ho imparato il VBA scopiazzando i comandi da database di
esempio, ho qualche lacuna vergognosa, tra cui la seguente:
Quale è la sintassi  VBA per manipolare i record di una tabella?
che so, poniamo di avere una tabella Tbl, con un campo logico Delete:
se voglio cancellare tutti i record con delete impostato a True, che
codice devo scrivere?
E se volessi, poi, scrivere qualcosa in un altro campo (che so, un
campo chiamato Txt, voglio scriverci dentro la stringa "pippo" in ogni
campo) che codice uso? Immagino che ci voglia un ciclo for, ma mi
mancano i riferimenti.
Finora mi sono arrangiato costruendo prima una query di aggiornamento
che facesse quello che volevo, e poi mettendo nel codice un runSQL
copiandoci dentro la stringa della query, ma mi piacerebbe saperlo fare
anche direttamente col codice.
Ho provato a cercare nel sitocomune, ma non ho trovato lumi.
grazie 1000


ciao cerca di non usare parole riservate com delete, Access è permalosetto
su queste cose
Per fare quello che dici la migliore soluzione è la query di aggiornamento
ma cmq
con il recordset devi fare così
Dim rst as dao.recordset
set rst = currentdbt.openrecordset
with rst
    do
        .edit
            !campotxt = "Pippo"
        .update
        .movenext
    loop until .eof
end with
rst.cose
set rst = nothing
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

 set rst = nothing
Quello che non mi torna, dove sta in questo codice il riferimento alla
tabella? Qui scrivo il riferimento al database (rst =
currentdb.openrecordset), nonchè il nome del campo
(!campotxt="pippo"), ma il nome della tabella dove lo piglia? Se il
codice viene fatto partire da una form appoggiata ad una singola
tabella magari Access si immagina di prenderla da lì, ma se la tabella
si basa su una query multitabella, o addirittura se ho una form di
comando non appoggiata a nessuna tabella, dove scrivo il rif alla
tabella?
tks ancora



Ops hai ragione, scusa
set rst = currentdbt.openrecordset("Select ... from ...")


 ha scritto nel messaggio
news:1138031753.3...@g14g2000cwa.googlegroups.com...


 Per fare quello che dici la migliore soluzione è la query di aggiornamento
Perché? è più efficiente far fare il lavoro al motore DB, mentre il
codice VBA è meno efficiente?
Secondo me come ti trovi meglio e da cosa devi fare, come nel tuo caso
ti ha fatto notare Ma.
Io uso quasi sempre recordset da VBA e saltuariamente, per aggiornamenti
massivi stringhe SQL con il comando DoCmd.RunSQL tipo
DoCmd.RunSQL "DELETE * FROM tblMovimentazioni WHERE Data BETWEEN " &
startDate & " AND " & endDate & ""
Calcola che una query già pronta dovrebbe essere più veloce di una eseguita
da codice
per il fatto che non fai il parsing della stessa.
[CUT]

 ha scritto nel messaggio 
news:1138026700.4...@g49g2000cwa.googlegroups.com...



grazie 1000
Ciao Bobo
nella guida VBA di access: recordset
Daniele 

 ha scritto nel messaggio 
news:1138026700.4...@g49g2000cwa.googlegroups.com...
Dato che ho imparato il VBA scopiazzando i comandi da database di
esempio, ho qualche lacuna vergognosa, tra cui la seguente:
Quale è la sintassi  VBA per manipolare i record di una tabella?
che so, poniamo di avere una tabella Tbl, con un campo logico Delete:
se voglio cancellare tutti i record con delete impostato a True, che
codice devo scrivere?
E se volessi, poi, scrivere qualcosa in un altro campo (che so, un
campo chiamato Txt, voglio scriverci dentro la stringa "pippo" in ogni
campo) che codice uso? Immagino che ci voglia un ciclo for, ma mi
mancano i riferimenti.
[risposta]
Ti studi gli oggetti: DAO e ADO;
(DAO)
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/office97/html/output/F1/D2/S5A25F.asp
(ADO)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmscadoobjmod.asp
Finora mi sono arrangiato costruendo prima una query di aggiornamento
che facesse quello che volevo, e poi mettendo nel codice un runSQL
copiandoci dentro la stringa della query, ma mi piacerebbe saperlo fare
anche direttamente col codice.
[risposta]
Hai fatto bene; ma se studi SQL è ancora meglio.
Ho provato a cercare nel sitocomune, ma non ho trovato lumi.
grazie 1000
[risposta]
Ciao.
-- 
Sergio MAZZA