Newsgroup: it.comp.appl.access
Titolo: AIUTO! Colonna query --> Colonna tabella...

Ciao a tutti, sarò breve...
...
For i = 5 To qry.Fields.Count - 1
        If qry.Fields(i).Name <> param Then
            qry.Fields(i).Properties("ColumnHidden") = True
        Else
            qry.Fields(i).Properties("ColumnHidden") = False
        End If
Next
...
Ho una query con 60 campi, queste due righe mi restituiscono una query con 6
campi visibili e 54 nascosti.
Come faccio a passare come origine controllo ad una maschera i 6 campi
visibili?
NOTA: I primi 5 campi sono "fissi" il sesto è variabile e dipende proprio
dalle righe di codice che ho allegato...
PLEASE HELP ME!!!
P.S. Un grazie a Roberto per l'aiuto finora prestato se finisci di aiutarmi
entri nell'olimpo dei miei eroi...
Il mio numero 348/6070172


Se la query si chiama Query1.
Se Query1 è articolata su un numero di campi indefinito di cui non conosci
neppure i nomi.
Creati una maschera che abbia come origine record Query1.
Inserisci nella maschera tante caselle di testo non associate quanto è il
numero massimo dei campi di Query1; chiama le caselle di testo Controllo1,
Controllo2 .... ControlloN; fai in maniera che le caselle di testo abbiano
la proprietà Visibile impostata a No.
A fronte dell'evento "Su apertura" della maschera genera il seguente codice
VBA:
Private Sub Form_Open(Cancel As Integer)
Dim qry As QueryDef
Dim i As Integer
Set qry = CurrentDb.QueryDefs("Query1")
For i = 0 To qry.Fields.Count - 1
Me("Controllo" & Trim(i + 1)).ControlSource = _
qry.Fields(i).Name
Me("Controllo" & Trim(i + 1)).Visible = True
Next
End Sub
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Ho provato anch'io il tuo codice sotto scritto e funziona
perfettamente,volevo sapere quale e' ora il codice per nascondere oltre ai
controlli anche le etichette dei controlli?
Ti ringrazio per la tua gentile risposta.
Voltolini


 ha scritto nel messaggio
news:OQlx7.16880$g42.2...@news.infostrada.it...

Ti saremmo grati in molti se in futuro risponderai DOPO e non prima del
testo dei messaggi precedenti.
Anche le etichette hanno la proprietą Visible.
Se pertanto chiami le tue etichette Etichetta1, Etichetta2 .... EtichettaN,
e nella struttura della maschera le dichiari tutte non visibili, all'interno
del ciclo di cui sopra potrai anche inserire, prima della Next, la seguente
riga di codice VBA:
Me("Etichetta" & Trim(i + 1)).Visible = True


 Me("Etichetta" & Trim(i + 1)).Visible = True
Ti ringrazio per la gentile risposta,tutto funziona,pero' c'e' un problema:
ho una query con 5 campi che chiamo  Id,Giocatore,Punti,Vittorie,Pareggi
dopo che ho aperto la maschera aggiorno Etichetta1 a Id,Etichetta2 a
Giocatore e cosi' via fino a Etichetta5,
se pero' alla mia query tolgo il campo Punti (Etichetta3) quando aggiorno le
etichette il campo Vittorie ha come etichetta il testo Punti,in pratica le
intestazioni delle colonne non corrispondono ai controlli sottostanti.
Ti ringrazio ancora per una tua gentile risposta e grazie per quello che fai
per il NG
Voltolini

 ha scritto nel messaggio
news:a4Cx7.315$1H1....@news.infostrada.it...

Prima della Next aggiungi anche:
Me("Etichetta" & Trim(i + 1)).Caption= _
qry.Fields(i).Name
Vedi se cosģ puņ andare.


 Vedi se cosě puň andare.
OK,va tutto bene,scusa se ti disturbo ancora,e' possibile ora fissare la
larghezza della maschera in base alla somma delle larghezze dei controlli
visualizzati?
Perche' se per esempio tolgo due campi,sulla parte destra della maschera mi
rimane dello spazio inutilizzato.
Potrei toglierlo per vie traverse,ma e' possibile in un solo colpo da
codice?
Di nuovo grazie per la tua risposta.
Buona Domenica
Voltolini


Si puoi farlo calcolandoti, a seconda del valore della variabile i, la
larghezza della maschera in punti (un punto = 0,04 cm), quindi la imposti
tramite la proprietà Width della maschera (vedi help).


 tramite la proprietą Width della maschera (vedi help).
Caro Roberto,di nuovo grazie per la risposta,ma codesta volta non sono
riuscito ad risolvere l'ultima questione,ho guardato l'help e sono riuscito
solo ad aprire la mascera con una larghezza fissa e non variabile in base ai
controlli visualizzati.
Qui sotto ti posto il codice che ho inserito sull'evento di apertura della
maschera,vedi se puoi mettermi le due rughe di codice che mi mancano,spero
di non romperti troppo.
Di nuovo grazie.
Voltolini
Dim qry As QueryDef
Dim i As Integer
Set qry = CurrentDb.QueryDefs("Query2")
For i = 0 To qry.Fields.Count - 1
Me("Colonna" & Trim(i + 1)).ControlSource = qry.Fields(i).Name
Me("Colonna" & Trim(i + 1)).Visible = True
Me("Etichetta" & Trim(i + 1)).Caption = qry.Fields(i).Name
Me("etichetta" & Trim(i + 1)).Visible = True
Me.Width = 7000    '(E' qui che non so cosa fare....)
DoCmd.MoveSize 0, 0, Me.Width, 4000
Next


Non capisco a cosa ti serva il DoCmd.MoveSize.
Il calcolo della larghezza della maschera dovrai farlo dopo e non prima
della Next.
Inoltre non dovrai impostare ad un valore fisso (7000) la proprietà Width,
il valore te lo dovrai calcolartelo, di volta in volta, tenendo conto di
quanti sono i campi da visualizzare (qry.Fields.Count) e quale è la
larghezza in puti di ogni campo alla quale sommerai anche lo spazio in punti
che intercorre tra un campo e l'altro.
