Newsgroup: it.comp.appl.access
Titolo: Spuntare da codice tutte le caselle di controllo in una sottomaschera

Ciao a tutti . in una maschera "nominativi" ho una sottomaschera con
l'attrezzatura consegnata al momento dell'inizio del lavoro (martello,
bolla ecc. ecc.) con a fianco (per ogni attrezzo) una casella di
controllo con il segno di spunta in modo da togliere quell'attrezzo
all'inventario. ora vorrei che al termine dei lavori tutte le caselle
di spunta vengano deselezionate in un unica soluzione in modo da poter
reinserire gli attrezzi nell'inventario. è possibile fare questo?
grazie e ciao


Ciao Silvestro,
su chiusura della maschera ( o dove vuoi tu) inserisci il seguente
codice, inserendo il nome reale della tua tabella e della tua casella
di controllo.
Dim ss As DAO.Recordset
Set ss = CurrentDb.OpenRecordset("Tua_Tabella")
Do Until ss.EOF
ss.Edit
ss!Tua_Casella = False
ss.Update
ss.MoveNext
Loop
ss.Close
Set ss = Nothing
Ciao Vladimiro.

 Ciao Vladimiro.
[risposta]
grazie Vladimiro per la risposta, ho provato il codice che mi hai
postato ma non credo che vada bene in quanto mi toglie la spunta nelle
caselle di controllo di tutta la tabella ed io invece avrei la
necessità di farlo solo nei record associati al nominativo
visualizzato nella maschera. come posso fare? ciao e grazie comunque
per l'interessamento, ciao

 - Mostra testo citato -
Cia Silvestro, basta aggiungere la condizione WHERE sul campo
Nominativo (siccome il nominativo potrebbe avere l'apostrofo è bene
inserire la funzione REPLACE)
Dim ss As DAO.Recordset
Set ss = CurrentDb.OpenRecordset("Select * FROM Tua_Tabella WHERE
Nominativo='" & Replace(Me.Nominativo, "'", "''") & "'")


 Set ss = Nothing
[risposta]
ciao , ho addattato il codice di Vladimiro così ma non mi funziona, mi
dice "parametri insufficenti, previsto 1:
Dim ss As DAO.Recordset
Set ss = CurrentDb.OpenRecordset("query1")
Do Until ss.EOF
ss.Edit
ss!Tua_Casella = False
ss.Update
ss.MoveNext
Loop
ss.Close
Set ss = Nothing
e l'ho fatto perchè non riuscivo ad applicare la soluzione proposta da
Vladimiro in quanto il recordset che si deve aprire è composto da soli
3 campi : "idNominativo" (numerico) , "GenereMateriale" (numerico) e
la casella di controllo "reso" che spuntata o meno mi reinserisce il
materiale nell'inventario e questo campi sono rappresentati nella
query1. Come parametri nella query ho inserito il percorso della
maschera aperta dove poter prendere "idNominativo" e cioe' :[forms]!
[ricerca]![id] dove "id" è una casella di testo visibile nella
maschera. Se apro la query manualmente tutto funziona e cioè mi filtra
i record perfettamente , ma quando vado ad eseguire il codice scritto
sopra mi risponde "parametri insufficenti previsto 1", ho provato a
togliere dalla query il percorso inserito nei parametri e funziona
togliendo però la spunta a tutti i records della tabella. cosa può
essere? ciao ciao

 scusatemi, volevo solo aggiungere 2 cose : nella query se al posto
del percorso [forms]![ricerca]![id] inserisco nei parametri
(manualmente) il numero dell'id (es 85) il codice funziona spuntandomi
solo le caselle di testo riguardanti l'operaio 85 e l'altra cosa è che
se nel codice invece della scritta "queri1" inserisco il codice della
query (select ecc. ecc.) ottengo sempre lo stesso risultato e cioè
"parametri insufficenti previsto 1" ciao ciao

 essere?
Non � chiaro se nella query usa 1 tabella o 2.
Per una sola tabella potrebb'essere sufficiente questo codice
nella maschera "ricerca":
Currentdb.Execute _
"UPDATE TuaTabella SET reso = False" & _
" WHERE idNominativo = " & Me!id
Se non funziona, posta la stringa SQL della tua "query1".
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

Grazie karl ho inserito il tuo codice e tutto funziona , grazie grazie
grazie e naturalmente grazie anche a vladimiro per l'interessamento,
ciao ciao


Ciao Silvestro, se uno chiede determinate cose, è bene rileggere
quello che si chiede :-)
Non so se tornerai a leggere il post, comunque quella che ti ha
proposto Karl è una query di aggiornamento e va benissimo, mentre
quella mia è una select che in altre occasioni ti potrebbe far comodo:
Dim ss As DAO.Recordset
Set ss = CurrentDb.OpenRecordset("Select * FROM Tua_Tabella WHERE
Tuo_Id=" & Me.ID)
Do Until ss.EOF
ss.Edit
ss!ss!Tua_Casella = False
ss.Update
ss.MoveNext
Loop
ss.Close
Set ss = Nothing
Ciao Vladimiro

 Ciao Vladimiro
[risposta]
ciao vladimiro e come vedi il post l'ho riletto visto che vi seguo
sempre con molta attenzione, anche perchè da voi ho imparato tanto e
tanto imparerò in seguito. Sinceramente non ho capito a cosa ti
riferisci con la frase "se uno chiede determinate cose, è bene
rileggere quello che si chiede", avevo un problema da risolvere e sia
te che karl mi avete risposto proponendomi due soluzioni diverse ma
ugualmente funzionali solo che la tua ( per colpa dei miei limiti) non
riuscivo ad applicarla e ti confesso una cosa: quando ho provato la
tua soluzione avevo fatto confusione di tabelle, insomma aprivo un
recordset in una tabella dove non c'era la casella di controllo da
usare come parametro e mi dava l'errore, colpa dei nomi di tabelle
forse troppo simili..... comunque ti ringrazio per l'interessamento e
mi auguro che in altre occasioni tu non mi farai mancare il tuo aiuto,
ciao e grazie

 ciao e grazie- Nascondi testo citato


Ciao Vladimiro scusami ma continuo a non capire. E' vero che ho
scritto "avrei la necessità di farlo solo nei record associati al
nominativo visualizzato nella maschera" ed è vero che tu mi hai
mandato subito la soluzione, però io non sono riuscito ad applicarla a
causa della mia scarsa preparazione. In seguito karl mi ha mandato
un'altra soluzione ugualmente funzionale ed io la ho applicata con
successo sul mio programma. Questo non significa che io considerassi
la tua sbagliata, è stato semplicemente un diverso approccio per la
soluzione di uno stesso quesito e questo diverso approccio mi ha fatto
capire che sbagliavo nell'applicare il tuo codice. forse sono stato
confuso nell'esporre il mio quesito (e se così fosse me ne scuso) ma
credimi Vladimiro , la mia è stata una semplice richiesta di aiuto e
l'ho fatta nei termini che le mie conoscenze mi permettono. ciao ciao
Vladimiro

 causa della mia scarsa preparazione.
Se io scrivo:
Set ss = CurrentDb.OpenRecordset("Select * FROM Tua_Tabella WHERE
Tuo_Id=" & Me.ID)
Significa che la richiesta è quella di selezionare tutti i records
all'interno della tabella uguali all'Id che hai nella maschera aperta
in quel momento. Diciamo che in genere è la soluzione migliore in
quanto con maschera e sottomaschera hai creato sicuramente una
relazione con l'id (indicizzato).
mentre l'altra soluzione:
Set ss = CurrentDb.OpenRecordset("Select * FROM Tua_Tabella WHERE
Nominativo='" & Replace(Me.Nominativo, "'", "''") & "'")
è quella di selezionare tutti i records all'interno della tabella che
hanno nel campo Nominativo il nome  presente nella maschera aperta in
quel momento. Siccome il nome è alfanumerico ( a differenza dell'Id
numerico) e in più potrebbe avere l'apostrofo, le doppie virgolette
ecc..., per non incappare nell'errore, si usa la funzione Replace
oppure la funzione chr (per maggiori informazioni: help o sito di
Karl).
Ciao Vladimiro.

Ciao Vladimiro finalmente ho capito cosa volevi dirmi , in effetti
avevo proprio chiesto la modifica nei record associati al "nominativo"
ma in realtà poi era con l'Id nominativo che tentavo di filtrare il
tutto e quindi il tutto non funzionava. Grazie per la pazienza e la
prossima volta cercherò di stare un pò piu' attento nell'esporre le
mie richieste. Ciao Vladimiro e grazie di nuovo.