Bonjour,
Le problème que j'essaie de résoudre est assez complexe, c'est un point très critique dans ce que je fais, et j'ai eu une idée.
Je suis toujours sur la conception d'un outil pour modéliser des formulaires reliés à une base de donnée.
Pour proposer une jonction des formulaires à une base de donnée, dans l'éditeur de formulaire, pour un champ, il est possible de spécifier le nom d'une table et son champ associé dans la base de donnée. Mais aucun schéma de base de donnée n'est défini dans cette partie. Le problème, c'est que tout est générique dans cette partie de l'application (édition de formulaires). Donc pas d'utilisation de QxOrm.
La seconde partie de l'application est un logiciel médical (appelé mangoo), qui utilise le modélisateur de formulaires (appelé tangoo). Cette partie est spécifique, donc elle utilise QxOrm sans soucis... Sauf pour la gestion des données dans les formulaire...
Maintenant, j'ai eu une idée en faisant des expérimentations avec QxOrm:
1. Dans tangoo, je définie simplement les noms des tables et des champs que je veux remplir sur chacun de mes champs.
2. Dans mangoo, je défini les tables dans des classes avec les champs associés, qui ont donc le même nom que ce qu'on spécifie dans tangoo. Elles font donc partie du contexte QxOrm.
3. Maintenant, quand je change une valeur dans un de mes champs de formulaire, je voudrais que tangoo utilise le moteur d'introspection de QxOrm pour instancier/modifier l'objet adéquat.
4. Lorsque je veux enregistrer tout ça dans la base de donnée, je sauve les objets que j'ai instancié.
En résumé, j'aimerais pouvoir faire ça, et je ne sais pas si c'est possible:
avec Toto une table avec deux simples champs id et firstName, enregistrés dans le contexte QxOrm par le biais d'une classe Toto.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 // Obtenir la table Toto depuis la bdd const QString tableName = "Toto"; qx::IxClass *dbTable = qx::QxClassX::getClass( tableName ); const QString fieldName = "firstName"; const QString fieldValue = "Eloi"; dbTable->setPropertyBag( fieldName, fieldValue ); //Je me trompe peut-être, je veux simplement fixer la valeur du champ firstName // Et ensuite, j'aimerais faire des opérations classiques du type qx::dao::save() insert, ...
Partager