Newsgroup: it.comp.appl.access
Titolo: filtrare sottomaschera da combobox



ciao a tutti.


Ho un problema di questo tipo.....semplificando
molto...


Ho creato tre tabelle:


1) una tabella chiamata PROVE nella
quale metto il nome della prova (ad es: peso specifico)


2) una tabella chiamata MISURE nella
quale metto il nome delle misure (ad es: peso1, peso2, peso3, peso campione,
note) relative alla prova


3) una tabella chiamata DETTAGLIPROVE
nella quale lego la singola prova alle misure da prevedere per la stessa,
quindi avrò:


ID       PROVA  
    MISURA


1  peso specifico  peso1


2  peso specifico  peso 2


3  peso specifico  peso3


4  peso specifico  peso campione


5  peso specifico  note


Con uno sviluppo in verticale (il database
che avevo creato in precedenza aveva uno sviluppo orizzontale che mi ha
creato un sacco di problemi sino a spingermi a rifarlo da capo.....)


Questo è solo un esempio relativo ad
una prova (prova di peso specifico) ma in realtà le prove sono circa una
trentina ognuna con un numero diverso di misure: ce ne sono alcune che
per ogni prova prevedono una ventina di misure da effettuare...


Ad ogni misura devo associare un valore
numerico (es: 1,234 oppure 0,078 ecc)


Vorrei realizzare una maschera di immissione
dati che funzioni in questo modo:


Con una combo-box seleziono il nome
della prova (e fin qui tutto ok)


Dopo aver selezionato il nome della
prova, una sottomaschera dovrebbe visualizzare i nomi delle relative misure
( e fin qui tutto ok), con a fianco un campo vuoto per l'immissione del
valore numerico (o testo, a volte) relativo alla misura (quindi un campo
vuoto per ogni misura) come faccio? Sono fermo da parecchio tempo e le
ho provate un pò tutte senza approdare ad un risultato concreto. 


Avevo già esposto il quesito altre volte
e dopo aver messo in pratica diversi suggerimenti sono arrivato a questo
tipo di sviluppo del database.


In pratica ogni volta che seleziono
il nome della prova la sottomaschera mi deve visualizzare le misure relative
alla prova con il campo valore vuoto e pronto per l'inserimento.....


Sul sitocomune ho trovato un esempio
che potrebbe fare al caso mio (3.62:come si può filtrare una maschera in
base alla selezione multipla effettuata su una casella combinata) però
nel mio caso ho una maschera con sottomaschera e dovrei avere la possibilità
di inserire i dati.


Io non sono esperto di vba e quindi
non sò scrivere codici.....


Grazie per l'aiuto


ciao



 ha scritto nel 
  messaggio 
news:f8acfu$89i$1...@balena.cs.interbusiness.it
...





Per prima cosa ti faccio presente che in un NG 
  dovresti inviare messaggi nel fornato Testo normale e non nel formato 
  HTML.


 


Poi, ammesso e non concesso che io abbia ben 
  compreso ciò che vuoi fare, a fronte dell'evento "Dopo aggiornamento" della 
  casella combinata di cui sopra potresti inserire nella tabella DETTAGLIPROVE 
  un record per ogni recod contenuto nella tabella MISURE con la quantità a zero 
  e personalizzandoli naturalmente con l'ID della prova scelta; a questo punto 
  con un requery della sottomaschera in essa dovresti visualizzare i record 
  appena inseriti per i quali digiterai solo la quantità.


 


Sperò di aver ben compreso il tuo problema e 
  nel caso positivo di essere riuscito a spiegare bene la mia 
  soluzione.


 


Grazie per l'aiuto
 


Prego.


ciao
 
-- 
  
Roberto
-----------------------------------------------
il 
  Sito Comune di it.comp.appl.access
http://www.sitocomune.com
-----------------------------------------------



ciao
Grazie mille per la risposta.....e spero di non postare in html!!
Ho però ancora un dubbio.
Applicando la tua soluzione "credo" che se dalla combobox della maschera 
principale io seleziono il nome di una prova a cui ho già associato dei 
dati in precedenza, nella sottomaschera oltre a visualizzarmi le misure 
previste per la prova selezionata mi visualizza anche i valori numerici 
già inseriti......mi spiego meglio con un esempio.
Supponiamo che nella tabella DETTAGLI PROVE siano già inseriti questi 
dati:
ID     /   PROVA   /   MISURA  /  VALORE
1 / peso specifico /  peso1    /      1,234
2 / peso specifico /  peso2    /      1,435
3 / peso specifico /  peso3    /      1,333 
Quando dalla maschera principale, per un nuovo record, io seleziono ancora 
la prova di peso specifico nella sottomaschera (visualizzazione foglio 
dati) mi si deve presentare questa situazione:
ID     /   PROVA   /   MISURA  /  VALORE
1 / peso specifico /  peso1    / 
2 / peso specifico /  peso2    / 
3 / peso specifico /  peso3    / 
Ovviamente nella sottomaschera non visualizzo   l'ID e il nome della prova 
ma solo il campo misura e il campo valore.
La sottomaschera è legata alla maschera principale dal campo "prova"
Spero di essermi spiegato meglio......
grazie per la risposta
ciao

grazie per la risposta


Ciao, grazie per la risposta
A me serve una sottomaschera che mi mostri solo i nomi delle "misure" 
relative alla "prova" selezionata nella maschera principale con il campo 
"valore" vuoto e pronto per l'inserimento e con, eventualmente, la 
possibilità (se necessario) di inserire anche nuove misure nel caso si 
crei una nuova prova.
Io purtroppo da solo non riesco a capire cosa devo modificare.....
Ripeto, l'esempio3.62 (come si può filtrare una maschera in base alla 
selezione multipla effettuata su una casella combinata) è molto simile a 
ciò che vorrei ottenere solo che nel mio caso si tratta di maschera con 
sottomaschera e ho la necessità di avere il campo valore vuoto e pronto 
per l'inserimento. 
Ciao e grazie per la pazienza
P.S.: ma qual'è la differenza tra html e testo? Io quando leggo i miei 
messaggi non vedo differenza....

messaggi non vedo differenza....
Strano, io la differenza l'ho vista, infatti ti ho suggerito di non usare 
messaggi HTML nei NG.


Ciao, grazie per la pazienza...capisco che non sia facile comprendere cosa 
ho in mente di fare...
Per quanto riguarda l'esempio della FAQ 3.62 era solo per dare un'immagine 
"visiva" del risultato finale che vorrei ottenere.
Effettivamente la "struttura" della FAQ è diversa dal mio caso però quello 
che volevo far capire è che il risultato finale deve essere 
"simile"....non vorrei aver creato maggiore confusione....
Ho notato solo ora che nella FAQ ogni volta che si seleziona una nuova 
categoria i nomi dei prodotti si aggiungono a quelli della categoria 
selezionata in precedenza mentre nel mio caso questo non deve accadere.
Per quanto riguarda le misure, attualmente una maschera del genere, mi 
potrebbe permettere di gestire circa 30 prove diverse.
Se però un giorno dovessi avere la necessità di aggiungere ancora una 
prova perchè è stata acquistata una nuova attrezzatura in laboratorio 
vorrei avere la possibilità di inserire il nome della prova nella combobox 
(e fin qui è tutto ok) della maschera principale e di inserire poi i nomi 
delle misure da prevedere per questa prova nella sottomaschera (con i 
relativi valori che, ovviamente, cambieranno poi ogni volta che faccio la 
stessa prova - cambiano solo i valori e non le misure).....e questo è un 
caso.
Un secondo caso potrebbe essere che per una prova (supponiamo la prova di 
carico a rottura) per cui erano state previste 10 misure un bel giorno, 
perchè cambia la normativa di riferimento, se ne devono prevedere 12 
percui mentre tutte le prove di carico a rottura precedentemente inserite 
devono rimanere invariate (sia come misure previste che come valori - 
nella tabella), quelle nuove devono avere 12 misure percui la prima volta 
che faccio un inserimento con la nuova normativa richiamando la prova di 
carico a rottura mi dovrebbero comparire sempre le 10 misure con la 
possibilità di aggiungerne  2. Quindi poi, fatta la modifica, ogni volta 
che richiamo la prova di carico a rottura, nella sottomaschera mi devono 
comparire i nomi delle 12 misure previste con i relativi campi valore 
vuoti e pronti per l'inserimento.
Spero di essermi spiegato meglio.....almeno spero!!
ciao e grazie ancora per l'aiuto e soprattutto per la pazienza

ciao e grazie ancora per l'aiuto e soprattutto per la pazienza
Prego.


ciao
Allora....devo sviluppare un db per inserire tutti i dati relativi a dei 
controlli che vengono fatti in un laboratorio di controllo di una azienda 
del settore plastico. Cerchiamo di semplificare "all'osso" in modo tale da 
rendere più chiaro il problema: consideriamo un'unica prova, la prova di 
allungamento a rottura (AR) da effettuare su due campioni di materiale 
diversi tra loro:campione1 e campione2. Sostanzialmente consiste nel 
prendere dei provini di gomma e allungarli sino a quando si rompono con 
uno strumento che, alla rottura del provino, mi restituisce un valore 
numerico. Il nome della prova l'ho inserito nella tabella "PROVE". Ogni 
prova di AR consiste in 3 trazioni (ogni prova viene ripetuta 3 volte) 
quindi abbiamo 3 misure (trazione1, trazione2, trazione3) e il nome di 
queste l'ho inserito nella tabella "MISURE". Poi ho una tabella chiamata 
"DETTAGLIPROVE" nella quale lego la singola prova alle misure da prevedere 
per la stessa e cioè in questo caso:
tabella "PROVE"                                      tabella 
"DETTAGLIPROVE"                    tabella "MISURE"
IdProva -   chiave prim. contatore       IdDettProve  - chiave prim. 
contatore    IdMisura -chiave prim. contatore
Prova -       testo                                         IdProva        
                        Misura -    testo
 IdMisura 
Quindi ogni prova può avere più misure e la relazione è uno a molti.
Questa struttura mi permette di realizzare una form con all'interno una 
subform in modo tale che quando seleziono il nome della prova di AR mi 
compaiono nella subform i nomi delle 3 misure (trazione1, trazione2 ecc). 
Quindi avrò (campione1):
MainForm: allungamento a rottura
SubForm:             trazione1 
                                trazione2
                                trazione3
Quando il provino di gomma si rompe lo strumento mi restituisce un valore 
numerico (un valore per ogni trazione) che io devo inserire nel mio db. Se 
io inserisco nella tabella "MISURE" un campo denominato "valore" ottengo 
(mettendo dei valori a caso - campione1):
MainForm: allungamento a rottura
SubForm:             trazione1     214
                                trazione2     186
                                trazione3      211 
Il mio problema nasce quando devo inserire i valori del campione2 perchè 
selezionando il nome della prova di AR mi si ripresentano le 3 misure di 
trazione (giusto) con i 3 valori numerici del campione1 mentre io vorrei 3 
campi vuoti e pronti per l'inserimento dei valori numerici.
Questa è ovviamente una spiegazione ridotta ai minimi termini che non 
tiene conto del fatto che nella mainform io vorrei una combobox per la 
selezione del nome della prova ecc ecc
Spero di essermi spiegato meglio, almeno sul punto di partenza, e che tu 
possa aiutarmi ancora....
Ripeto, non sono esperto di codici vba e sulla struttura del db "traballo" 
ancora un pò..
grazie e ciao 

ca...@flag.it
 ha scritto:

Provo a buttarla lì per quello che mi pare di capire:
1) Hai bisogno di una tabella Campioni, con descrizione, magari data di 
esecuzione, e, soprattutto, ID per poter ritrovare le prove fatte su uno 
specifico campione seza mescolare tutte le misure.
2) Nella tabella Prove inserisci un campo 'ripetizioni' ti servirà per 
far sapere al programma quanti record dovrà preparare per l'inserimento, 
e se in futuro cambia la normativa sarà sufficiente aggiornare il campo.
3) Puoi far generare al programma una tabella temporanea con tanti 
record quante sono le misurazioni (che leggerai dal campo vedi sopra). 
Questa tabella avrà i campi dei valori di misura vuoti, ed in questi 
farai l'iserimento, poi, previa conferma, i valori saranno trascitti 
nella tabella delle misure, con id prova e id campione, per poterli 
ritrovare; la tabella temporanea verrà azzerata cancellando tutti i 
record, e sarà pronta per un nuovo inserimento.
Però senza VBA non credo sia possibile

Ciao, grazie per i suggerimenti.
In effetti ho già una tabella denominata "CODICE" nella quale creo un 
codice materiale in modo che ogni campione sia ben identificato.
Questo non lo avevo scritto perchè volevo ridurre ai minimi termini una 
spiegazione già di per sè abbastanza lunga.
Il mio problema stà proprio nel vba che io, purtroppo, non sò usare.
Mi era già stato consigliato, per un problema analogo, di utilizzare una 
tabella temporanea ma non sono mai riuscito a trovare degli esempi che mi 
facessero capire come funziona.
Sono costretto a chiedere, se possibile, di scrivere un codice vba "di 
base" sviluppato sul mio esempio con le tabelle indicate in modo tale che 
poi lo possa applicare al mio db e che poi lo possa sviluppare, modificare 
ecc ecc in futuro da solo o sempre con l'aiuto del newsgroup.
Purtroppo proprio non riesco ad andare avanti...


ca...@flag.it
 ha scritto:

Scrivere un codice senza avere a disposizione la struttura del DB è un 
casino. L'editor VBA di Access è molto aiutato, e riconosce da solo la 
correttezza formale di gran parte del codice, ma deve essere scritto nel 
mdb dove dovrà funzionare.
Però, un suggerimento: La tabella temporanea la generi come tutte le 
tabelle, la chiamerai tmpTabellaxxxxx, e la potrai vutare dal suo 
contenuto mandando in esecuzione una query di eliminazione record.
Il VBA ti servirà per generare i record da compilare, sostanzialmente:
dim rs as recordset, numProve as integer, i as integer
set rs=currentdb.openrecordset("tmpTabellaxxxx")
numProve=me.ripetizioni.value 'NB: il campo ripetizioni deve essere 
nella maschera principale, anche se non visibile
for i = 1 to numProve
rs.addnew
rs.IDMisura=me.IDProva.value '(IDProva deve essere nella form pricipale, 
e sarà il campo di legame form/subform)
rs.update
next i
rs.close
me.requery
Penso di aver fatto qualche errore, comunque l'help ti sarà di conforto
Una routine tipo quella che ho scritto sopra dovrà essere sull'evento 
aperture della maschera, oppure sull'evento su corrente, aggiungendo in 
questo caso il trasferimento e l'azzeramento della temporanea. In 
pratica sfogliando i recod delle prove, verrà ogni volta cancellata la 
tb temporanea e rigenerata con un numero di misura uguale a quella del 
record prova corrente... poi fantasia.
anche l'azzeramento ed il trasferimento dei record può essere gestito 
via VBA (sempre l'help per aiuti)
Buon lavoro

ca...@flag.it
 ha scritto:

Scrivere un codice senza avere a disposizione la struttura del DB è un
casino. L'editor VBA di Access è molto aiutato, e riconosce da solo la
correttezza formale di gran parte del codice, ma deve essere scritto nel
mdb dove dovrà funzionare.
Però, un suggerimento: La tabella temporanea la generi come tutte le
tabelle, la chiamerai tmpTabellaxxxxx, e la potrai vutare dal suo
contenuto mandando in esecuzione una query di eliminazione record.
Il VBA ti servirà per generare i record da compilare, sostanzialmente:
dim rs as recordset, numProve as integer, i as integer
set rs=currentdb.openrecordset("tmpTabellaxxxx")
numProve=me.ripetizioni.value 'NB: il campo ripetizioni deve essere
nella maschera principale, anche se non visibile
for i = 1 to numProve
rs.addnew
rs.IDProva=me.IDProva.value '(IDProva deve essere nella form pricipale,
e sarà il campo di legame form/subform)
rs.update
next i
rs.close
me.requery
Penso di aver fatto qualche errore, comunque l'help ti sarà di conforto
Una routine tipo quella che ho scritto sopra dovrà essere sull'evento
aperture della maschera, oppure sull'evento su corrente, aggiungendo in
questo caso il trasferimento e l'azzeramento della temporanea. In
pratica sfogliando i recod delle prove, verrà ogni volta cancellata la


ciao, ti ringrazio veramente tanto per l'aiuto che mi stai dando.
Vorrei partire con il piede giusto e quindi, per capire bene il discorso 
relativo alla tempTable, partirò da zero con un db nuovo.
Quindi la struttura è questa: 
tabella CODICE
IdCodice - chiave primaria, contatore
Codice - testo
tabella PROVE
IdProva - chiave primaria, contatore
Prova - testo
Ripetizioni - testo
tabella MISURE
IdMisura - chiave primaria, contatore
Misura - testo
tabella DETTAGLIPROVE
IdDettProve - chiave primaria, contatore
IdProva - numerico
IdMisura - numerico
tabella TMPTABELLAXXXX
IdTempTable
............ 
Prima domanda: quest'ultima la creo come le altre ma quali campi, oltre 
l'ID che credo serva, devo inserire?
Seconda domanda: questa tabella non deve essere relazionata con le altre, 
giusto?
Terza domanda: la tabella DETTAGLIPROVE mi serve per mettere in relazione 
la tabella PROVE con la tabella MISURE ma come relaziono la tabella 
CODICE?
Penso che la tabella DETTAGLI PROVE debba diventare:
IdDettProve - chiave primaria, contatore
IdCodice - numerico
IdProva - numerico
IdMisura - numerico
oppure mi sbaglio?
Quarta domanda: la maschera di inserimento dati la posso creare con 
l'autocomposizione?
Io domani parto per le ferie percui non potrò continuare con lo sviluppo 
del db però vorrei almeno che la "base di partenza" fosse quella giusta.
Al mio rientro vorrei continuare. Secondo te è meglio che 'posti' sempre 
in coda al prossimo post che mi invierai oppure è meglio ricominciare da 
capo?
Intanto ti ringrazio per l'aiuto  datomi sino ad ora
Ciao

 
Di nulla, e buona vacanza (portati una buona lettura di un manuale di 
access per masticare un po' di VBA, Access camibia marcia)