Newsgroup: it.comp.appl.access
Titolo: Elimina Record

Incredibile!Il codice seguente mi dovrebbe cancellare
un record ma funziona solo in debug.
A qualcuni è mai successo?
P.S. il codice lavora in una sottomaschera.
Private Sub cmdElimina_Click()
On Error GoTo Err_cmdElimina_Click
intScelta = MsgBox("Sei sicuro di voler eliminare questo record?", vbYesNo)
If intScelta = vbNo Then
MsgBox "Operazione annullata", vbInformation
Exit Sub
Else
    Me.AllowEdits = True
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
    Me.AllowEdits = False
    Me.AllowAdditions = False
    cmdNuovo.Enabled = True
    cmdModifica.Enabled = True
    cmdSalva.Enabled = False
    Me.Requery
    If Me.CurrentRecord = 0 Then
    Me.AllowAdditions = True
    Me.AllowEdits = True
    cmdSalva.Enabled = False
    Else
    Exit Sub
Exit_cmdElimina_Click:
    Exit Sub
Err_cmdElimina_Click:
    MsgBox Err.Description
    Resume Exit_cmdElimina_Click
End If
End If
End Sub

     DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
geniale!!!
sei riuscito a eliminare la scritta "oggetto senza nome"?

 ha scritto nel messaggio
news:b16ee5$s26$1...@kyra.unica.it...

Ah ehm non capisco se mi stai dicendo che ho
fatto una cazzata.La scritta rimane.

 ha scritto nel messaggio
news:FYxZ9.129631$AA2.5...@news2.tin.it...

Prova con:
DoCmd.RunCommand acCmdDeleteRecord
al posto di
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
e supito dopo metti un bel DoEvents
Ciao, Carlo

 ha scritto nel messaggio
news:uOyZ9.96035$0v.27...@news1.tin.it...

Fai una cosa crea una query di eliminazione che abbia nei criteri il valore
del record selezionato, le esegui e fai un requery del recordset.
Il codice diventa:
Private Sub cmdElimina_Click()
Dim intScelta As Integer
intScelta = MsgBox("Sei sicuro di voler eliminare questo record?", vbYesNo)
If intScelta = 6 Then
DoCmd.SetWarnings False
    DoCmd.OpenQuery "MiaQueryDiEliminazione"
    DoCmd.SetWarnings True
Else
MsgBox "Operazione annullata", vbInformation
end if
end sub
Ciao, Carlo

Infatti stavo pensando propio ad una cosa del genere
anche se continuo a non capire perchč in debug mi funziona
ma in esecuzione no.
Grazie
Giuseppe

Me.AllowEdits = True
ecc.
Sei siccuro che la proprietà AllowDeletions è True nel momento?
-- 
HTH
Karl
*********
Access-FAQ (tedesco): 
http://www.donkarl.com

 Yes.


 Cioè?
?
Prendi la tastiera e piantala verso la posizione del record
al monitore.
Ok, forse è colpa del mio italiano perché vedo che lo strumento
si chiama "tastiera". Allora provo un'altra volta con una
descrizione da un libro italiano per A97:
*****
A questo scopo, fate clic sul quadratino grigio a sinistra del
record (l'area di selezione del record).
Eseguite una delle seguente operazioni:
- fate clic sul pulsante "Elimina record" sulla barra degli strumenti
- premete il tasto CANC sulla tastiera
- selezionate "Modifica", "Elimina"
- selezionate "Modifica", "Elimina Record"
*****
Se nessuno di questi metodi funzione non è la colpa del codice
ma della situazione del record, del recordset o della maschera.


 Karl
OK Karl utilizzando i comandi del menu funziona.
Ma perchè cazzo in debug mi funziona ed in esecuzione no?
Sarà Access.....
Ciao
Giuseppe

 Ma perchè cazzo in debug mi funziona ed in esecuzione no?
Se con "debug" intendi esecuzione passo passo forse
si tratta di un problema del timing. p.e. forse una delle
proprietà nel esecuzione non ha ancora o non ha più il valore
che bisogna nel momento quando il codice prova ad eliminare
il record.
Prova a mettere tutte le proprietà della maschera a un valore
che rende possibile l'eliminazione. Nel codice fai niente che il
Runcommand per l'eliminazione. Se funzione prova di mettere
la prima proprietà a un valore critico e cambia il valore nel
codice, esegui il codice ecc.



E' una forma arcaica che non si usa più, che viene però ancora usata nelle
autocomposizioni di Access.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


io avere sembre faddo cosi', mai avuto rogne
form.recordsetclone.bookmark = form.bookmark
form.recordsetclone.delete
e mango faccio la requery e dudde quelle altre brudde cose.
Mia roudine essere un poco piu' gomplessa berche' buo' gangellare 
moldi record.
Io essere barecchio ignorande ma quando stai in debug i menu's
sono gli sdessi di guando non stai in debug?
--
a.cara 
Togli qualcosa dall'email

 autocomposizioni di Access.
a dire la verità ho cercato quale autocomposizione o trasformazione di macro
in VBA potesse averla generata, ma non sono riuscito a trovarla...
ZAO

 con Karl?
di leggere i post di roberto e il mio

     DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
questa istruzione significa: esegui il comado "Incolla come collegamento
iperetstuale", che non ho capito bene a cosa serva
mi fermo qui
ciao

nugirip scritto:

Non so di dove hai queste idee ma non hai ragione.
Le 2 istruzioni sono giusti per selezionare e eliminare un record.
Certo da anni è meglio di usare
RunCommand acCmdDeleteRecord
perchè è più leggibile e anche funzione se la maschera è un Popup.
-- 
cu


 ha scritto nel messaggio
news:b19732$occ$1...@kyra.unica.it...

In Access 97 Autocomposizione Pulsante di comando; Categoria: Operazioni su
Record; Azioni: Elimina record.


 Le 2 istruzioni sono giusti per selezionare e eliminare un record.
 premesso che uso A00:
forse giusti non è la parola giusta in quanto (copincolla da guida):
<copincolla>
Nota   In Microsoft Access 97 il metodo DoMenuItem era stato sostituito con
il metodo RunCommand. Il metodo DoMenuItem è incluso in questa versione di
Microsoft Access solo per compatibilità con le versioni precedenti. Quando
viene eseguito un codice Visual Basic esistente che contiene il metodo
DoMenuItem, Microsoft Access visualizza il comando del menu o della barra
degli strumenti appropriato per Microsoft Access 2000. Diversamente
dall'azione EseguiVoceMenu in una macro, tuttavia, il metodo DoMenuItem nel
codice di Visual Basic non viene convertito nel metodo RunCommand quando
viene convertito un database creato con una versione precedente di Microsoft
Access.
Alcuni comandi delle versioni precedenti di Microsoft Access non sono
disponibili in Microsoft Access 2000 e i metodi DoMenuItem che eseguono
questi comandi causano un errore quando vengono eseguiti in Visual Basic. È
necessario modificare il codice di Visual Basic per sostituire o eliminare
le occorrenze di questi metodi DoMenuItem.
</copincolla>

 ...blablabla...
Beh, e cosa vuoi dire con questo testo che conosciamo da anni?
Che cosa ha da fare con il problema di Guiseppe o con la tua
interpratezione strana delle 2 MenuItems?
--
?


 "Non usare mai le autocomposizioni"
    Dato che le autocomposizioni vengono scritte da "programmatori" potrei
anche concordare con te...
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

 ha scritto nel messaggio
news:b197ki$oih$1...@kyra.unica.it...

Dove c'è solo scritto che è una forma arcaica.
Ciao
Giuseppe

 interpratezione strana delle 2 MenuItems?
niente

 sono gli sdessi di guando non stai in debug?
Finalmente funziona!
Grande Ale.
Grazie Buana!



Non uso macro.Il codice che vedi l'ho fatto creando un pulsante elimina
record con il wizard
e poi gli ho aggiunto il codice per confermare l'eliminazione.Prometto di
non farlo mai piů.
Cmq ho risolto con l'e-mail di Alessandro Cara.Il problema era cmq perchč
funziona solo
in debug.
Grazie delle spiegazioni che sono sempre molto utili.
Giuseppe.

 Il problema era cmq perchè funziona solo  in debug.
Sono poco esperto nell'uso del domenuitem (non mi piace il meccanismo)
Nella mia e-mail dicevo se eri sicuro della presenza sui menu' delle
voci che richiamavi. Se non ho capito male il domenuitem fa eseguire
il comando che c'e' sulla voce richiamata. Se la voce richiamata
non e' presente sul menu' che succede?
La cosa strana e' che non ti funziona il comando suggerito da Karl.


 > Il problema era cmq perchč funziona solo  in debug.

Sul Menu esistono queste voci infatti Karl mi aveva consigliato di provare
a farlo dal menu e cosě funzionava.Un ultima cosa che non ho ben capito
dalla tua e-mail.Il codice che mi hai scritto cancella il record corrente e
mi
sembra vada sul primo record automaticamente.Ma cancella il solo record
corrente vero?
Ciao
Giuseppe

 corrente vero?
si, cancella solo il record corrente (Almeno dovrebbe). Come dicevo
nella mia email fa parte di una routine piu' complessa che consente
di cancellare n record selezionati. Se ti interessa questa "feature"
fammelo sapere, se non mi ricordo male quella routine riposiziona anche
il recordset



Mi interesserebbe parecchio sia per cultura personale che praticamente
avendo come avrai notato dal
passaggio del codice
If Me.CurrentRecord = 0 Then
la necessità di capire dove ci si trova nel recordset in quanto la frm in
questione lavora anche con
una routine del tipo
Sub ControllaRecord()
Dim intNum As Integer
intNum = Me.RecordsetClone.RecordCount
If intNum < 1 Then
    Me.AllowAdditions = True
    Me.AllowEdits = True
    cmdSalva.Enabled = True
Else
Exit Sub
End If
End Sub
Ciao
Giuseppe

 If Me.CurrentRecord = 0 Then
io questo non lo farei ma testerei le proprieta' EOF e/o BOF anche
perche'
se non stai attento rischi di beccarti l'errore "no current record"
cmq questa e' la routine che uso per cancellare piu' record
"selezionati"
' la proprieta' selheight contiene il numero di righe selezionate.
' Attenzione va salvata in uscita da un subform perche' e' volatile
NumRighe = Frm.Form.SelHeight   
If NumRighe = 0 Then NumRighe = 1
Set rst = Frm.Form.RecordsetClone
' allinea il recordsetclone con il form per ricordarsi dove era
rst.Bookmark = Frm.Form.Bookmark
' vabbe' qui ho una gestione degli errori "personalizzata" che manda un
' messaggio che suona "sta in campana stai per eliminare nnnnn record"
If objAppl.LoadMsg("UTN0133Q", CStr(NumRighe)) = 2 Then
    rst.MoveFirst
' la proprieta' seltop "racconta" qual'e' il primo record selezionato,
mi muovo 
' sul record ed elimino il numero di record selezionati
    rst.Move Frm.Form.SelTop - 1
    For i = 1 To NumRighe
        rst.Delete
' qui testo il fine file (questo succede quando selezionano per la
cancellazione
' anche l'ultimo record)
        If Not rst.EOF Then rst.MoveNext
    Next 
' questa ripristina il puntamento del form
    Frm.Form.Bookmark = rst.Bookmark
Else
    Exit Sub
End If


 NumRighe = Frm.Form.SelHeight
 Questa la posso mettere in testa al codice cosě non me la perdo.
Grazie Alessandro non avevo mai osato affrontare il problema di cancellare
piů record
contemporaneamente.non hai idea di che regalo mi hai fatto.
P.S. perchč non scrivi un lavoretto da mandare sul sito tipo "Come si
cancella uno o piů
record".Spero che non faccia la fine del mio sul controllo calendario.
Ciao
Giuseppe