Newsgroup: it.comp.appl.access
Titolo: Modificare una proprietà di tutte le maschere presenti

Ciao a tutti, mi stavo cimentando nel scrivere un pò di codice per 
modificare in una botta sola una proprietà di tutte le maschere ma mi sono 
arenato!!! :-((
Ho scritto una parte di codice ma non riesco poi a ricavare la proprietà 
della maschera
Function letturaTutto()
    Dim obj As AccessObject, dbs As Object, nome As String, frm As Form
    Set dbs = Application.CurrentProject
     Search for open AccessObject objects in AllForms collection.
    For Each obj In dbs.AllForms
            'in questa posizione vorrei appunto impostare il valore di una 
proprietà
    Next obj
End Function
Ho provato con la ricostruzione di una stringa ma naturalmente se una 
maschera non è aperta una stringa di questyo tipo non
funziona:
[Forms]![Maschera].RecordsetType = 2
Non saprei come risolvere il problema...aprire e chiudere tutte le maschere 
mi sembra troppo macchinoso ed alcune non possono essere aperte se non sono 
caricate altre maschere...un casino insomma.
Ho tentato di vedere con una query se attraverso la tabella sysObject 
riuscivo a fare qualcosa ma niente...
Confido in voi!
Grazie come sempre
Roberto 

 ha scritto nel messaggio news:44a4fa2a$0$3106$4faf...@reader1.news.tin.it...

Sito comune Sezione General
6.101 Modificare automaticamente le proprietà dei controlli.
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:e82v2m$7ho$1...@area.cu.mi.it...

Grazieeee!
Roberto 

 ha scritto nel messaggio 
news:e82v2m$7ho$1...@area.cu.mi.it...

Ciao Sergio, ho dato un'occhiata a quello che c'era sul sito ma mi sembrava 
un pò macchinosa, ma forse direi non proprio al caso mio ma mi ha fatto 
riflettere e giungare alla soluzione di questo tipo:
anzi vorrei perfezionarlo facendo girare il tutto in background puoi 
aiutarmi?
nel caso alla fine si potrebbe pubblicare (se di interesse) sul 
sitocomune....che dici?
ecco il codice....aggiungo la funzione per chiudere tutte le maschere che 
sono aperte
Ciao
Roberto
Function frmRead()
'Scritto da Arisi Roberto (Roberto da Parma) lì 30-06-2006
'Trasforma il recordset in tipo snapshot (maschera di sola lettura)
    Dim frm As Form, ctr As Container, doc As Document
    Dim obj As AccessObject, dbs As Object
    'Apre tutte le maschere
    For Each obj In dbs.AllForms
        If Not obj.Name Like "Sottomaschera" & "*" Then
            DoCmd.OpenForm obj.Name, acDesign
        End If
    Next obj
    'Modifica il valore, sostituibile con qualunque altra proprietà
    For Each frm In Forms
        frm.RecordsetType = 2
    Next frm
    'Richiama la funzione che chiude tutte le maschere aperte
    DoCmd.SetWarnings False
        chiudiTutto
    DoCmd.SetWarnings True
End Function
Function chiudiTutto()
'Scritto da Arisi Roberto
'Chiude tutte le maschere
    Dim NumForms As Integer, I As Integer
    NumForms = Forms.Count
    For I = NumForms - 1 To 0 Step -1
    DoCmd.Close acForm, Forms(I).Name, acSaveYes
    Next I
End Function 

 ha scritto nel messaggio news:44a5162f$0$3113$4faf...@reader1.news.tin.it...

Come posso aiutarti?
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:e8370b$lrf$1...@area.cu.mi.it...

Il problema è che naturalmente tutte le operazioni che vengono eseguite dal 
codice sono sotto gli occhi ( vedi apertura delle maschere) mentre io vorrei 
che il tutto avvenisse in background magari con una barretta di scorrimento 
sullo stato di avanzamento del codice...che dici si potrebbe fare?Dove e 
come in tal caso posso modificare il codice?
Ciao
Roberto
 

 Roberto
Non so' se eliminando l'echo dello schermo (Application.Echo False) alcune istruzioni possano non funzionare; e oltretutto con 
l'echo a off dovresti gestire moooolto bene i possibili errori per ripristinare l'echo altrimenti andresti alla cieca.
Per la barra di scorrimento; c'è un esempio sul sito comune.
Per inserirla nel codice devi conoscere il numero totale delle forms (in questo caso aperte) e passargli un numero che indica la 
progressione del lavoro.
Il totale ce l'hai con: CurrentProject.AllForms.Count
Poi nel codice, dove modifichi la proprietà aggiorni la progressione.
For Each frm In Forms
   frm.RecordsetType = 2
'--> qui aggiorni la progressione della barra
Next frm
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:e8d0lv$non$1...@area.cu.mi.it...

Grazie Sergio!
Proverò e appena ho dei risultati ti farò sapere.
Ciao
Roberto 


Scusa sergio ma la maschera non puo' essere aperta hidden?
Sempre se ho capito il problema
--
ac

 ha scritto nel messaggio 
news:llpqg.10191$yg6....@tornado.fastwebnet.it...

La soluzione proposta da sergio va bene e direi che il codice è quasi 
perfetto...se non fosse che al momento dell'apertura chiusura naturalmente 
vengono segnate nella barra di windows le finestre aperte...cercherò di 
rimediare...
Ciao
Roberto 


Vai nelle opzioni
e togli la spunta al settaggio appropriato
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

 ac
E' possibile; non mi sono mai cimentato nella modifica di form ma solo di un report inserendo/rimuovendo i gruppi e, se non ricordo 
male, in hidden mi presentava errore mentre con l'echo a off no.
Tutto ciň in access'97...
Ciao.
-- 
Sergio MAZZA 

 Tutto ciň in access'97...
ahhh...ecco il coniglio.
--
ac

 ac
Ciao.
-- 
Sergio MAZZA