Bonjour,
Framework : 2.0
IDE : VBExpress
But
construire une chaine dynamiquement en fonction des valeurs stockées dans une base de données.
Schéma SQL Simplifié
- Table [Fields] (FieldId, FieldName)
- Table [ConstraintMessages] (ConstraintMessageId, Message)
- Table [ConstraintMessageFields] (ConstraintMessageId, FieldId, FieldPosition)
Le Principe
Une listbox contient la liste de tous les enregistrement de la table [Fields]. L'utilisateur peut glisser-déposer des 'Fieldname' depuis cette listbox vers une textbox. Une fois dans la textbox, un Fieldname est entouré par des [ ] de maniere a identifier qu'il s'agit d'un Field. L'utilisateur peut également éditer la textbox pour compléter ce qui sera enregistré comme un 'ConstraintMessage'.
Je parcours le texte de la textbox, si je rencontre un Field je stocke sa position ainsi que le FieldId dans la table [ConstraintMessageFields] et je stocke le reste de la chaine dans le champs Message de [ConstraintMessage].
De maniere a etre sure que l'utilisateur n'a pas édité un FieldName entre les [ ] j'ai une méthode qui vérifie que ce FieldName existe bien.
Mon Probleme
Je n'arrive pas a écrire l'algorithme permettant de sauvegarder le ConstraintMessage ainsi que les fields.
Attention à la subtilité ! : Au moment de reconstruire le ConstraintMessage, un enregistrement de [Fields] a pu etre modifié (le fieldname a changé) ou meme supprimé par l'adminstrateur SQLServeur.
Exemple de ConstraintMessage
Un [Field1] Message [Field2]
La table [Fields] contient:
FieldId = 1
FieldName = "Field1"
FieldId = 2
FieldName = "Field2
La table [ConstraintMessages] contient:
ConstraintMessageId = 1
ConstraintMessage ="Un Message "
La table [ConstraintMessagesFields] contient:
ConstraintMessageId = 1
FieldId = 1
FieldPosition = 3
ConstraintMessageId = 1
FieldId = 2
FieldPosition = 12
Pouvez vous m'aider? N'hésitez pas a me demander plus d'explications si ce n'est pas clair
Merci
Partager