Titolo: Passaggio da Subtable a Tabella in relazione
Categoria: Codice |
|
Ultimo Aggiornamento: 29/04/04 |
Le Subtable sembrano comode, ma per loro natura hanno molti limiti. In genere succede che dopo qualche tmepo si ha la necessità di usare invece una tabella in relazione.
Ecco come fare il passaggio (in linea generale):
- creare una tabella secondaria con gli stessi campi della subtable più un campo chiave che identifichi il record padre;
- tirare una relazione dalla tabella secondaria alla primaria e impostare gli automatismi Molti a Uno e Uno a Molti: in questo modo quando si seleziona il record padre si ha quasi sempre selezionati i sotto-record nella tabella secondaria (in alcuni casi aggiungere comunque nel codice un Relate Many)
- cercare con l'insider tutte le occorrenze dei campi nella sottotabella e sostituirli con i campi della tabella secondaria;
- cercare tutti i query subrecords, order subrecords by, etc e sostituirli con comandi che abbiano la stessa funzione (ad esempio: all subrecords dovrebbe diventare relate many, create subrecords diventa create record ed in più impostare il campo chiave, etc)
- passare i dati dalla subtable alla nuova tabella, usando un codice come il seguente:
ALL RECORDS([TabellaPadre])
For ($i;1;Records in selection([TabellaPadre]))
LOAD RECORD([TabellaPadre])
ALL SUBRECORDS([TabellaPadre]CampoSubT)
For ($j;1;Records in subselection([TabellaPadre]CampoSubT)
CREATE RECORD([TabellaSecondaria])
`impostiamo il campo chiave che distingue il padre [TabellaSecondaria]Campo_1:=[TabellaPadre]Campo_Chiave
`questi invece sono gli stessi campi [TabellaSecondaria]Campo_2:=[TabellaPadre]CampoSubT'Campo_1
[TabellaSecondaria]Campo_3:=[TabellaPadre]CampoSubT'Campo_2
SAVE RECORD([TabellaSecondaria])
NEXT SUBRECORD([TabellaPadre]CampoSubT)
End for UNLOAD RECORD([TabellaPadre])
NEXT RECORD([TabellaPadre])
End for
Inviato da: Umberto Migliore |
|
Visite: 13461 |
Se accedi con utente e password, puoi aggiungere dei commenti.