Newsgroup: it.comp.appl.access
Titolo: Come salvare i dati?

Buonasera,
vi scrivo perchè proprio non so come risolvere questo problema...
Ho creato due tabelle:
MODELLO  Cda_modello, 		DETTAGLIO_MODELLO		Num_prog,
		  Cda_Cliente,    						            Cda_Modello,
		  Cda_Stagione,   					  		   Cda_Fase,
		  Cda_Style       					  		     Des_Tessuto,
         		             					  			   Cda_Colore,
            	          					  				   Des_Note_Generali
              	        					  				   Des_Note_Filo
                	      					  				   Des_Note_Tessuto
                  	    					  				   Path_Foto
visto che un "Modello" può avere più "Dettaglio_modello"
Per rappresentare le info delle due tabelle ho creato una maschera,
basata sulla seguente query:
SELECT MODELLO.Cda_modello, MODELLO.Cda_Cliente, MODELLO.Cda_Stagione,
MODELLO.Cda_Style, DETTAGLIO_MODELLO.Num_prog,
DETTAGLIO_MODELLO.Cda_Modello, DETTAGLIO_MODELLO.Cda_Fase,
DETTAGLIO_MODELLO.Des_Tessuto, DETTAGLIO_MODELLO.Cda_Colore,
DETTAGLIO_MODELLO.Des_Note_Generiche, DETTAGLIO_MODELLO.Des_Note_Filo,
DETTAGLIO_MODELLO.Des_Note_Tessuto, DETTAGLIO_MODELLO.Path_Foto
FROM MODELLO LEFT JOIN DETTAGLIO_MODELLO ON MODELLO.Cda_modello =
DETTAGLIO_MODELLO.Cda_Modello
WHERE (((DETTAGLIO_MODELLO.Cda_Fase)= '" & fase_modello & "'))
ORDER BY DETTAGLIO_MODELLO.Num_prog;
Per l'inserimento, la modifica e la cancellazione dei modelli.
Per il salvataggio dei nuovo modelli, visto che più dettagli possono
far riferimento ad un singolo modello, ho dovuto gestire distinguere
tra due casi:
1. ho creato un modello ex-novo, per cui salvo direttamente
2. ho creato un modello di cui ho già parte delle info (quelle nella
tabella Modello) e quindi salvo la parte di info relative al
"dettaglio_modello" con una insert solamente sulla seconda tabella.
Il secondo caso è stata una necessità visto che se provavo a salvare
come nel primo, giustamente mi diceva che stavo cercando di duplicare
la chiave.
Fin qui tutto bene... o almeno credo :( ... l'unica cosa è che (oltre
a rendermi conto che forse non è la soluzione migliore) al momento in
cui vado a fare il refresh della maschera e provo ad andare al primo
elemento nella select il db mi dice (di nuovo!!!!!) che sto provando a
duplicare una chiave, per cui mi si pianta e non riesco ad andare
oltre.
Avete qualcheidea su come risolvere il tutto?? Io proprio non so dove
mettermi le mani??
Grazie in anticipo per il vostro aiuto
Marco


Dopo avervi tediato con un 3D allucinante sono arrivato alla
soluzione... non so come ma ci sono arrivato!!!
Buona notte a tutti!!!
Marco


Come non detto!!! :,( La notte fa brutti scherzi... era solo
un'illusione...
Avete qualche idea???

 ha scritto nel messaggio news:1183589698.7...@n2g2000hse.googlegroups.com...


Avete qualche idea???
[risposta]
Un paio.
Non incaponirsi nell'utilizzare con una maschera per rappresentare uno scenario tabellaPrincipale->tabellaDettaglio; ci sono le 
sottomaschere per i dettagli:
- mascheraPrincipale associata alla tabellaPrincipale
- sottomascheraDettaglio associata alla tabellaDettaglio.
Strutturare bene le tabelle e definirne le relazioni...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggionews:1183589698.7...@n2g2000hse.googlegroups.com...

Ciao!! Grazie per il consiglio...
già l'ho messo in pratica... ho già separato le due maschere... ma a
questo punto sorge un problema... se guardi la query su cui era basata
la maschera originale, i criteri della where sono uno della tabella
principale ed uno della tabella dettaglio... come faccio a ripetere la
stessa situazione con una maschera ed una sottomaschera?
Grazie mille!!
Marco

 ha scritto nel messaggio 
news:1183627360....@w5g2000hsg.googlegroups.com...
Ciao!! Grazie per il consiglio...
già l'ho messo in pratica... ho già separato le due maschere... ma a
questo punto sorge un problema... se guardi la query su cui era basata
la maschera originale, i criteri della where sono uno della tabella
principale ed uno della tabella dettaglio... come faccio a ripetere la
stessa situazione con una maschera ed una sottomaschera?
Grazie mille!!
Marco
[risposta]
(Ripeto) Non devi utilizzare nessuna query; le maschere possono essere 
benissimo associate alle tabelle, le sottomaschere (se segui la procedura 
giudata) vengono associate (anche queste) alle tabelle e se sono in 
relazione con la tabella (origine dati) della maschera principale, tramite 
la proprietà "Colelga campi Master/Secondari", crei la relazione...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggionews:1183627360....@w5g2000hsg.googlegroups.com...

Buongiorno!!!
Sto seguendo i tuoi consigli, e d effettivamente la soluzione da te
proposta è decisamente più comoda...
Ora però sorge un piccolo problema...
La maschera principale è basata su una tabella che ha per chiave il
campo cda_modello, anche la tabella su cui è basata la sottomaschera
ha per chiave lo stesso campo; al momento in cui vado a compilare il
campo cda_modello sulla maschera principale mi spara subito il
messaggio "L'indice o la chiave primaria non può contenere un valore
Null" e appena mi sposto sulcampo successivo mi dice che nella tabella
principale è necessario un campo correlato.
Come posso risolvere?
Grazie mille
Marco

 ha scritto nel messaggio news:1183798167.3...@c77g2000hse.googlegroups.com...
Buongiorno!!!
[risposta]
Buongiorno.
Sto seguendo i tuoi consigli, e d effettivamente la soluzione da te
proposta è decisamente più comoda...
Ora però sorge un piccolo problema...
La maschera principale è basata su una tabella che ha per chiave il
campo cda_modello, anche la tabella su cui è basata la sottomaschera
ha per chiave lo stesso campo; al momento in cui vado a compilare il
campo cda_modello sulla maschera principale mi spara subito il
messaggio "L'indice o la chiave primaria non può contenere un valore
Null" e appena mi sposto sulcampo successivo mi dice che nella tabella
principale è necessario un campo correlato.
Come posso risolvere?
[risposta]
Cosa hai indicato i campi master/secondari?
La struttura delle tabelle è simile a questa?
[MODELLO]
- Cda_modello, contatore, indicizzato (duplicati non ammessi);
- ...
[DETTAGLIO_MODELLO]
- Cda_modello, numerico, indicizzato (duplicati ammessi);
...
La relazione tra queste risulta?
[MODELLO].Cda_modello 1 -> molti [DETTAGLIO_MODELLO].Cda_modello
Grazie mille
Marco
[risposta]
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggionews:1183798167.3...@c77g2000hse.googlegroups.com...

Buongiorno!!
Alla fine sono riuscito a risolvere... la mia situazione iniziale...
visto che in entrambi gli scenari avevo dei problemi li ho portati
avanti entrambi...
Non so se a qualcuno potrà tornare utile, ma chiudendo il post
descrivo la problematica e la relativa soluzione... non è molto
elegnate ma funge... :D
Nel mio db ho due tabelle
MODELLO  Cda_modello,           DETTAGLIO_MODELLO
Num_prog,
 
Cda_Cliente,
Cda_Modello,
 
Cda_Stagione,
Cda_Fase,
 
Cda_Style
Des_Tessuto,
 
Cda_Colore,
 
Des_Note_Generali
 
Des_Note_Filo
 
Des_Note_Tessuto
 
Path_Foto
MODELLO.Cda_modello è in relazione (1,n) con
DETTAGLIO_MODELLO.Cda_modello.
In pratica uno stesso modello può avere più dettagli in base alla fase
in cui si trova (cda_fase).
Per lavorare su queste info ho creato una tabella basata su la
seguente query:
SELECT MODELLO.Cda_modello, MODELLO.Cda_Cliente, MODELLO.Cda_Stagione,
MODELLO.Cda_Style, DETTAGLIO_MODELLO.Num_prog,
DETTAGLIO_MODELLO.Cda_Modello, DETTAGLIO_MODELLO.Cda_Fase,
DETTAGLIO_MODELLO.Des_Tessuto, DETTAGLIO_MODELLO.Cda_Colore,
DETTAGLIO_MODELLO.Des_Note_Generiche,
DETTAGLIO_MODELLO.Des_Note_Filo,DETTAGLIO_MODELLO.Des_Note_Tessuto,
DETTAGLIO_MODELLO.Path_Foto
FROM MODELLO LEFT JOIN DETTAGLIO_MODELLO ON MODELLO.Cda_modello
=DETTAGLIO_MODELLO.Cda_Modello
WHERE (((DETTAGLIO_MODELLO.Cda_Fase)= '" & fase_modello & "'))
ORDER BY DETTAGLIO_MODELLO.Num_prog;
Ovvero seleziono tutti i record risultanti dalla join tra le due
tabelle, che hanno come fase un valore passato da codice.
Ho creato anche un bottone che permette di duplicare un modello già
esistente ed inserirlo in una nuova fase.
Qui sorgeva il problema, nel senso che da codice, dopo aver scelto il
modello da duplicare andavo a valorizzare i controlli nella maschera,
ma nel momento del salvataggio Access giustamente riconosceva che
nella tabella "MODELLI" i valori erano già presenti.
Per ovviare a questo primo problema da codice ho creato una insert che
mi va a valorizzare solo la tabella "DETTAGLIO_MODELLO", ma comunque
nel momento in cui andavo a spostarmi ad un record successivo, Access
si incazzava comunque per che notava che comunque i valori che avevo
inserito erano già presenti.
Per tagliare la testa al toro, ho quindi risolto così:
Faccio la insert, dopo di che gli sparo un bel me.undo (così i
controlli non sono più valorizzati) e poi mi sposto ad un altro
record.
Sicuramente non una soluzione elegante ma funge...
Ciao ciao
Marco