Remplir un record à partir d'une table [Résolu]

ikremnitz 10 Messages postés lundi 21 mars 2005Date d'inscription 19 novembre 2009 Dernière intervention - 18 nov. 2009 à 17:55 - Dernière réponse : ikremnitz 10 Messages postés lundi 21 mars 2005Date d'inscription 19 novembre 2009 Dernière intervention
- 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 ?
Afficher la suite 

2 réponses

Répondre au sujet
ikremnitz 10 Messages postés lundi 21 mars 2005Date d'inscription 19 novembre 2009 Dernière intervention - 19 nov. 2009 à 14:04
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ikremnitz
zwyx 152 Messages postés jeudi 22 novembre 2007Date d'inscription 21 mars 2016 Dernière intervention - 18 nov. 2009 à 21:42
0
Utile
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.
Commenter la réponse de zwyx

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.