Voila mon probleme:
j'extrait un enregistrement d'une table au moyen d'une=20
requete.
Cette requette d'apres le filtre appliqu=E9 n'a plus qu'un=20
seul enregistrement.
Je voudrais ajouter un nouvel enregistrement dans la=20
table ayant les meme valeurs que l'enregistrement de la=20
requette.
Pourquoi? j'explique sinon vous allez dire que je suis=20
fou :)
l'enregistrement de la table a beaucoup de champs (et ca=20
risque d'=E9voluer par la suite)
Un champ de l'enregistrement doit etre modifier et un=20
deuxieme (une case a cocher)qui indique si=20
l'enregistrement est archiv=E9 ou pas.
d'ou mon id=E9e de copier l'enregistrement de la requette=20
dans la table, puis de modifier mes deux champs.
il est bien possible de faire une boucle avec tous les=20
noms de champs. je ferais ca au pire.
Mais je prefererais faire une boucle automatique.
Voici le code que j'essaye mais ca marche pas :(
Function reindexation(ClientAReindexer As String)
Dim rstHisto As Recordset, intI As Integer 'donn=E9es de=20
la tables THistoriqueEven
Dim fld As Field
Dim ChampsTHisto As CurrentData
Set qdfIndexation =3D CurrentDb.QueryDefs
("RAfficheHistoClientActuel")
qdfIndexation.Parameters("NomClient") =3D=20
ClientAReindexer 'intI est le RefSoci=E9t=E9 de=20
TSoci=E9t=E9 il donne la soci=E9t=E9 en fait
Set rstIndexation =3D qdfIndexation.OpenRecordset 'j'ai=20
isol=E9 tous les clients de la soci=E9t=E9 (sauf les supprim=E9s)
Set rstHisto =3D CurrentDb.OpenRecordset("THistoriqueEven")
With rstIndexation
rstHisto.AddNew
For Each fld In rstIndexation.Fields
Field!rstHisto!fld =3D fld
Next
rstHisto.Update
End With
Set rstIndexation =3D Nothing
Set qdfIndexation =3D Nothing
End Function
a priori c'est ca qui passe pas:
Field!rstHisto!fld =3D fld
il me dis "objet requis" avec Field!rstHisto!fld
je n'arrive pas a caler les champs de rstHisto et de=20
rstIndexation (la requete) en face.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Xavier HUE
Bonjour Gilles,
Je n'ai pas éplucher ton code, mais:
Field!rstHisto!fld = fld
Devrait plutôt être
rstHisto.Fields(fld.name) = fld.value
En effet, fld est le champ de ton recordset source, donc: rstHisto.Fields(fld.name) => Champ dans ton recordset cible fld.value => Valeur du champ source
Si tu as un nombre de champ conséquent, et qu'en plus ça peut évoluer, ta solution répond bien à ton problème. Pense cependant à modifier les champs devant l'être avant l'update.
Dans le cas contraire, tu fait exactement ce que ferait une requête Ajout: INSERT INTO TaTableSource SELECT * FROM TaRequeteSource;
Cordialement.
Bonjour Gilles,
Je n'ai pas éplucher ton code, mais:
Field!rstHisto!fld = fld
Devrait plutôt être
rstHisto.Fields(fld.name) = fld.value
En effet, fld est le champ de ton recordset source, donc:
rstHisto.Fields(fld.name) => Champ dans ton recordset
cible
fld.value => Valeur du champ source
Si tu as un nombre de champ conséquent, et qu'en plus ça
peut évoluer, ta solution répond bien à ton problème.
Pense cependant à modifier les champs devant l'être avant
l'update.
Dans le cas contraire, tu fait exactement ce que ferait
une requête Ajout:
INSERT INTO TaTableSource
SELECT * FROM TaRequeteSource;
En effet, fld est le champ de ton recordset source, donc: rstHisto.Fields(fld.name) => Champ dans ton recordset cible fld.value => Valeur du champ source
Si tu as un nombre de champ conséquent, et qu'en plus ça peut évoluer, ta solution répond bien à ton problème. Pense cependant à modifier les champs devant l'être avant l'update.
Dans le cas contraire, tu fait exactement ce que ferait une requête Ajout: INSERT INTO TaTableSource SELECT * FROM TaRequeteSource;
Cordialement.
Merci Xavier J'ai remplacé la ligne et ca marche.
gilles
-----Message d'origine----- Bonjour Gilles,
Je n'ai pas éplucher ton code, mais:
Field!rstHisto!fld = fld
Devrait plutôt être
rstHisto.Fields(fld.name) = fld.value
En effet, fld est le champ de ton recordset source, donc: rstHisto.Fields(fld.name) => Champ dans ton recordset cible fld.value => Valeur du champ source
Si tu as un nombre de champ conséquent, et qu'en plus ça peut évoluer, ta solution répond bien à ton problème. Pense cependant à modifier les champs devant l'être avant
l'update.
Dans le cas contraire, tu fait exactement ce que ferait une requête Ajout: INSERT INTO TaTableSource SELECT * FROM TaRequeteSource;
Cordialement. .
Merci Xavier
J'ai remplacé la ligne et ca marche.
gilles
-----Message d'origine-----
Bonjour Gilles,
Je n'ai pas éplucher ton code, mais:
Field!rstHisto!fld = fld
Devrait plutôt être
rstHisto.Fields(fld.name) = fld.value
En effet, fld est le champ de ton recordset source, donc:
rstHisto.Fields(fld.name) => Champ dans ton recordset
cible
fld.value => Valeur du champ source
Si tu as un nombre de champ conséquent, et qu'en plus ça
peut évoluer, ta solution répond bien à ton problème.
Pense cependant à modifier les champs devant l'être
avant
l'update.
Dans le cas contraire, tu fait exactement ce que ferait
une requête Ajout:
INSERT INTO TaTableSource
SELECT * FROM TaRequeteSource;
En effet, fld est le champ de ton recordset source, donc: rstHisto.Fields(fld.name) => Champ dans ton recordset cible fld.value => Valeur du champ source
Si tu as un nombre de champ conséquent, et qu'en plus ça peut évoluer, ta solution répond bien à ton problème. Pense cependant à modifier les champs devant l'être avant
l'update.
Dans le cas contraire, tu fait exactement ce que ferait une requête Ajout: INSERT INTO TaTableSource SELECT * FROM TaRequeteSource;