Newsgroup: it.comp.appl.access
Titolo: codice per cancellazione record da maschera principale a sottomaschera

Ciao a tutti.
Nuovo quesito.
io ho un database con una form principale "sAvvio" ed una submask "smNumTel"
in pratica sto cercando di scrivere del codice sotto un pulsante creato
sulla form principale che ho denominato "elimina" ed in base al valore di
una casella di controllo denominata "canc", deve eliminare un record della
sottomaschera.
il codice che ho scritto è il seguente:
Private sub Elimina_click()
on error goto err_elimina_click
if forms!sAvvio!smNumtel!canc.value = true then
   DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70      '
sicuremente sbaglio qui
   DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70      '
sicuramente sbaglio qui
end if
err_elimina_click:
   exit sub
exit_elimina_click:
msgbox err.description
resume err_elimina_click
end sub
Dove sbaglio?
Cortesemente, se vicino alle correzioni mi potete  mettere una spiegazione
ve ne saro' grato.
Ciao

 ha scritto nel messaggio 
news:MDdLh.26073$J11.5...@twister1.libero.it...

Le istruzioni vanno bene, ma prima del docmd devi assegnare il focus alla 
sottomaschera, altrimenti ti elimina il record della maschera principale.
    Me.[smNumTel].SetFocus
Quei docmd vanno bene (d'altra parte sono le istruzioni generate 
automaticamente), ma è preferibile utilizzare:
    DoCmd.RunCommand acCmdDeleteRecord
Ciao
Antonio

 ha scritto nel messaggio 
news:45fd8036$0$7733$5fc...@news.tiscali.it...

Ciao Antonio è grazie per la risposta veloce.
Volevo dirti che ho fatto come mi hai indicato pero' non mi funge.
Ho modificato il codice cosi:
Private sub Elimina_click()
 on error goto err_elimina_click
 if forms!sAvvio!smNumtel!canc.value = true then
   Me.[smNumTel].SetFocus
   DoCmd.RunCommand acCmdDeleteRecord
 end if
 err_elimina_click:
   exit sub
 exit_elimina_click:
 msgbox err.description
 resume err_elimina_click
 end sub
Inoltre io avevo gia' provato a dare il setfocus alla sottomaschera in 
questo modo:
Forms!mElenco!smNumTel.SetFocus
ma sia cosi' che in altro modo non funge.
Io premo il pulsante ma non si verifica nulla, neanche un errore, niente.
il record da cancellare rimane li e non fa na piega.
Come possibile?
Ciao grazie 

 ha scritto nel messaggio 
news:45fd8036$0$7733$5fc...@news.tiscali.it...

ho provato ad usare la routine senza il "Me.[smNumTel].SetFocus" e cosi 
cancella i record, ma uno a caso non quello con la casella controllo 
attivata.
Bho a sto punto aiutooooo
Ciao


Devi avere commesso qualche altro errore !!!
Riepiloghiamo...
Il pulsante per la cancellazione lo hai messo sulla maschera principale e 
non sulla sottomaschera, vero ?
Quando ti trovi a dover operare sulla maschera attiva, ti consiglio di 
utilizzare la forma concisa, che ti dà meno possibilità di errori. Quindi, 
se non hai una gestione particolare dell'errore, lascia pure le istruzioni 
autogeneratesi e, dopo la "on error goto err_elimina_click" scrivi:
"me" (senza le virgolette) e poi metti un punto. Così ti vengono 
visualizzati tutti i controlli della maschera e le proprietà della maschera 
stessa. Scorri l'elenco finchè non viene evidenziato il nome della 
sottomaschera. Dovresti quindi avere:
Me.smNumTel
Ora metti un altro punto ed avrai le proprietà del controllo smNumTel. 
Scegli SetFocus.
Di seguito scrivi l'altra istruzione. In definitiva, dopo la "on error ..." 
sarà così:
   Me.smNumTel.SetFocus
   DoCmd.RunCommand acCmdDeleteRecord
Dopo queste due istruzioni, ovviamente, non deve eseguire quelle 
autogeneratesi quando hai creato il pulsante. Perciò, come terza istruzione, 
metti:
   Exit Sub
che fa uscire dalla routine senza fare altro.
Quando ho letto che non ti ha funzionato ho provato a riprodurre la tua 
situazione ed a me ha funzionato. Quindi assicurati che le cose stiano 
veramente come avevi scritto: maschera, sottomaschera, pulsante nella 
maschera principale, sottomaschera (direi di tipo "foglio dati"), etc., etc.
Ciao
Antonio

 ha scritto nel messaggio 
news:A1jLh.26384$J11.5...@twister1.libero.it...

Rileggendo il tuo ultimo messaggio ho capito che la casella per la 
cancellazione sta sulla sottomaschera (il tuo primo messaggio lasciava 
intendere diversamente). Ma è il record attivo della sottomaschera che deve 
cancellare, o qualcun altro ? In ogni caso, se la sottomaschera la fai di 
tipo "maschere continue" e non "foglio dati", il pulsante per la 
cancellazione potresti metterlo nell'intestazione maschera o nel piè di 
pagina maschera (della sottomaschera).
Ciao
Antonio

 ha scritto nel messaggio 
news:45fe51bb$0$7734$5fc...@news.tiscali.it...

Ciao Antonio, innanzitutto grazie per la pazienza.
Siccome io, controllando il db, credo di aver eseguito le tue istruzioni 
alla lettera e non funge, ti posso inviare il database via e-mail cosi lo 
controlli di persona?
Grazie ancora.

 controlli di persona?
Questo è un problema tra te e Antonio.
Però, vogliamo provare a sfoltire anche un po' i messaggi?
Grazie
Antonio


Va bene, mandamelo a 
antone...@tiscali.it
 ma assicurati che non sia di 
grosse dimensioni (eventualmente fanne una copia "zippata").
Ciao
Antonio

 ha scritto nel messaggio 
news:45febb4d$0$7735$5fc...@news.tiscali.it...

Inviato, aspetto tue notizie.
Grazie ancora 

 Inviato, aspetto tue notizie.
Rimaniamo tutti in trepida attesa
Antonio

"Antonio Biso" <ch...@NOSPAMetruria.net> ha scritto nel messaggio 
news:MVNLh.29195$zG1.3...@twister2.libero.it...

Ohhhh che goduria angosciosa !!!!
Ma mi sa che non è riuscito a trasmetterlo. Sopravviverò ?

 Ma mi sa che non è riuscito a trasmetterlo. Sopravviverò ?
Sic!
Il mondo è crudele...
Antonio