Newsgroup: it.comp.appl.access
Titolo: Query eliminazione records e messaggio conferma nr records eliminati

Un saluto a tutti, sono di nuovo alle prese con i miei problemi con
access e, nonostante il fatto che cerchi di disturbare il meno
possibile, avvalendomi della miniera di informazioni che è questo NG,
questa volta non ci riesco proprio.
Ho una maschera continua a vista tabellare, ogni record ha un campo si/
no; la maschera ha origine dati da una query.
Dovrei, dato che sui record vengono fatte delle periodicamente delle
verifiche col cartaceo per assicurarsi che non ve ne siano di obsoleti
(non eliminati quando invece avrebbero dovuto esserlo) selezionare i
records con i checkbox ed eliminare, alla fine, quelli non selezionati
con un pulsante "Elimina".
La eliminazione la faccio tramite una query apposita, QElimina".
Il problema è che vorrei eliminare l'avviso di esecuzione della query
di comando, lasciando invece un msgbox di conferma per l'eliminazione,
riportante il numero di records che andranno cancellati.
Ho provato a cercare nel sito ed ho trovato qualcosa, ma non funziona
come vorrei.
Questo è ciò che sto provando:
Private Sub Elimina_Click()
Dim ContaRec As Long
ContaRec = DCount("Cognome", "QConta")
If ContaRec = 0 Then   MsgBox "Non vi sono records da eliminare",
VbInformation,   "Cancellazione record"
Me.Requery
Else
'If MsgBox("Saranno eliminati  " & ContaRec & " records! Continuare?",
vbYesNo, "Cancellazione record") = vbYes Then
      DoCmd.SetWarnings False
      DoCmd.OpenQuery "QElimina"
      DoCmd.SetWarnings True
      Me.Requery
Else
MsgBox "l'azione elimina è stata annullata", vbInformation,
"Cancellazone record"
Me.Requery
Exit Sub
End If
End If
End Sub
QConta è una query di selezione dove faccio il conteggio dei records
non flaggati
Sul click della checkbox ho fatto un requery.
Le requery nella routine le ho messe per evitare che, come invece
accade, non mi dia il conteggio dei records da eliminare esatto,
restituendomene invece sempre solo 1, anche se poi mi cancella
correttamente i non selezionati.
Spero di essere stato chiaro e nell'aiuto di qualcuno di voi...
Un grazie in anticipo, Marco.

 ha
scritto:

Prova a sostituire DoCmd.OpenQuery "QElimina" con la seguente
istruzione:
docmd.runsql currentdb.querydefs("QElimina").sql


 ha scritto nel messaggio 
news:1181399240.9...@p47g2000hsd.googlegroups.com...


 ha scritto nel messaggionews:1181399240.9...@p47g2000hsd.googlegroups.com...

Vedo che la mia risposta di ieri sera non ha avuto buon fine, chissà
perchè ogni tanto spariscono...
Comunque, grazie per i vostri consigli, li ho applicati entrambi;
quello di VT ha sostituito il mio OpenQuery (e lo terrò buono per il
futuro), mentre quello di kolino invece mi dava errore. Il problema
però non stava nel funzionamento della query di eliminazione che
faceva il suo lavoro anche prima, ma nel msgbox che non rileva
l'esatto numero dei records che saranno eliminati, mi restituisce
invariabilmente l'eliminazione di 1 record anche se poi ne cancella
50. Non so proprio dove dovrei intervenire e spero che qualcuno voglia
darmi una mano.
Un saluto a tutti, Marco.

 ha scritto nel messaggio 
news:1181399240.9...@p47g2000hsd.googlegroups.com...
Un saluto a tutti, sono di nuovo alle prese con i miei problemi con
access e, nonostante il fatto che cerchi di disturbare il meno
possibile, avvalendomi della miniera di informazioni che č questo NG,
questa volta non ci riesco proprio.
Ho una maschera continua a vista tabellare, ogni record ha un campo si/
no; la maschera ha origine dati da una query.
Dovrei, dato che sui record vengono fatte delle periodicamente delle
verifiche col cartaceo per assicurarsi che non ve ne siano di obsoleti
(non eliminati quando invece avrebbero dovuto esserlo) selezionare i
records con i checkbox ed eliminare, alla fine, quelli non selezionati
con un pulsante "Elimina".
La eliminazione la faccio tramite una query apposita, QElimina".
Il problema č che vorrei eliminare l'avviso di esecuzione della query
di comando, lasciando invece un msgbox di conferma per l'eliminazione,
riportante il numero di records che andranno cancellati.
Ho provato a cercare nel sito ed ho trovato qualcosa, ma non funziona
come vorrei.
Questo č ciň che sto provando:
Private Sub Elimina_Click()
Dim ContaRec As Long
ContaRec = DCount("Cognome", "QConta")
If ContaRec = 0 Then   MsgBox "Non vi sono records da eliminare",
VbInformation,   "Cancellazione record"
Me.Requery
Else
'If MsgBox("Saranno eliminati  " & ContaRec & " records! Continuare?",
vbYesNo, "Cancellazione record") = vbYes Then
      DoCmd.SetWarnings False
      DoCmd.OpenQuery "QElimina"
      DoCmd.SetWarnings True
      Me.Requery
Else
MsgBox "l'azione elimina č stata annullata", vbInformation,
"Cancellazone record"
Me.Requery
Exit Sub
End If
End If
End Sub
QConta č una query di selezione dove faccio il conteggio dei records
non flaggati
Sul click della checkbox ho fatto un requery.
Le requery nella routine le ho messe per evitare che, come invece
accade, non mi dia il conteggio dei records da eliminare esatto,
restituendomene invece sempre solo 1, anche se poi mi cancella
correttamente i non selezionati.
Spero di essere stato chiaro e nell'aiuto di qualcuno di voi...
Un grazie in anticipo, Marco.
ho ricostruito la tua situazione e devo dire che tutto funziona benissimo.
Non ho modificato assolutamente nulla, ho copiato ed incollato nel mio db di 
prova.
Private Sub Elimina_Click()
Dim ContaRec As Long
ContaRec = DCount("Cognome", "QConta")
If ContaRec = 0 Then
MsgBox "Non vi sono records da eliminare", vbInformation, "Cancellazione 
record"
Me.Requery
Else
If MsgBox("Saranno eliminati  " & ContaRec & " records! Continuare?", 
vbYesNo, "Cancellazione record") = vbYes Then
      DoCmd.SetWarnings False
      DoCmd.OpenQuery "QElimina"
      DoCmd.SetWarnings True
      Me.Requery
Else
MsgBox "l'azione elimina č stata annullata", vbInformation, "Cancellazone 
record"
Me.Requery
Exit Sub
End If
End If
End Sub
Ciao
Access 

 Access
Niente da fare Access, sempre "Saranno eliminati 1 records"
Posto anche la query QConta, non vorrei che il problema fosse li,
anche se mi sembra impossibile
SELECT Count(TabFascicoli.Cognome) AS ConteggioDiCognome
FROM TabFascicoli
WHERE (((TabFascicoli.Elimin)=Off));

 ha scritto nel messaggio 
news:1181466225.8...@p77g2000hsh.googlegroups.com...



E bene si.
Allora all'interno della tabella da cui vengono selezionati i campi, deve 
essere presente un campo tipo SI/NO, è presente?
se si, deve essere associato  alla  checkbox presente sulla form.
Precisato questo la query QConta sarà cosi:
SELECT TabFascicoli.campoSI/NO
FROM TabFascicoli
WHERE (((TabFascicoli.CampoSI/NO)=true));
Ciao
Access

 - Mostra testo tra virgolette -
Ho trovato uno spigolo adeguato e ci ho battuto la testa un numero
congruo di volte!!! che idiota, certo che non funzionava! grazie mille
Access.
Avrei ancora un paio di problemi da risolvere e visto che riguardano
la stessa maschera continua con checkboxes posto di seguito
(eventualmente, se del caso, aprirò un nuovo 3d).
Come ho detto sul click della Checkbox ho messo un requery, altrimenti
non mi prendeva i dati aggiornati. il problema che mi si pone è che,
essendo l'elenco  lungo, cliccando sui nominativi al fondo, la
maschera ha un fastidioso effetto lift posizionandosi sempre sui primi
nominativi dell'elenco ed impedendo di continuare la selezione degli
stessi agevolmente. Come posso ovviare al problema? io ho provato con
un gotorecord,,acnext dopo il requery ma evidentemente la soluzione
non è così semplice.
Il secondo problema è la realizzazione di due pulsanti "seleziona
tutto" "deseleziona tutto" che al momento non so come poter
realizzare.
Grazie mille per la dritta precedente!

 ha scritto nel messaggio 
news:1181468764....@m36g2000hse.googlegroups.com...


in questa circostanza il "me.requery" non serve toglilo e prova.
Vedrai che cosi risolvi il problema.
Ciao
Access

Access ha scritto:

Hai ragione, l'ho tolto e lo messo come prima istruzione sul click del
pulsante elimina perchè sennò le ultime selezioni fatte non le rileva.
Ti ripropongo il problema del seleziona tutti - deseleziona tutti; ho
trovato questa discussione ma non riesco a capire esattamente come
adattare al mio caso il suggerimento di Cinzia.
La discussione è questa:
http://groups.google.it/group/it.comp.appl.access/browse_frm/thread/dd5a89b57a41ce1b/5344952ccf45a0b5?lnk=gst&q=seleziona+tutti&rnum=18&hl=it#5344952ccf45a0b5
THX

 - Mostra testo tra virgolette -
Ci sto ancora lavorando ed ho risolto con una semplice query di
aggiornamento.
Il problema è che ci sta circa mezzo minuto ad aggiornare i records
(al momento sono solo una trentina...).
E' normale tutto ciò? esiste un metodo più veloce per fare questa
operazione?

 wrote:
Ci sto ancora lavorando ed ho risolto con una semplice query di
aggiornamento.
Il problema č che ci sta circa mezzo minuto ad aggiornare i records
(al momento sono solo una trentina...).
E' normale tutto ciň? esiste un metodo piů veloce per fare questa
operazione?
[risposta]
Non ho capito a che punto sei; prova cosě:
'---
If me!nomesottomaschera.form.dirty then
    me!nomesottomaschera.form.refresh
end if
Dim ContaRec As Long
ContaRec = DCount("*","nomeTabella","elimina=-1")
if ContaRec >0 then
    if msgbox("Confermi la cancellazione di: " & ContaRec & "?",vbinformation+vbyesno,"Elimina record")=vbyes then
        currentdb.execute "Delete * From nomeTabella Where elimina=-1"
    end if
end if
'---
Nella DCount non č necessario indicare la query (anzi direi il contrario) per contare dei record, devi indicare il nome giusto della 
tabella e del campo che contiene il flag per eliminare il record.
Il metodo Execute, non visualizza messaggi, ed esegue o query o istruzioni sql (di comando) e nel caso di query di eliminazione non 
serve una query salvata, come per la Dcount devi indicare il nome giusto della tabella e del campo che contiene il flag per 
eliminare il record...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Ciao Sergio e grazie per il tuo intervento. Avevo risolto, grazie
all'aiuto di Access, il problema dell'eliminazione con il giusto
numero di records ma tengo comunque per buoni i tuoi consigli.
Mi era rimasto il problema di selezionare/deselezionare tutte le
checkboxes, lo facevo tramite una query di aggiornamento richiamata da
un pulsante che però ci metteva mezzo minuto buono per elaborare e mi
lasciava non slezionato l'ultimo record. Stamattina ho messo, proprio
per questo motivo, un me.requery prima di lanciare l'esecuzione della
query di aggiornamento e magicamente (almeno per me che sono 'gnurant)
ora funziona tutto in tempo reale.
Un grazie di cuore a chi mi aiutato, Marco.

 ha scritto nel messaggio 
news:1181498110.7...@q75g2000hsh.googlegroups.com...
Access ha scritto:


http://groups.google.it/group/it.comp.appl.access/browse_frm/thread/dd5a89b57a41ce1b/5344952ccf45a0b5?lnk=gst&q=seleziona+tutti&rnum=18&hl=it#5344952ccf45a0b5
THX
Scusa del ritardo ho avuto un po da fare.
Allora per selezionare tutti i record crea un pulsante e sotto l'evento 
click inserisci:
private sub pulsante_click()
DoCmd.RunSQL "Update tprovvguida set ciola= true"
refresh
end sub
invece per deselezionare crei un pulsante e inserisci sotto l'evneto click:
private sub pulsante_click()
DoCmd.RunSQL "Update tprovvguida set ciola= false"
refresh
end sub
--
Ciao
Access