Remplir un record à partir d'une table

Résolu
ikremnitz Messages postés 10 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 19 novembre 2009 - 18 nov. 2009 à 17:55
ikremnitz Messages postés 10 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 19 novembre 2009 - 19 nov. 2009 à 14:04
Bonjour,

j'ai d'un coté un record
TMonRecord = record
Champ1 : string;
Champ2 : string;
...

et de l'autre un table avec au mois ces 2 données
NomChamp: le nom du champ du record
ValChamp: la valeur qu'on doit y mettre

Je cherche à remplir ma structure en faisant quelquechose du style
MonRecord(NomChamp) = ValChamp

Est-ce que c'est possible ?

2 réponses

ikremnitz Messages postés 10 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 19 novembre 2009
19 nov. 2009 à 14:04
Bonjour,

merci zwyx pour ta réponse, mais ce n'était pas tout à fait ce que je voulais.

J'ai une table:
NomChamp | Valeur
'Champ1' 'toto'
'Champ2' 'titi'

Je recherche à remplir un record en faisant
MonRecord.NomChamp := Valeur
mais cela ne donne rien.

J'ai résolu mon problème, grâce à un collègue, qui m'a proposé de créer une classe TObjet qui contient un attribut Nom et un attribut Valeur.
Puis de créer une classe TRecord avec un attribut Contenu qui est un tableau de TObjet. Et de rajouter une fonction ChampParNom qui à partir d'un nom renvoie l'attribut Valeur, qu'il n'y a plus qu'à mettre à jour.

Merci et bonne journée.
3
zwyx Messages postés 146 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 mars 2016
18 nov. 2009 à 21:42
Salut ikremnitz,

Il faudrait que tu définisse des identifiants de type simple (chaîne ou nombre) qui identifient chaque donnée de ta table, des clés primaires en quelques sortes.

Tu crées ensuite deux méthodes: une qui met à jour les données de ton record avec celle de ta table, par exemple
SetData(const ADonneesEnregistrees: TMonRecord);

et sa réciproque, qui met à jour les données de ta table avec celles du record, par exemple:
GetData(var ADonneesPerimees: TMonRecord);

Dans ces méthodes, tu peux parcourir tous les champs de ta structures ou toutes les valeurs de ta table et faire correspondre les deux grâce à l'identifiant que tu auras choisi pour chaque champs.

Voilà, je sais pas si c'est très clair, mais c'est à peu près comme ça que j'envisage la solution.

Bonne soirée.
0
Rejoignez-nous