View source | Discuss this page | Page history | Printable version   
Toolbox
Main Page
Upload file
What links here
Recent changes
Help

PDF Books
Show collection (0 pages)
Collections help

Search

ERP 2.50:Developers Guide/How to define an oncreatedefault/it

Contents

Obiettivo

L'obiettivo di questo documento è di spiegare brevemente cosa sia un oncreatedefault , in quali situazioni è utile, e di descrivere come definirne uno correttamente .

Concetto

OnCreateDefaults sono istruzioni SQL che vengono eseguite dal task update.database quando una colonna di database viene creata. Sono normalmente utilizzati per inserire dati in una nuova colonna. E 'importante notare che esse vengono eseguite solo quando la colonna viene creata. Se la colonna è già nel database, update.database non eseguirà l'istruzione onCreateDefault. Per compilare i dati in una colonna già creato, è possibile utilizzare uno script di Modulo. Per saperne di più sugli script di modulo, si può vedere questo documento nella Guida Sviluppatori.

Processo di Sviluppo

Dichiarazioni di onCreateDefault vengono aggiunti direttamente al file XML della tabella. Ciò significa che i passi di sviluppo principali dovrebbero essere:

Una dichiarazione onCreateDefault deve essere un SQL valido, che può essere aggiunto in due diversi tipi di comandi SQL. Supponiamo che la tabella C_BPARTNER sta per essere esteso, aggiungendo una colonna MyColumn. Abbiamo bisogno di progettare una dichiarazione onCreateDefault che funziona con i seguenti due tipi di comandi SQL:


 
INSERT INTO C_BPARTNER (Column1, Column2, ..., MYCOLUMN) SELECT (Column1, Column2, ..., MYCOLUMN_ONCREATEDEFAULT) FROM C_BPARTNER_
 
UPDATE C_BPARTNER SET Column1=ValueForCol1, Column2=ValueForCol2, ..., MYCOLUMN=(MYCOLUMN_ONCREATEDEFAULT)

Quindi, in questo caso, immaginiamo che MyColumn è una colonna Sì / No , e vogliamo impostare a 'N' le righe esistenti di C_BPARTNER quando la colonna viene creata la prima volta. Vorremmo modificare la definizione di colonna, in modo che appaia così :

 
      <column name="MYCOLUMN" primaryKey="false" required="true" type="CHAR" size="1" autoIncrement="false">
        <default><![CDATA[N]]></default>
        <onCreateDefault><![CDATA['N']]></onCreateDefault>
      </column>

Si noti la differenza di sintassi nel onCreateDefault, rispetto alla standard di default. Abbiamo bisogno di aggiungere virgolette lì, a causa del tipo di comando SQL la onCreateDefault verrà inserito all'interno.

E' molto importante tenere in conto che la dichiarazione SQL onCreateDefault deve restituire solo una riga.

E' inoltre importante ricordare che l'esecuzione del onCreateDefault si svolge mentre la tabella è in fase di ricostruzione. Questo significa che se l'istruzione non riesce, ci potrebbe essere la perdita di dati nel database di clienti quando il modulo è installato. Questo significa che è molto importante creare l'istruzione in modo che possa essere sempre eseguita.

Una limitazione del l'attuale applicazione di onCreateDefaults è che, a causa di dover sostenere i due diversi tipi di sintassi SQL, non è possibile fare riferimento a una colonna diversa della tabella si sta modificando. Ciò significa che può essere molto difficile per progettare uno onCreateDefault corretto in situazioni in cui è necessario effettuare un collegamento a una tabella diversa. Per queste situazioni, uno script di modulo potrebbe essere utilizzato al posto di un onCreateDefault, e lo stesso risultato può essere raggiunto in questo modo.

Come rimuovere correttamente un onCreateDefault

onCreateDefaults si possono eliminare modificando il file XML. Il modo corretto per rimuoverlo è quello di eliminare il contenuto all'interno del tag <onCreateDefault>, ma lasciare il tag stesso lì. Se si elimina tutto, anche il tag, la prossima volta si esporta il modulo (o Core, se si modifica una colonna Core), ci sarà una contraddizione, in quanto dbsourcemanager creerà un elemento onCreateDefault vuoto. In un esempio pratico, la seguente colonna ha un onCreateDefault :

 
      <column name="MYCOLUMN" primaryKey="false" required="true" type="CHAR" size="1" autoIncrement="false">
        <default><![CDATA[N]]></default>
        <onCreateDefault><![CDATA['N']]></onCreateDefault>
      </column>

Se vogliamo rimuoverlo, il modo corretto sarebbe quello di lasciare la colonna in questo modo:

 
      <column name="MYCOLUMN" primaryKey="false" required="true" type="CHAR" size="1" autoIncrement="false">
        <default><![CDATA[N]]></default>
        <onCreateDefault/>
      </column>

Retrieved from "http://wiki.openbravo.com/wiki/ERP_2.50:Developers_Guide/How_to_define_an_oncreatedefault/it"

This page has been accessed 2,672 times. This page was last modified on 14 June 2011, at 11:04. Content is available under Creative Commons Attribution-ShareAlike 2.5 Spain License.