Magazine Informatica

Come creare una nuova entità base – Detail Form e Detail List su NotaSoftware

Creato il 06 febbraio 2012 da Magnus

Come creare una nuova entità base – Detail Form e Detail List su NotaSoftwareIl tutorial è applicabile alle versioni di NotaSoftware maggiori o uguali alla 0.3

Di seguito è indicata la configurazione delle nuove funzionalità di dettaglio del Form e del List.

La modalità di realizzazione di tali funzionalità su Nota si basa sul popolamento delle seguenti tabelle "di sistema":

_forms_details _form_columns_details _lists_details _list_columns_details   Gli step da seguire sono quelli a seguire ( tutte le operazioni possono essere eseguite in maniera visuale mediante un qualsiasi tool per mysql ).   Per la creazione di un DETAIL FORM con funzioni di visualizzazione/inserimento/modifica:   1) Realizzazione della tabella fisica "dettaglio_documenti" nel proprio db ( è la tabella dove risiederanno i dati )   Allego script sql per la creazione di una semplice tabella:   CREATE TABLE `dettaglio_documenti` (
   `id` INT(11) NOT NULL AUTO_INCREMENT,
   `id_documento` INT(11) NOT NULL DEFAULT '0',
   `qta` INT(11) NOT NULL DEFAULT '0',
   `prezzo_unitario` FLOAT(10,2) NOT NULL DEFAULT '0.00',
   `id_articolo` INT(11) UNSIGNED NULL DEFAULT '0',
   `totale` FLOAT(10,2) NULL DEFAULT NULL,
   `totale_iva` FLOAT(10,2) NULL DEFAULT NULL,
   `totale_iva_esclusa` FLOAT(10,2) NULL DEFAULT NULL,
   `id_codice_iva` INT(11) NULL DEFAULT NULL,
   PRIMARY KEY (`id`)
)
  2) Configurazione di un record nella tabella _forms_details del proprio db:   La tabella _forms_details è composta dai seguenti campi:   id_form ( rappresenta l'id del form padre – tabella _forms ) name ( rappresenta il nome del detail form da creare. Il nome deve avere lo stesso nome indicato nel file jsp ) table ( rappresenta il nome della tabella fisica su cui si appoggia il detail form ) foreign_table ( rappresenta il nome della tabella fisica su cui si appoggia la form padre) primary_key ( rappresenta la chiave della tabella fisica su cui si appoggia la form padre ) foreign_key ( rappresenta la chiave della tabella fisica su cui si appoggia il detail form ) auto_format_string ( è un flag Y/N che indica se le label del detail form devono essere formattate automaticamente ) detail_label ( rappresenta il nome della label del pulsante che porta alla form di dettaglio )
detail_form_pre_save ( rappresenta il metodo javascript da invocare prima del salvataggio ) detail_form_post_save ( rappresenta il metodo javascript da invocare dopo del salvataggio )   Allego script sql:   INSERT INTO `_forms_details` (`id`, `id_form`, `name`, `table`, `foreign_table`, `primary_key`, `foreign_key`, `auto_format_string`, `detail_label`, `detail_form_pre_save`, `detail_form_post_save`) VALUES (1, 1, 'documenti/dettaglio_documenti', 'dettaglio_documenti', 'documenti', 'id', 'id_documento', 'Y', 'Visualizza Dettaglio', NULL, 'viewForm()')   3) Configurazione di un record per ogni campo ( ad eccezione della primary_key ) da mappare nella tabella _form_columns_details del proprio db:   id_form_detail ( id della form detail a cui il record fa riferimento ) name ( nome descrittivo del campo che stiamo inserendo ) id_field_type ( il tipo che si vuole associare al campo ) field ( nome del campo fisico ) foreign_table ( nome tabella fisica esterna se il campo è in join ) foreign_key ( chiave delle tabella fisica in join se il campo è in join ) foreign_description ( valore da recuperare dalla tabella in join per il campo in join ) label ( valore a video per il campo ) read_only ( flag Y/N che identifica se il campo è di sola lettura ) sequence ( numero di sequenza a video per il campo ) foreign_long_description ( valore da recuperare dalla tabella in join per il campo in join ) foreign_sub_table ( nome tabella fisica esterna se il campo è un sub value) foreign_sub_key ( chiave delle tabella fisica se il campo è un sub value ) sub_more_info ( info aggiungive per un campo di tipo sub value ) foreign_long_key ( chiave verso il valore di default dei campi di tipo long combo box ) foreign_long_default ( valore di default dei campi di tipo long combo box )   Allego script sql:   INSERT INTO `_form_columns_details` (`id`, `id_form_detail`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `foreign_code`, `label`, `read_only`, `sequence`, `foreign_long_description`, `foreign_sub_table`, `foreign_sub_key`, `sub_more_info`, `foreign_long_key`, `foreign_long_default`) VALUES (1, 1, 'id_articolo', 3, 'id_articolo', 'articoli', 'id', 'descrizione', NULL, 'ARTICOLO', '', 1, 'descrizione', 'articoli', 'id', '', '2', '- Nessun Articolo -') INSERT INTO `_form_columns_details` (`id`, `id_form_detail`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `foreign_code`, `label`, `read_only`, `sequence`, `foreign_long_description`, `foreign_sub_table`, `foreign_sub_key`, `sub_more_info`, `foreign_long_key`, `foreign_long_default`) VALUES (2, 1, 'descrizione_articolo', 1, 'descrizione_articolo', '', NULL, NULL, NULL, NULL, '', 2, NULL, NULL, NULL, NULL, NULL, NULL);     Per la creazione di un DETAIL LIST con funzioni di visualizzazione/ricerca:   1) Configurazione di un record nella tabella _lists_details del proprio db:   La tabella _lists_details è composta dai seguenti campi:   id_list ( rappresenta l'id del list padre – tabella _lists ) name ( rappresenta il nome del list detail da creare. Il nome deve avere lo stesso nome indicato nel file jsp ) table ( rappresenta il nome della tabella fisica su cui si appoggia il detail form) foreign_table ( rappresenta il nome della tabella fisica su cui si appoggia il list padre) primary_key ( rappresenta la chiave della tabella fisica su cui si appoggia il list padre ) foreign_key ( rappresenta la chiave della tabella fisica su cui si appoggia il detail list ) auto_format_string ( è un flag Y/N che indica se le label del detail list devono essere formattate automaticamente ) paginate ( rappresenta il numero di record visualizzati per pagina ) options ( rappresenta le opzioni attive per la lista: e = edit; d = delete; s = search )   Allego script sql:   INSERT INTO `_lists_details` (`id`, `id_list`, `name`, `table`, `foreign_table`, `primary_key`, `foreign_key`, `paginate`, `options`, `auto_format_string`) VALUES
(1, 1, 'documenti/dettaglio_documenti', 'dettaglio_documenti', 'documenti', 'id', 'id_documento', 30, 'e/d/s', 'Y')
  2)  Configurazione di un record per ogni campo ( ad eccezione della primary_key ) da mappare nella tabella _list_columns_details del proprio db:   La tabella _list_columns_details è composta dai seguenti campi:   id_list_detail  ( id del list detail a cui il record fa riferimento ) name ( nome descrittivo del campo che stiamo inserendo ) id_field_type ( il tipo che si vuole associare al campo ) field ( nome del campo fisico ) foreign_table ( nome tabella fisica esterna se il campo è in join ) foreign_key ( chiave delle tabella fisica in join se il campo è in join ) foreign_description ( valore da recuperare dalla tabella in join per il campo in join ) label ( valore a video per il campo ) search ( flag Y/N che indica se sul campo è possibile eseguire ricerche ) sequence ( numero di sequenza a video per il campo )   Allego script sql:   INSERT INTO `_list_columns_details` (`id`, `id_list_detail`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `label`, `read_only`, `search`, `sequence`) VALUES
(1, 1, 'descrizione_articolo', 1, 'descrizione_articolo', '', NULL, NULL, 'Articolo', '', '', 1)

INSERT INTO `_list_columns_details` (`id`, `id_list_detail`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `label`, `read_only`, `search`, `sequence`) VALUES
(2, 1, 'prezzo_unitario', 1, 'prezzo_unitario', '', NULL, NULL, 'Prezo Unitario', '', '', 2)
  In uno dei seguenti tutorial affronteremo nel dettaglio la creazione di dettagli multipli.

Potrebbero interessarti anche :

Ritornare alla prima pagina di Logo Paperblog

Possono interessarti anche questi articoli :