Découvrir la mise en relation des tables et l'adaptation des listes en quatre étapes et quatre tests
je modifie la liste TableTestLISTE et j'ajoute le champ c_stab
public Object adapteField(Vue vue){ t_table="table_test"; //Nom de la table t_nbLigne=28; //Nombre de ligne à afficher t_filtre=null; v_filtre=null; t_index=new String[]{"c_code"}; //Order de la table switch (vue){ case F3: default:{ addSqlField("c_code", 2, Fma.NUMGRAS, "Code"); //1ère Colonne et 1er titre de colonne addSqlField("c_libe", 30, Fma.FIELD, "Libelle"); //2ème Colonne et 2ème titre de colonne addSqlField("c_stab", 2, Fma.FIELD, "sous table"); //3ème Colonne et 3ème titre de colonne break;} } return this; }
Je modifie le mappage TableTestFICHE et j'ajoute un champ c_stab
public Object adapteField(Vue vue){ t_table="table_test"; //Nom de la table t_nbLigne=1; t_filtre=null; v_filtre=null; t_index=new String[]{"c_code"}; //Order de la table switch (vue){ default:{ addSqlField("c_code", 2, Fma.F2, "Code", "", Edit.F2, ""); //1er Edit et 1er Libellé addSqlField("c_libe", 30, Fma.FIELD, "Libelle", "", Edit.TEXT, ""); //2ème Edit et 2ème Libellé addSqlField("c_stab", 2, Fma.F2, "sous table", "", Edit.F2, ""); //3ème Edit et 3ème Libellé break;} } return this; }
je modifie la saisie TableTestSAISIE et j'ajoute le composant JTextF2 avec comme vue SousTableTestVUE
public class TableTestSAISIE extends AbstractDbFiche { private static final long serialVersionUID = 1L; JTextDb lcode,llibe,lstab; // Les Labels de la fiche JTextDbF2 code=null; //1er Edit JTextDb libe=null; //2ème Edit JTextDbF2 stab=null; //3ème Edit public TableTestSAISIE(Sql sql) { super(sql); initStart(); } public void initCreateLE() { lcode=new JTextDb(); llibe=new JTextDb(); lstab=new JTextDb(); code =new JTextDbF2(new TableTestVUE(sql, "", Vue.F2)); libe =new JTextDb(); stab =new JTextDbF2(new SousTableTestVUE(sql, "", Vue.F2)); //la Combobox de choix Pour la saisie du code sous_table_test } public void initMapLE() { ccs.mapL(this, lcode, 0); ccs.mapL(this, llibe, 1); ccs.mapL(this, lstab, 2); ccs.mapE(this, code, 0); ccs.mapE(this, libe, 1); ccs.mapE(this, stab, 2); } public void initFocus() { setDefFocus(code); } public void setEditableColumns(FicheIEditableColumns fe, ListeIEditableColumn fl) { libe.setEditableColumns(fe, fl); // Le libellé est éditable dans la liste } public void fireEditableColumnUpdate(String nameField, Object value) { libe.fireEditableColumnUpdate(nameField, value); // Le libellé est éditable dans la liste } public void setBaseListener() { // La clé dindex ccs.addF2Listener(code, Ccs.NEWCODEF2); ccs.addF2Listener(code, Ccs.CONSULTF2); // La fiche ccs.addF2Listener(stab, Ccs.CODEINF2); } public void fireBaseListener(JComponent jc){ // La clé dindex if (jc==code){ if (sql.isModeMovable()){ ccs.fireT(jc, Ccs.CONSULTF2); } if (sql.isModeAppendUpdated()||sql.isModeAppend()){ ccs.fireT(jc, Ccs.NEWCODEF2); } } // La fiche if (jc==stab){ ccs.fireT(jc, Ccs.CODEINF2); } }
Je compile et je teste : la modification live de table_test et je complète les fiches avec le code sous_table_test
je modifie la vue TableTestVUE et j'ajoute la jointure joinStab avec sous_table_test
public void adapteJoin(Sql sql) { FieldsJoin joinStab=new FieldsJoin( new String[]{"c_stab"}, sql.getGp(), "sous_table_test", "", new String[]{"c_code"}, new String[]{"c_libe"} ); sql.addJoin(joinStab); }
je modifie la liste TableTestLISTE et j'ajoute le champ sous_table_test.c_libe
public Object adapteField(Vue vue){ t_table="table_test"; //Nom de la table t_nbLigne=28; //Nombre de ligne à afficher t_filtre=null; v_filtre=null; t_index=new String[]{"c_code"}; //Order de la table switch (vue){ case F3: default:{ addSqlField("c_code" , 2 ,Fma.NUMGRAS, "Code"); //1ère Colonne et 1er titre de colonne addSqlField("c_libe" ,30 ,Fma.FIELD, "Libelle"); //2ème Colonne et 2ème titre de colonne addSqlField("c_stab" , 2 ,Fma.FIELD, "sous table"); //3ème Colonne et 3ème titre de colonne addSqlField("sous_table_test.c_libe" , 30, Fma.FIELD, "Libellé sous table"); //4ème Colonne et 4ème titre de colonne break;} } return this; }
Je compile et je teste : la liste de table_test affiche 4 colonnes
je modifie la liste TableTestLISTE et je change l'affichage du champ c_stab T_INVISIBLE
public Object adapteField(Vue vue){ t_table="table_test"; //Nom de la table t_nbLigne=28; //Nombre de ligne à afficher t_filtre=null; v_filtre=null; t_index=new String[]{"c_code"}; //Order de la table switch (vue){ case F3: default:{ addSqlField("c_code" , 2, Fma.NUMGRAS, "Code"); //1ère Colonne et 1er titre de colonne addSqlField("c_libe" , 30, Fma.FIELD, "Libelle"); //2ème Colonne et 2ème titre de colonne addSqlField("c_stab" , 2, Fma.INVISIBLE, "sous table"); //3ème Colonne et 3ème titre de colonne addSqlField("sous_table_test.c_libe" , 30, Fma.FIELD, "Libellé sous table"); //4ème Colonne et 4ème titre de colonne break;} } return this; }
Je compile et je teste : la liste table_test n'affiche que 3 colonnes
je modifie la liste TableTestSAISIE et je change l'appel de SousTableVUE en F2F3. Le F2F3 permet de basculer la liste Popup F2 en liste popup FicheF2F3, ceci autorise la création à la volée d'enregistrement
public void initCreateLE() { lcode=new JTextDb(); llibe=new JTextDb(); lstab=new JTextDb(); code =new JTextDbF2(new TableTestVUE(sql, "", Vue.F2)); libe =new JTextDb(); stab =new JTextDbF2(new SousTableTestVUE(sql, "", Vue.F2F3)); //la Combobox de choix Pour la saisie du code sous_table_test }
j'adapte une liste plus petite pour le F2F3 en modifiant SousTableTestListe
public Object adapteField(Vue vue){ t_table="sous_table_test"; t_nbLigne=28; t_filtre=null; v_filtre=null; t_index=new String[]{"c_code"}; switch (vue){ case F2F3: t_nbLigne=8; //Nombre de ligne à afficher addSqlField("c_code" , 2, Fma.NUMGRAS, "Code"); //1ère Colonne et 1er titre de colonne addSqlField("c_libe" , 30, Fma.FIELD, "Libelle"); //2ème Colonne et 2ème titre de colonne break; case F3: default:{ addSqlField("c_code" , 2, Fma.NUMGRAS, "Code"); //1ère Colonne et 1er titre de colonne addSqlField("c_libe" , 30, Fma.FIELD, "Libelle"); //2ème Colonne et 2ème titre de colonne break;} } return this; }
Je compile et je teste : je fais F2 sur l'édit Sous table d'une fiche, le pop up ne contient que 8 lignes. Je fais F3, je peux ajouter des fiches sous_table_test, je fais F3 pour revenir sur l'affichage liste du pop up
Conclusion, la table sous_test_table est maintenant un composant graphique utilisable dans tout le logiciel sous de multiples présentations
Consulter la documentation générale, Section Tables standards pour regarder des exemples de mise en forme
Rendre la saisie optionnelle ...