Sviluppo4d.it
Sito indipendente di informazioni tecniche per sviluppatori 4th Dimension italiani  

Sviluppatori 4D

Utility 4D

Risorse 4D



4d logo
Naviga: Prev Next

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: 13173

Se accedi con utente e password, puoi aggiungere dei commenti.


Accesso

User:
Pass: Accedi

Cerca

Se non trovi le informazioni che cerchi scrivi a aiuto@sviluppo4d.it

4D Principali

4D Discussioni

Faq random


Crediti

Dominio registrato da ZetaNet
Sito realizzato da Nexus srl
4D SQL 11.9.0 offerto da 4D & Italsoftware
Icone di FAMFAMFAM
Moderato da Umberto Migliore
301 utenti registrati

Pagina servita il 19/03/24 alle 09:19:34 Valid HTML 4.01! Valid CSS!

Mutuo Facile, iDigitalScout, iDigitalTags e altre app di Nexid srl per iPhone e iPad

Cidroid, distributore italiano lettori barcode per IOS Apple iPhone, iPod, iPad