Les actions ont pour but principal de mettre à jour les tables du
logiciel ou de notifier l'utilisateur
En l'occurrence le
Framework dispose de quatre moyens d'accès aux tables.
1 le SQL littéral via sql.executeQuery()
2 le DAO du framework via sql.xxxx()
3 Un temporary SQL via sql.xxxTemporary...
4 Un SGBD interne temporaire via le package Wtmp classe tmp
Modifier la string option de TableTestSAISIE
//String option="Option"; String option="Insertion";
Remplacer l'action d'affichage userOptionDo de TableTestSAISIE
public void userOptionDo(String actionCommandOption){ if (actionCommandOption.equals(option)){ //Gp.MB("Nouvelle action déclenché par le bouton : "+option); boolean insertOk=false; String tmpCode="00"; //Variable de nouveau code for (int i=code.getInt();i<99;i++){ // Parcours la table encours, à partir du code encours pour trouver un numéro de code libre tmpCode=CcsFmt.ligLig(""+i, 2); // Complète le nouveau code calculé avec des zéro à gauche if (!sql.readSeek(sql.t_table, "c_code", tmpCode)){ // Recherche si le nouveau code n'existe pas dans la table encours insertOk=true; // tmpCode n'existe pas comme code on stop le parcours de la table encours break; } } if (insertOk) { // Nouveau ok, on utilise une table temporaire pour créer un nouvel enregistrement sql.createTemporarySinceTable(); // Créé une copy temporaire de la table encours sql.insertTemporarySinceTable("c_code='"+code.getText()+"'"); // Peuple la table temporaire avec l'enregistrement encours sql.updateTemporarySinceTable("c_code='"+tmpCode+"',c_libe='Insertion automatique',c_stab=''" ,"c_code='"+code.getText()+"'"); // Met à jour l'enregistrement temporaire avec le nouveau code sql.insertFromTemporaryTable("c_code='"+tmpCode+"'"); // Ajoute l'enregistrement temporaire à la table encours sql.dropTemporaryTable(); // Libère la mémoire de la table temporaire refreshUIWithNewIndex(tmpCode); //Change la fiche encours de l'UIs encours } } }
Compiler et relancer, le bouton est présent et le clic sur insertion ajoute une nouvelle fiche automatiquement
Créer une méthode privé insertFiche() dans TableTestSAISIE
public void userOptionDo(String actionCommandOption){ if (actionCommandOption.equals(option)){ int retour=JOptionPane.NO_OPTION; retour = JOptionPane.showConfirmDialog(null,"Insertion automatique de fiche pour cette table :'"+sql.t_table+"'\n\n Ętes-vous sûre ?", "Attention Insertion Automatique !!!",JOptionPane.YES_NO_OPTION); if (retour==JOptionPane.OK_OPTION){ insertFiche(); } } } private void insertFiche(){ boolean insertOk=false; String tmpCode="00"; //Variable de nouveau code for (int i=code.getInt();i<99;i++){ // Parcours la table encours, à partir du code encours pour trouver un numéro de code libre tmpCode=CcsFmt.ligLig(""+i, 2); // Complète le nouveau code calculé avec des zéro à gauche if (!sql.readSeek(sql.t_table, "c_code", tmpCode)){ // Recherche si le nouveau code n'existe pas dans la table encours insertOk=true; // tmpCode n'existe pas comme code on stop le parcours de la table encours break; } } if (insertOk) { // Nouveau ok, on utilise une table temporaire pour créer un nouvel enregistrement sql.createTemporarySinceTable(); // Créé une copy temporaire de la table encours sql.insertTemporarySinceTable("c_code='"+code.getText()+"'"); // Peuple la table temporaire avec l'enregistrement encours sql.updateTemporarySinceTable("c_code='"+tmpCode+"',c_libe='Insertion automatique',c_stab=''" ,"c_code='"+code.getText()+"'"); // Met à jour l'enregistrement temporaire avec le nouveau code sql.insertFromTemporaryTable("c_code='"+tmpCode+"'"); // Ajoute l'enregistrement temporaire à la table encours sql.dropTemporaryTable(); // Libère la mémoire de la table temporaire refreshUIWithNewIndex(tmpCode); //Change la fiche encours de l'UI encours } }
Compiler et relancer
Remplacer le JOptionPane par le sql.notify()
public void userOptionDo(String actionCommandOption){ if (actionCommandOption.equals(option)){ // int retour=JOptionPane.NO_OPTION; // retour = JOptionPane.showConfirmDialog(null, "Insertion automatique de fiche pour cette table :'"+sql.t_table+"'\n\n Ętes-vous sûre ?", "Attention Insertion Automatique !!!", JOptionPane.YES_NO_OPTION); // if (retour==JOptionPane.OK_OPTION){ // insertFiche(); // } String titre="Insertion automatique de fiche"; String mess="Ętes-vous sûre ?"; Object[] option = {"Oui, j'ajoute une fiche automatique","Non, surtout pas"}; int reponse=sql.notify(titre, mess, option, sql.getAppliParam().JBRECORD, 0); if (reponse==0){ insertFiche(); } } }
Compiler et relancer
Les édits disposent de méthodes supplémentaires tels
que code.getInt(), code.getDouble()
Le
gestionnaire de contrôle de saisie CcsFmt propose des
méthodes statiques de formatage
On utilise une méthode de DAO
pour tester l'existance d'un code sql.readSeek(sql.t_table,
"c_code", tmpCode)
L'emploi d'une base temporaire pour les
mises à jour est présenté pour l'exemple sql.xxxxTemporary
on aurait pu faire plus simple
L'utilisation sql.notify()
permet de conserver une unité graphique au logiciel
Consulter la documentation générale, Section Contrôle et Saisie