Newsgroup: it.comp.appl.access
Titolo: Formattazione "run time" maschere continue.

Ciao a tutti, ora vi metto nei guai...
ho costruito una maschere con visualizzazione a maschere continue che trae 
origine da una query a campi incrociati.
Questa maschera per ogni giorno (in ordinata) mi riporta il venduto e la 
giacenza di una serie di tipologie (questo in ascissa), tutto OK perchè l'ho 
costruita a mano; se però le tipologie variano (nel numero) il tutto cade ed 
io vorrei che la maschera si "formatasse" da sola.
Avrei pensato di inserire a priori n controlli (diciamo 10 perchè le 
tipologie difficilmente saranno più di 10) e poi con del codice testare se 
un certo campo (n1) della query esiste e se esiste assegnarlo quale 
recorsource al controllo n1 della maschera che a sua volta posso 
dimensionare e posizionare.
La maschera avrà larghezza pari alla somma delle larghezze dei controlli 
oltre ad un Tot.
Ora è troppo fantasioso o può funzionare? Esistono alternative più logiche?
Inoltre non ho idea di come "testare" l'esistenza del recordsouce per un 
determinato controllo e come assegnare da codice i nomi dei campi (n1, n2, 
ecc.) della query a campi incrociati visto che non ne conosco a priori il 
numero.
Credo di essere in procinto di buttarmi in un ginepraio e, se mi rispondete, 
Voi con me.
Grazie
Giuseppe 


Non mi pare particolarmente complicato.
L'insieme Fields del Recordsource contiene tutte le proprieta' relative 
al campo. Quindi anche la proprieta "Name" che e'quella che ti serve da 
mettere nel controlsource
la scrivo senza pensarci
x = indice del primo campo utile
for idx = 1 to 10
    if idx + x < recordset.fieldcount  (credo che la proprieta' esista)
	   me("Controlname" & idx).controlsource = recordset.fields(idx + x).Name
	endif
next
questo gia' dovrebbe bastare
Non sono questi i gineprai. Mi dirai che per i controlli rimasti non 
associati dovrai gestirne la visibilita' ed eventualmente modificare le 
ampiezze dei controlli mostrati. Ma anche questo non e' un grosso ginepraio
Sono andato a memoria e quindi non tutto (i nomi proprieta' sopratutto, 
ma c'e' l'help ;<)) puo' essere completamente corretto.
Ovviamente il tutto sull'evento di apertura del form
--
ac

Giuseppe ha scritto:

Ipotizzo che la Query restituisca un numero di Campi variabile max=10
come
mi pare di aver capito.
L'utilizzo di campi preinseriti è sostanzialmente obbligatorio Access
non supporta la costruzione Runtime degli oggetti.
Ora quì mi sfugge la dinamicha di come chiami i Controlli ed i
campi..., ma se fossero OMONIMI sarebbe la cosa migliore...!
Supponendo la Form basata come origine sulla tua Qry questa Routine ti
posiziona
i controlli uno in fila all'altro allineati Orizzontalmente :
Dim LeftMargin as Long
Dim LeftPos as Long
Dim TopPos as Long
Dim RightMargin as Long
Dim Distanza as long
Dim fld as DAO.Field
LeftMargin=100
RightMargin=100
LeftPos=LeftMargin
TopPos=200
Distanza=50
For each fld in Me.RecordsetClone.Fields
   With Me.Controls(
fld.name
)
        .ControlSource=
fld.name
        .Left = LeftPos
        .Top = TopPos
        LeftPos=LeftPos+Distanza+.Width
   End Width
Next
Me.InsideWith=LeftPos+RightMargin-Distanza
Ciao
@Alex

 ha scritto nel messaggio 
news:vpWDg.71272$zy5.1...@twister1.libero.it...

Grazie a tutti,
vedo di provare il codice di Alessandro che sicuramente fa il caso mio, 
avevo intenzione di rendere omonimi i campi della query e i controlli dela 
maschera.
Quello che non ho capito è come rinominare e definire il numero dei campi 
della query, io non conosco a priori il numero delle tipologie ( sono 
camere) e queste possono variare, il "10" è un numero buttato là giusto per 
inserire un certo numero di controlli nella maschera, a meno che non sia 
possibile farlo via codice al variare del numero delle tipologie. 

 ha scritto nel messaggio 
news:44e042db$0$13725$5fc...@news.tiscali.it...

Scusate mi è scappato l'invio, non avevo nè salutato, nè ringraziato e 
neppure firmato.
lo faccio adesso.
Grazie
Ciao
Giuseppe 

>sia possibile farlo via codice al variare del numero delle tipologie.
E' vero che il numero di campi e' variabile ed e' per questo motivo che 
e' da evitare il considerare i nomi dei campi generati dalla query
Il fatto che "10" fosse un numero a caso era evidente.
In genere una query a campi incrociati genere un recordset di questo tipo
fix1, fieldtot, campo1,.........,campon
campo1, .....,campon sono i nomi dei valori nella colonna di raggruppamento
1) E' possibile creare i controlli a run time ma se poi generi un mde mi 
pare che questa possibilita' sia preclusa.
2) Generare i controlli run time, inoltre, lo trovo poco performante ed e'
3) Consiglierei di disegnare i controlli per il max previsto e farli 
partire di tipo "non visibile"
4) Con il ciclo del Baraldi o quello che avevo suggerito io (sono 
sostanzialmente la stessa cosa) si valorizza il ControlSource.  A. 
Baraldi ha aggiundo la gestione delle dimensioni e del posizionamento
5) Per tutti campi presenti sulla query si riporta a "visible" il 
controllo. Nel mio caso partivo dal presupposto di saltare dal controllo 
i campi non "dinamici" e ho invertito la logica per eventualmente 
gestire i controlli rimasti a non associato e per evitare, nel caso di 
sfondamento del numero dei controlli disegnati,che il form generasse errore.
6) Non ho guardato il demo sul sitocomune ma credo che, sostanzialmente, 
faccia la stessa cosa.
--
ac

 ha scritto nel messaggio 
news:lt_Dg.20863$ZJ6....@tornado.fastwebnet.it...

Scusate io sono di "coccio",
non riesco ad afferrare come posso fare riferimento ai campi della query e 
come posso costruirla "run Time" visto che non conosco a priori come si 
chiamino e quante siano le tipologie che in pratica danno vita ai campi.
Per quanto riguarda i controlli della maschera la mia idea era proprio 
quella di crearne un numero esuberante e poi gestirne la visibilità, la 
posizione ed il controlsource da codice; Voi mi avete dato "la pappa già 
pronta".
Grazie
Giuseppe 

 Giuseppe
Prego
@Alex

         .ControlSource=Me.RecordsetClone.Fields(Nfld)
qui mi sa che stavolta ti sei scordato il ".Name"
--
ac

Alessandro Cara ha scritto:

OPS.... si verissimo hai l'occhio lungo tu.
@Alex

 ha scritto nel messaggio 
news:1155580922....@h48g2000cwc.googlegroups.com...

Scusate il ritardo,
ora leggo con attenzione e studio.
Grazie mille
Ciao
Giuseppe