Newsgroup: it.comp.appl.access
Titolo: Problema con Struttura a scheda

Salve,
avrei un problema che non riesco proprio a risolvere e perciò chiedo a voi
esperti del NG.
Cerco di spiegarvelo in modo preciso e nel più breve tempo possibile.
Premetto che stò creando un "Archivio Bovini" in questo modo:
- Tab.CAP (IDCap, Comune, CAP, Pv)
- Tab.Aziende (IDAzienda, Nominativo, Indirizzo, IDCap)
- Tab.Bovini (IDBovini, Contrassegno, Nome, IDAzienda)
- Tab.TipoAllevamenti (IDTipoAllev, Denominazione allevamenti)
- Tab.AttivitàAllevamenti (IDAttivitàAllev, Data Inizio, Data Fine,
IDAzienda, IDTipoAllev)
Ho utilizzato la relazione "Uno a molti" tra le seguenti Tabelle:
- Tab.CAP e Tab.Aziende (con IDCap)
- Tab.Aziende e Tab.Bovini (con IDAzienda)
- Tab.Aziende (con IDAzienda) e Tab.TipoAllevamenti (con IDTipoAllev) e
Tab.AttivitàAllevamenti
Ho creato le seguenti query:
- QueryAziende (IDAzienda, Nominativo, Indirizzo, IDCap, Comune, CAP, Pv) 
- QueryBovini (IDBovini, Contrassegno, IDAzienda)
ed ho inserito nei Criteri del campo IDAzienda
[Forms]![Maschera Gestione Animali]![ID Azienda]
così mi usciranno solo i Bovini di quell'Azienda
Ho creato le seguenti Maschere:
- Maschera Azienda (con QueryAziende) con una Sottomaschera (con
Tab.AttivitàAllevamenti)
- Maschera Gestione Animali (con QueryAziende) dove ho inserito una
"Struttura a scheda" e dove ogni pagina corrisponde ad un Tipo di
Allevamento (Bovini, Ovini, Caprini, ecc.) e dove ho inserito per esempio
sulla prima pagina chiamata Bovini una casella di riepilogo con Origine
riga QueryBovini
Adesso il problema è questo, come faccio a visualizzare per ogni Azienda
solo quelle pagine nella Struttura a scheda che dovrebbero corrispondere a
quelle attività inserite in Tab.AttivitàAllevamenti (Allev. Bovini, Allev.
Ovini, Allev. Caprini, ecc.)?
Cioè io muovendomi con i pulsanti di spostamento nella Maschera Gestione
Animali tra le Aziende, automaticamente la Struttura a scheda si deve
aggiornare e visualizzarmi i vari Tipi di allevamenti di ognuna.
Spero di essere stato chiaro e vi ringrazio per qualsiasi consiglio.
CIAOOOOOO e GRAZIEEEEEEEE!!!!!!!!!!!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:bqj499$gp1$1...@news.newsland.it...

Nella struttura a schede avrai inserito una sottomaschera che visualizzerà i
tipi di allevamento; utilizza le proprietà "campi master/secondari" della
sottomaschera per collegare le forms (principale e secondaria).
Ciao.
--
Sergio MAZZA

 Sergio MAZZA
Ciao Sergio,
ti ringrazio del tuo consiglio però
io vorrei fare una Maschera Gestione Animali con questa
struttura e che ha come Origine riga la QueryAziende
e dove poi in ogni Pagina della Struttura a scheda
mi inserisco dei pulsanti, diversi per ognuna, per collegarmi con altre
maschere.
---------------------------------------    
|              GESTIONE ANIMALI       |
|-------------------------------------|
|                                     |
|       IDAzienda: _______________    |
|	Nominativo: ______________    |
|	Indirizzo: _______________    |
|	CAP:____                      |
|	Comune: __________________    |
|	Pv: ____                      |
|                                     |
|                                     |
|  (e più giù sempre nella stessa     |
|   Maschera una Struttura a Scheda   |
|   dove ho la Pagina Bovini, Pagina  |
|   Ovini e Pagina Caprini)           |
| __________________________________  |
| | Bovini | Ovini | Caprini |      | |
| |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯| |
| |   Contrassegno  Nome            | |
| |   456821256440  Bianchina	    | |
| |   859785587855  Stella          | |
| |   ...           ...             | |
| |                                 | |
|  ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯  |
|                                     |
 ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Nella Pagina Bovini ho inserita una
Casella di riepilogo non associato
con Origine riga la QueryBovini
e dove ho inserito nei Criteri del campo IDAzienda sempre della query
 [Forms]![Maschera Gestione Animali]![ID Azienda]
così mi andrà a inserire l'IDAzienda e mi 
usciranno solo i Bovini di quell'Azienda
Fin quì ci sono.
Il problema è che non sò come far apparire nella Struttura a Scheda
soltanto quelle Pagine che corrispondono alle Attività inserite in
Tab.AttivitàAllevamenti e cioè Allev.Bovini, Allev.Ovini, Allev.Caprini,
ecc.
Esempio:
Se nella Maschera Azienda ho inserito Mario Rossi di Milano e nella
Sottomaschera (associata a Tab.AttivitàAllevamenti) che ha due allevamenti
e cioè Allev.Bovini e Allev.Caprini
quando io apro la Maschera Gestione Animali e con i pulsanti di
spostamento vado a trovare Mario Rossi nella Struttura a scheda
automaticamente mi devono uscire soltanto le Pagine Bovini e Caprini e non
anche quella degli Ovini.
Spero di essermi spiegato meglio. Lo sò che è un pò un casino.
Ti ringrazio ancora. Aspetto notizie.



Quando dici: "...non so come far apparire la nella Struttura a Scheda
soltanto quelle Pagine che corrispondono alle Attivitŕ..." significa proprio
visivamente?
Se č cosě, le pagine della struttura a schede vengono numerate (da 0 in poi,
da sin. a des.); puoi fare riferimento alla proprietŕ visible di ogni pagina
(pages, vedi help) in questo modo:
es.
Select Case Me!tipoAllevamento
    Case 1 '--> Bovini
        Me!TabCtl9.Pages(0).Visible = False '--> non visualizza i caprini
        Me!TabCtl9.Pages(1).Visible = True '--> visualizza i bovini
    Case 2 '--> Caprini
        Me!TabCtl9.Pages(0).Visible = True '--> visualizza i caprini
        Me!TabCtl9.Pages(1).Visible = False '--> non visualizza i bovini
    Case Else '--> tutti gli allevamenti
        Me!TabCtl9.Pages(0).Visible = True
        Me!TabCtl9.Pages(1).Visible = True
End Select
se [tipoAllevamento] č un numero. Puoi gestire in modo automatico la
visualizzazione delle schede se inserisci il codice nell'evento "su
corrente" della form. Ogni volta che cambi record viene scatenato l'evento e
visualizzate le schede relative...
Ciao.
--
Sergio MAZZA

 Sergio MAZZA
Ciao Sergio rieccomi di nuovo.
Ti prego non scocciarti per tutto il tempo che ti faccio perdere.
Ho provato il tuo consiglio con "Select Case" e FORSEE ci siamo perň
ancora mi dŕ ERRORE sicuramente perchč non ho scritto bene il percorso che
porta al campo nella Sottomaschera.
Adesso ti spiego meglio.
Siccome mi hai detto
"Select Case ecc. ecc. ...se [tipoAllevamento] č un numero."
allora nella Tab.TipoAllevamenti (IDTipoAllev, Denominazione allevamenti)
ho aggiunto un campo NumeroAttivitŕ dove ho inserito per ogni
TipoAllevamenti un numero e cioč se nel campo Denominazione c'era Bovini
nel campo NumeroAttivitŕ ho inserito 0 e cosě Caprini=1 e Ovini =2
Poi ho scritto in questo modo "su corrente"
--------------
Private Sub Form_Current()
Me!TabCtl30.Pages(0).Visible = False
Me!TabCtl30.Pages(1).Visible = False
Me!TabCtl30.Pages(2).Visible = False
Select Case Me!SottomascheraQueryAttivitŕ!NumeroAttivitŕ  <--!!ERRORE!!
    Case 0 '--> Bovini
        Me!TabCtl30.Pages(0).Visible = True '--> visualizza i bovini
    Case 1 '--> Caprini
        Me!TabCtl30.Pages(1).Visible = True '--> visualizza i caprini
    Case 2 '--> Ovini
        Me!TabCtl30.Pages(2).Visible = True '--> visualizza gli ovini
End Select
End Sub
------------
in modo che alla partenza della routine non viene visualizzata nessuna
Pagina e poi con l'istruzione Select Case mi visualizza soltanto quelle
che corrispondono al valore del campo NumeroAttivitŕ che stŕ nella
SottomascheraQueryAttivitŕ che ho inserita nella Maschera Gestione Animali
e che perň l'istruzione non riesce ad arrivarci.
Ho inserito quella Sottomaschera perchč non sň un altro modo dove poter
far uscire quei valori numerici dei vari Tipi di Allevamenti per far
effettuare il controllo dall'istruzione Select Case.
Una domanda:
ma la routine Select Case anche se riesce ad arrivare al campo
NumeroAttivitŕ nella Sottomaschera e controlla il suo valore nel primo
record dopo passa automaticamente ai record successivi e li controlla?
o bisogna inserire qualche altra istruzione?
Premetto che:
La Maschera Gestione Animali (e cioč la maschera dove č la Struttura a
scheda) ha come Origine riga la "QueryAziende" (come ti ho detto le altre
volte) che č formata soltanto dai campi delle Tab.Azienda e Tab.CAP
(IDAzienda, Nominativo, Indirizzo, IDCap, Comune, CAP e Pv).
Non ci ho inserito anche i campi delle Tabelle Tab.AttivitŕAllevamenti
(Data Inizio, Data Fine) e Tab.TipoAllevamenti (Denominazione allevamenti
e NumeroAttivitŕ) perchč altrimenti quando scorrevo i vari record della
Maschera Gestione Animali mi uscivano tutti gli Allevamenti e non solo le
Aziende.
Esempio.
L'azienda di Mario Rossi se ha tre Tipi di Allevamenti (Bovini, Caprini e
Ovini) nella query mi esce 3 volte, invece mi piacerebbe se uscisse una
sola volta e poi tramite le pagine della Struttura a scheda vedo quali
sono i suoi Tipi di allevamenti.
--------------------------------------------------------------------
SCUUUUSAAAAMIIIIIIII non voglio approfittare della tua gentilezza!
TI HO FATTO UNA TESTA DI CHIACCHIEREEEEEEEEEE!!!!!!!!!
Aspetto tue notizie e anche se non mi risponderai ti capirei!
CIAOOOOOOOOOOOOOOOOO E GRAZIE ANCORA !!!!!!!
--------------------------------------------------------------------


 Fin quì ci sono.
'---------
Il problema era che non riuscivi a nascondere/visualizzare le schede giuste
per ogni tipo di allevamento.
L'esempio che ti ho proposto funziona con un identificativo numerico del
tipo di allevamento; pensavo l'avessi codificato (id) ed inserito in una
tabella. Se non è così non fa nulla, dovevi solo riadattarlo alle tue
esigenze, quindi se hai una stringa che definisce il tipo di allevamento
l'esempio cambia in:
Select Case Me!tipoAllevamento
     Case "Bovini"
         Me!TabCtl30.Pages(0).Visible = True '--> visualizza i bovini
     Case "Caprini"
etc. etc.
Rileggendo il tuo primo messaggio però mi sono accorto che nella query
Aziende non hai inserito la tipologia degli allevamenti che trattano, ma li
hai (giustamente) legati per IdAzienda. Quindi con questa struttura  non
riesci a identificare il tipo di allevamento se non dal fatto che nelle
tabelle/query Bovini, Caprini etc. etc. ci sia presenza o meno di records.
Una soluzione (al posto del Selec case) potrebbe essere questa:
'-------------
If DCount("[idAzienda]","queryBovini") > 0 then
    Me!TabCtl30.Pages(0).Visible = True '--> visualizza i bovini
Else
    Me!TabCtl30.Pages(0).Visible = False
End if
If DCount("[idAzienda]","queryCaprini") > 0 then
    Me!TabCtl30.Pages(1).Visible = True '--> visualizza i caprini
Else
    Me!TabCtl30.Pages(1).Visible = False
End if
etc. etc.
'------------
cioè contare i record presenti nelle query e visualizzare la scheda con
presenza di records; però non mi piace, io opterei per vederle tutte le
schede. Il meccanismo di nasconderle, secondo me, è troppo vincolante... Ma
è solo un mio parere...
Ciao.
--
Sergio MAZZA

 giuste per ogni tipo di allevamento.
Secondo te è possibile inserire un campo nella QueryAziende che mi
racchiude i valori del campo NumeroAttività della Sottomaschera che ho
inserito nella Maschera Gestione Animali e che mi identifica ogni Tipo di
Allevamenti (Bovini=0, Caprini=1, Ovini=2) e poi con l'istruzione Select
Case interrogando questo campo mi fa uscire soltanto quelle Pagine
corrispondenti ai Tipi di Allevamenti ?
Es.
Nominativo:   Indirizzo:  CAP:    Città:   Pv:  NuovoCampo:
Mario Rossi - Via Dante - 09504 - Milano - MI - 0, 2
(cioè il valore 0 corrisponde ai Bovini e il valore 2 agli Ovini)
Oppure è possibile creare una Query a Campi Incrociati che mi restituisce
quei valori e poi sempre con Select Case vado a nascondere/visualizzare le
Pagine nella Struttura a Scheda?
Grazie di tutto!!
Domani non ci sono quindi ci sentiremo Domenica/Lunedì sera!!!



La tua soluzione del "nuovoCampo" è la più immediata, solo che dovresti
armarti di due funzioni che estraggono/inseriscono/eliminano i valori dalla
stringa per interpretarli. Nulla di così difficile, sul sito comune c'è una
funzione che estrae token da una stringa.
Ma a mio avviso è un po' laboriosa; se ti crei delle funzioni con DAO o ADO
che passatogli l'id dell'Azienda ti ritorna True/False se è presente almeno
un record la vedo più pratica. Da lì, visualizza/nascondi le schede come
vuoi...
Ciao.
--
Sergio MAZZA

 Sergio MAZZA
Ciaooooo.
Come tu hai già avuto modo di vedere io non una grande conoscenza (quasi
niente) di VBA o di programmazione.
Da come mi descrivi la seconda soluzione ("se ti crei funzioni con DAO o
ADO...") mi sembra che per te è una cavolata fare queste funzioni.
Ti chiedo troppo se provi a descrivermele in base al mio Archivio Bovini?
I dati te li ho descritti nei trend precedenti.
Se è una cosa troppo lunga per te non ti preoccupare, non voglio farti
esaurire in questi giorni di feste.
Ciaoooooo e GRAZIEEEEEEEE ANCORAAAAAAA per tutta la pazienza che hai con
me !!!!!!!!!!



Beh, un po' di tempo per studiare e la voglia di imparare; ecco quello che
ci vuole.
Comunque la funzione dovrebbe essere:
'----> DAO
Function Attivita(IDAzienda as Long, nomeTabella as String) As Boolean
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("Select * From " & nomeTabella & " Where
[idAzienda]=" & IDAzienda)
If Not rst.EOF Then
    Attivita = True
Else
    Attivita = False
End If
Set rst = Nothing
End Function
Ciao.
--
Sergio MAZZA