Aller au contenu principal

CRUD sur une table existante

Le besoin​

Une table de la base — products, tickets, contracts — et une équipe qui doit la consulter et la modifier, sans développer d'interface.

La démarche​

table → connecteur avec 4 requêtes générées → écran → entrée de menu

La recette​

1. Atteindre la base​

Liberty Next → Administrer → Pools : le pool default convient quand la table se trouve dans la base du framework ; sinon, ajouter un pool avec l'URL de la base. Voir Connecteurs.

2. Générer les requêtes​

Liberty Next → Construire → Connecteurs : créer (ou choisir) le connecteur SQL, passer dans la vue Tables, puis + Ajouter des requêtes → Générer depuis la BDD. Choisir la table products, garder les colonnes à afficher, cocher clé sur ID, conserver les quatre instructions et enregistrer. L'assistant écrit :

-- products_get
SELECT ID, NAME, PRICE, STOCK FROM products

-- products_post
INSERT INTO products (ID, NAME, PRICE, STOCK) VALUES (:ID, :NAME, :PRICE, :STOCK)

-- products_put
UPDATE products SET NAME = :NAME, PRICE = :PRICE, STOCK = :STOCK WHERE ID = :ID_ORIGINAL

-- products_delete
DELETE FROM products WHERE ID = :ID

Pour enregistrer l'auteur et la date d'une modification, ajouter les colonnes d'audit aux requêtes d'écriture avec des jetons serveur — le navigateur n'a aucun moyen de les modifier :

UPDATE products
SET NAME = :NAME, PRICE = :PRICE, STOCK = :STOCK,
UPDATED_BY = {{LOGIN}}, UPDATED_AT = {{SYSTIMESTAMP}}
WHERE ID = :ID_ORIGINAL

Autre solution : donner aux entrées UPDATED_BY / UPDATED_AT du dictionnaire les règles LOGIN / SYSDATE. Voir Liaison de paramètres → Jetons.

3. Construire l'écran​

Liberty Next → Construire → Écrans, pastille du connecteur (+ Ajouter une portée la première fois), + Ajouter un écran products, puis dans l'éditeur d'écran :

OngletRéglage
GénéralLibellé Produits ; Editable pour la saisie dans la grille ; uploadable pour l'import Excel / CSV.
RequêtesLecture products_get, mise à jour products_put, insertion products_post, suppression products_delete.
ColonnesLibellés, formats, largeurs, filtres.
DialogueGlisser les colonnes sur le formulaire.

L'Assistant de création d'écran réalise les étapes 2 et 3 en une fois.

4. Ajouter l'entrée de menu​

Liberty Next → Construire → Menus, pastille du connecteur (+ Ajouter une portée la première fois), + Élément : libellé Produits, type screen, cible products_get. Enregistrer.

Résultat​

Un clic sur Produits ouvre la grille : tri et filtres par colonne, regroupement, vues enregistrées ; une ligne ouvre le dialogue de modification, + Ajouter un dialogue vide, Supprimer retire la ligne. Chaque requête a sa propre permission — sql:<connecteur>:products_get, sql:<connecteur>:products_put… — à accorder par les rôles.

Variantes​

BesoinMoyen
Libellés et listes de valeursDes entrées du dictionnaire sur les colonnes, avec une règle ENUM ou LOOKUP — voir Dictionnaire.
Lecture seule pour certains utilisateursN'accorder à leur rôle que la permission de la requête de lecture : les écritures sont refusées. Pour un écran en lecture seule pour tous, cocher Read-only dans l'onglet Général.
Export ExcelL'onglet Export de l'écran — voir Export Excel.
Lignes liées dans le dialogueUn onglet nested_table — voir Onglets imbriqués.
Chargement en masse depuis un fichierVoir Import en masse.

Pour aller plus loin​