GNT sans publicité, site mobile, fonctionnalitées exclusives...

Copier un enregistrement ???

Le
gilles
Bonjour,

Voila mon probleme:
j'extrait un enregistrement d'une table au moyen d'une
requete.
Cette requette d'apres le filtre appliqué n'a plus qu'un
seul enregistrement.
Je voudrais ajouter un nouvel enregistrement dans la
table ayant les meme valeurs que l'enregistrement de la
requette.

Pourquoi? j'explique sinon vous allez dire que je suis
fou :)
l'enregistrement de la table a beaucoup de champs (et ca
risque d'évoluer par la suite)
Un champ de l'enregistrement doit etre modifier et un
deuxieme (une case a cocher)qui indique si
l'enregistrement est archivé ou pas.

d'ou mon idée de copier l'enregistrement de la requette
dans la table, puis de modifier mes deux champs.

il est bien possible de faire une boucle avec tous les
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ées de
la tables THistoriqueEven
Dim fld As Field
Dim ChampsTHisto As CurrentData
Set qdfIndexation = CurrentDb.QueryDefs
("RAfficheHistoClientActuel")
qdfIndexation.Parameters("NomClient") =
ClientAReindexer 'intI est le RefSociété de
TSociété il donne la société en fait
Set rstIndexation = qdfIndexation.OpenRecordset 'j'ai
isolé tous les clients de la société (sauf les supprimés)
Set rstHisto = CurrentDb.OpenRecordset("THistoriqueEven")
With rstIndexation
rstHisto.AddNew

For Each fld In rstIndexation.Fields
Field!rstHisto!fld = fld
Next
rstHisto.Update
End With
Set rstIndexation = Nothing
Set qdfIndexation = Nothing
End Function

a priori c'est ca qui passe pas:
Field!rstHisto!fld = fld

il me dis "objet requis" avec Field!rstHisto!fld
je n'arrive pas a caler les champs de rstHisto et de
rstIndexation (la requete) en face.

merci de toute aide.
Lire les 2 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Xavier HUE
Le #4488091
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.


Le #4487941
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.
.





Publicité
Suivre les réponses
Poster une réponse
Anonyme