Acceder à un champ recordset paramétré

cs_jyvaut75 Messages postés 9 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 15 février 2008 - 28 juin 2007 à 16:36
cs_jyvaut75 Messages postés 9 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 15 février 2008 - 29 juin 2007 à 09:47
Bonjour,

Dans une appli en cours de développement, je créé une table dont les noms de champ peuvent varier.
 
J'explique déjà cette partie: je rentre une date dans l'année, le prog calcule j+13, met à jour le texte d'une requête (dont avec dateDébut et DateFin), puis lance la requête.

J'obtiens ainsi un recordset qui contient un champ jour avec plusieurs fois le même jour à l'intérieur, mais des noms et des évènements différents sur chaque ligne.

A partir de ce recordset, je recherche les dates contenues dans le champ jour, je les transforme en string. J'obtiens au final 14 string différentes. Avec ces string, je créé une table dont les champs sont:
"code nom" et les 14 string.

Pour remplir cette table, j'utilise un recordset que je vais appeler ici "rstMaTable". Lors du remplissage du 1er champ "code nom", pas de problème, il ne varie pas.

Mon problème est donc pour accéder à chacun des champs. Comment faire pour que je puisse adresser
rstMaTable![2ème champ] et lui affecter une valeur ????

des essais du genre
rstMaTable!["'" & 2ème champ & "']"
ne donnent rien.

Si quelqu'un a une idée!!!

Merci d'avance.

8 réponses

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 juin 2007 à 18:26
Salut,

tu as le choix entre:

> rstMaTable![" & 2ème champ & "]" (sas quotes)
> rstMaTable.Fields('" & 2ème champ & "')" (avec quotes)

> ou alors avec le n° d' ordre du champ(position de la colonne dans la table)
   rstMaTable.Fields(" & Num & ")"

 
0
cs_jyvaut75 Messages postés 9 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 15 février 2008
28 juin 2007 à 20:50
Bonjour,

Je suis absolument désolé, j'ai essayé les trois versions, ça ne marche pas.

Auparavant, j'avais également essayé en remplaçant la variable date dtedatechamp par une variable string.

Mes variables ne sont pas vides.

Le nom du champ étant ici (et temporairement) 05/03/2007 la ligne
        rstStrNomTable![05/03/2007] = ![Code]

est efficace.

Ci-dessous le bout de code avec les différents essais.

        rstStrNomTable.AddNew
        rstStrNomTable![nosalarie] = ![CodeNom]
        Rem rstStrNomTable![ & dtedatechamp & ] = ![Code]
        Rem rstStrNomTable.Fields(" & dtedatechamp & ") = ![Code]
        rstStrNomTable.Fields(" & 0 & ") = ![Code]
        rstStrNomTable.Update
        rstStrNomTable.Move 0, LastModified
        .MoveNext
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 juin 2007 à 20:57
pour les champs date il faut des dièses (#) de part et d' autre de la variable
Rem rstStrNomTable.Fields(#" & dtedatechamp & "#) = ![Code]

<hr />* Rolling  
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 juin 2007 à 21:01
plus précisement, lestrois écritues :

Rem rstStrNomTable!& dtedatechamp & "# " = ![Code]
Rem rstStrNomTable.Fields(#'" & dtedatechamp & "'#)" = ![Code]
rstStrNomTable.Fields(" & varNum & ")" = ![Code]

<hr />* Rolling  
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 juin 2007 à 21:08
désolé ! confusion totale ...
je reviens...

<hr />* Rolling  
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 juin 2007 à 21:16
voilà...
dans ton exemple t' as oublié quelqes quotes

e.AddNew
rstStrNomTable![nosalarie] = ![CodeNom]  'si nosalarie est le nom du champ et non une variable
 Rem rstStrNomTable![" & dtedatechamp & "]" = ![Code]
 Rem rstStrNomTable.Fields('" & dtedatechamp & "')" = ![Code]
 rstStrNomTable.Fields(" & 0 & ")" = ![Code]
 rstStrNomTable.Update
 rstStrNomTable.Move 0, LastModified
 .MoveNext

ps: dans le pécésent post j' ai confondu nom du champ et on contenu

<hr />* Rolling  
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 juin 2007 à 22:04
gggggggrrrrrrrrrrrrrrrrrrrrrrrr!!!


Bon !


variable string
 s="dtedatechamp"
rstStrNomTable.Fields("" & s & "") = ![Code]


variable numérique
p=1
rstStrNomTable.Fields.Fields(p) = ![Code]


ps: si un admin passe par là : demande suppression des 4
derniers posts d' avant ce dernier...Merci.











 
0
cs_jyvaut75 Messages postés 9 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 15 février 2008
29 juin 2007 à 09:47
Bonjour chaibat05,

Merci beaucoup pour l'aide, ça fonctionne
0