Newsgroup: it.comp.appl.access
Titolo: due sottomaschere continue? (sincro riga per riga)

Saluti a tutto il NG
La situazione è la seguente:
Ho 3 tabelle: clienti, ordini e momento_distribuzione.
Clienti ha i soliti campi, ogni cliente ha un suo codice; ordini ha il campo 
codice_cliente come chiave esterna nella relazione con i clienti; 
momento_distribuzione rappresenta delle particolari sessioni di dstribuzione 
degli articoli ordinati con una data ed un orario, gli ordini sono legati ad 
un particolare momento di distribuzione tramite l'id momento distrubuzione.
Sto cercando di realizzare una maschera per l'inserimento/visualizzazione 
degli ordini relativi ad un dato momento_distribuzione, che visualizzi sia i 
dati dell'ordine che alcuni dati dei clienti (per prova mi basta il 
cognome), in modo "allineato".
Ho quindi una maschera master relativa a momento_distribuzione e 
sottomaschera/e per i dettagli.
Finora ho fatto i seguenti tentavi.
a) Una unica sottomaschera basata su una query che lega cliente e ordini: va 
bene per la visualizzazione ma non per l'inserimento, in quanto inserendo un 
nuovo ordine crea un nuovo record anche per la tabella clienti che invece 
deve servire solo come ricerca.
b) Una unica sottomaschera in cui inserico i campi relativi ai dettagli del 
cliente come campi non associati che popolo tramite una funzione di ricerca 
nell'origine controllo (ho dovuto mettere l'istruzione sql in una funzione 
perché non sono riuscito metterla direttamente come origine): con questa 
soluzione ogni volta che inserisco un codice cliente per un nuovo ordine la 
maschera esegue il requery su tutti i record anche se a me servirebbe solo 
quello corrente; inoltre avendo impostato l'origine controllo ad una 
funzione non posso inserire manualmente il cognome del cliente per 
effettuare la ricerca inversa ed ottenere il relativo codice cliente.
Ho pensato quindi a due sottomaschere continue, di cui però non riuscito ad 
ottenere una sincronizzazione riga per riga; questa soluzione mi piacerebbe 
anche perché mi darebbe la possibilità di scorrere il dettaglio dell'ordine, 
senza perdere la visualizzazione dei dati del cliente.
Sapreste darmi una mano?
Grazie per l'attenzione
yanez 

 yanez
Per sincronizzare due sottomaschere devi utilizzare una casella di testo non 
associata che fa da "ponte" tra le due sottomaschere.
Come sai la sottomaschera è legata alla maschera principale dalle proprietà 
"Collega campi secondari/master" dove indichi i nomi dei campi della 
maschera master e secondaria.
La stessa cosa la devi fare per la seconda sottomaschera, però gli devi 
inserire, come master, la casella di testo non associata; quest'ultima verrà 
valorizzata gestendo l'evento "su corrente" della prima sottomaschera:
es.
Parent!nomeCasellaNonAssociata
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Ciao Sergio, grazie per l'attenzione: speravo che una presenza importante 
come la tua per questo NG desse uno sguardo al mio post!
Il problema è che la casella di testo nascosta, potendo contenere un solo 
valore la volta, può essere utile per sincronizzare una sottomaschera A che 
visualizzi un solo record la volta, in base al record corrente dell'altra 
sottomaschera B.
Io invece voglio che entrambe le sottomaschere siano in visualizzazione 
maschera continua, con i campi del primo record di A corrispondenti a quelli 
del primo di B, il secondo con il secondo e cosi via...
Grazie ancora per l'attenzione
ciao yanez 

 ciao yanez
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Allora: io ho due sottomaschere sbfrmA e sbfrmB; sbfrmB mostra gli ordini 
dei clienti da evadere in una certa data (la maschera master rappresenta 
appunto la data, e i totali degli ordini): diciamo una 20-ina di righe in 
cui ogni riga-record mostra il codice del singolo cliente, la data in cui ha 
fatto l'ordine, e 10 campi si/no ciascuno corrispondente ad art1...art10 in 
base al-agli articoli ordinati.
sbfrmA deve essere "accanto a sinistra" di sbfrmB, avere lo stesso numero di 
rghe-record di  sbfrmB e mostrare i dettagli di ogni cliente (Nome Cognome 
ecc) in base al valore del codice cliente sulla corrispondente riga di 
sbfrmB
sbfrmA                             sbfrmB
|Nome     | Cognome|       |Cod Cliente| Data Ordine| 
Art1|...........|Art10|
|Mario     |Rossi        |       |a1562        | 01/01/00     | x     | 
..........|         |
|Paolo     |Bianchi      |       | b6534       | 10/01/07    |        | 
|         |
e così via...
con la tua soluzione in sbfrmA riesco a visualizzare una sola riga la volta, 
in base al record corrente di sbfrmB: se ad esempio mi posiziono sul secondo 
record in sbfrmB vedrò in sbfrmA solo Paolo Bianchi.
Questo perché il campo nascosto nella maschera master contiene di volta in 
volta il solo valore del codice cliente del record corrente in sbfrmB, 
conseguentemente in sbfrmA vedrò solo i dati dell'unico cliente il cui 
codice è valorizzato nel campo nascosto della maschera master (che nel post 
ho chiamato momento_distribuzione)
spero che ora il quadro sia più chiaro e sappiate darmi una mano (rileggete 
magari anche il mio primo post in cui spiego i tentativi già fatti)
grazie ancora
yanez 

 ha scritto nel messaggio 
news:Bjluh.23710$bH4....@tornado.fastwebnet.it...

Quindi il recordset della subformB deve comprendere tutti i clienti presenti 
nel recordset della subformA?
Potresti legare la query della subFormB alla query della subFormA;
es.
Select * From tabPersbfrmB Where idCliente In (Select id From tabPersbfrmA 
Where dataOrdine = Forms!nomeForm!dataOrdine)
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Scusa Sergio se rispondo solo ora, ma dopo qualche giorno dal mio ultimo
post, credevo di aver perso il treno....
Per il momento avevo risolto utilizzando una maschera che univa i record
delle due tabelle tramite una query (come detto nel primo post); ho
impostato la maschera in modo da consentire solo l'eliminazione e la
modifica ma non l'immissione in modo da non generare nuovi clienti nel
momento di immissione...
Ho poi aggiunto un'altra sotto maschera sotto la precedente, dalla grafica
identica, ma con visualizzazione maschera singola e con campi non associati
per l'inserimento.
(Mi sono dilungato a scopo didattico)
Provo subito la nuova soluzione, magari a costo di tornare un po' indietro
con lo sviluppo...
grazie ancora
yanez

 yanez
Valuta anche la possibilità di cambiare la modalità di visione dei dati 
sulla maschera...
Ciao.
-- 
Sergio MAZZA