Voici ma problematique: Importer des donnes en provenance
d'un fichier Excel dans une table,
dans une autre table enregistrer le nom de l'utilisateur
et la date de l'operation,
puis creer un lien entre ces deux tables pour savoir qui a
ajoute quoi et quand.
Ma table Donnee contient un Champ IdOperation qui doit me
permettre de faire le lien
avec la table Operations mais rien a faire. Dans la table
Operations ce Champ est defini
comme cle primaire et est en numerotation automatique.
J'essaye avec la requete suivante:
UPDATE Donnees, Operations SET Donnees.IdOperation = DMax
([Operations!IdOperation],"Operations")
WHERE (((Donnees.IdOperation) Is Null));
Cela me renvoie systematiquement zero alors que je
voudrais recuperer la cle primaire.
Esperant avoir ete clair, je vous remercie pour vos
suggestions.
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
LE CARRE Yannick
Salut Manu,
un champ (clé primaire + numéro auto) ne peut être modifié !
Il faut que tu enlèves ces options de numérotation automatique et que tu gère l'intégrité référentiel toi même. Ou bien tu insères en même temps 2 enregistrements : 1 dans chaque table, ils auront les mêmes identifiants s'ils sont en numéro auto.
Yannick Manu a écrit dans le message : 00f501c3919f$6187c060$
Bonjour a tous,
Voici ma problematique: Importer des donnes en provenance d'un fichier Excel dans une table, dans une autre table enregistrer le nom de l'utilisateur et la date de l'operation, puis creer un lien entre ces deux tables pour savoir qui a ajoute quoi et quand.
Ma table Donnee contient un Champ IdOperation qui doit me permettre de faire le lien avec la table Operations mais rien a faire. Dans la table Operations ce Champ est defini comme cle primaire et est en numerotation automatique.
J'essaye avec la requete suivante:
UPDATE Donnees, Operations SET Donnees.IdOperation = DMax ([Operations!IdOperation],"Operations") WHERE (((Donnees.IdOperation) Is Null));
Cela me renvoie systematiquement zero alors que je voudrais recuperer la cle primaire.
Esperant avoir ete clair, je vous remercie pour vos suggestions.
Manu/
Access 2000 / Win Nt/2000
Salut Manu,
un champ (clé primaire + numéro auto) ne peut être modifié !
Il faut que tu enlèves ces options de numérotation automatique et que tu
gère l'intégrité référentiel toi même.
Ou bien tu insères en même temps 2 enregistrements : 1 dans chaque table,
ils auront les mêmes identifiants s'ils sont en numéro auto.
Yannick
Manu <tissot.emanuel@free.fr> a écrit dans le message :
00f501c3919f$6187c060$a301280a@phx.gbl...
Bonjour a tous,
Voici ma problematique: Importer des donnes en provenance
d'un fichier Excel dans une table,
dans une autre table enregistrer le nom de l'utilisateur
et la date de l'operation,
puis creer un lien entre ces deux tables pour savoir qui a
ajoute quoi et quand.
Ma table Donnee contient un Champ IdOperation qui doit me
permettre de faire le lien
avec la table Operations mais rien a faire. Dans la table
Operations ce Champ est defini
comme cle primaire et est en numerotation automatique.
J'essaye avec la requete suivante:
UPDATE Donnees, Operations SET Donnees.IdOperation = DMax
([Operations!IdOperation],"Operations")
WHERE (((Donnees.IdOperation) Is Null));
Cela me renvoie systematiquement zero alors que je
voudrais recuperer la cle primaire.
Esperant avoir ete clair, je vous remercie pour vos
suggestions.
un champ (clé primaire + numéro auto) ne peut être modifié !
Il faut que tu enlèves ces options de numérotation automatique et que tu gère l'intégrité référentiel toi même. Ou bien tu insères en même temps 2 enregistrements : 1 dans chaque table, ils auront les mêmes identifiants s'ils sont en numéro auto.
Yannick Manu a écrit dans le message : 00f501c3919f$6187c060$
Bonjour a tous,
Voici ma problematique: Importer des donnes en provenance d'un fichier Excel dans une table, dans une autre table enregistrer le nom de l'utilisateur et la date de l'operation, puis creer un lien entre ces deux tables pour savoir qui a ajoute quoi et quand.
Ma table Donnee contient un Champ IdOperation qui doit me permettre de faire le lien avec la table Operations mais rien a faire. Dans la table Operations ce Champ est defini comme cle primaire et est en numerotation automatique.
J'essaye avec la requete suivante:
UPDATE Donnees, Operations SET Donnees.IdOperation = DMax ([Operations!IdOperation],"Operations") WHERE (((Donnees.IdOperation) Is Null));
Cela me renvoie systematiquement zero alors que je voudrais recuperer la cle primaire.
Esperant avoir ete clair, je vous remercie pour vos suggestions.
Manu/
Access 2000 / Win Nt/2000
Pierre Jagut
Bonjour,
Si j'ai bien compris, tu ajoutes un enregistrement dans la table "Operations", et plusieurs dans la table "Donnees". Le champ IdOperation de la table "Donnees" est vide au moment de l'ajout, et tu veux le remplacer par le IdOperation généré lors de la création de l'enregistrement dans la table "Operation" (celui-ci étant NuméroAuto et Clef unique).
Je ferais cela comme suit : - L'enregistrement ajouté dans la table "Operations" est réalisé en VBA, de manière à récupérer le IdOperation généré. - La requête SQL de modification est générée par une chaîne de caractère en VBA en utilisant ce IdOperation.
En gros :
Dim rsOperations as Recordset Dim lIdOperation as long Set rsOperations = CurrentDb.OpenRecordset("SELECT * FROM Operations", dbOpenDynaset)
rsOperations.AddNew rsOperations!DateOperation = Date rsOperations!NomOperateur = 'mettre ici le nom de l'opérateur '.... renseigner tous les champs liés à l'opération rsOperations.Update rsOperations.MoveLast lIdOperation = rsOperations!IdOperation
rsOperations.Close
' Importer ici les données dans la table Donnees
DoCmd.RunSQL "UPDATE Donnees, Operations SET Donnees.IdOperation = " & lIdOperation &_ "WHERE (((Donnees.IdOperation) Is Null))"
Voilà, je pense que cela devrait fonctionner (probablement des erreurs de frappes). Dis-moi ce que cela donne.
Remarque : ici, il n'y a pas de traitement des erreurs de contrainte et d'import. Si les utilisateurs ne font pas de contrôle des données avant de les importer, il serait peut-être utile d'importer avant dans une table temporaire et d'effectuer un état statististique du fichier avant de l'importer définitivement dans la table "Donnees". Ce qui veux dire que l'ajout se fait en deux temps (import pour contrôles, puis ajout validé). Tu peux ne créer l'enregistrement dans "Operations" qu'après l'ajout validé. Mais je te conseille quand même de le faire avant, et de conserver un flag "Ajouté" de manière à - rappeler à l'utilisateur qui sort du formulaire sans ajouter qu'il a oublié cette étape - compter les "imports sans ajout" par utilisateur pour repérer les problèmes de saisie ou les besoins de formation
Pierre.
"Manu" a écrit dans le message de news:00f501c3919f$6187c060$
Bonjour a tous,
Voici ma problematique: Importer des donnes en provenance d'un fichier Excel dans une table, dans une autre table enregistrer le nom de l'utilisateur et la date de l'operation, puis creer un lien entre ces deux tables pour savoir qui a ajoute quoi et quand.
Ma table Donnee contient un Champ IdOperation qui doit me permettre de faire le lien avec la table Operations mais rien a faire. Dans la table Operations ce Champ est defini comme cle primaire et est en numerotation automatique.
J'essaye avec la requete suivante:
UPDATE Donnees, Operations SET Donnees.IdOperation = DMax ([Operations!IdOperation],"Operations") WHERE (((Donnees.IdOperation) Is Null));
Cela me renvoie systematiquement zero alors que je voudrais recuperer la cle primaire.
Esperant avoir ete clair, je vous remercie pour vos suggestions.
Manu/
Access 2000 / Win Nt/2000
Bonjour,
Si j'ai bien compris, tu ajoutes un enregistrement dans la table
"Operations", et plusieurs dans la table "Donnees". Le champ IdOperation de
la table "Donnees" est vide au moment de l'ajout, et tu veux le remplacer
par le IdOperation généré lors de la création de l'enregistrement dans la
table "Operation" (celui-ci étant NuméroAuto et Clef unique).
Je ferais cela comme suit :
- L'enregistrement ajouté dans la table "Operations" est réalisé en VBA, de
manière à récupérer le IdOperation généré.
- La requête SQL de modification est générée par une chaîne de caractère en
VBA en utilisant ce IdOperation.
En gros :
Dim rsOperations as Recordset
Dim lIdOperation as long
Set rsOperations = CurrentDb.OpenRecordset("SELECT * FROM Operations",
dbOpenDynaset)
rsOperations.AddNew
rsOperations!DateOperation = Date
rsOperations!NomOperateur = 'mettre ici le nom de l'opérateur
'.... renseigner tous les champs liés à l'opération
rsOperations.Update
rsOperations.MoveLast
lIdOperation = rsOperations!IdOperation
rsOperations.Close
' Importer ici les données dans la table Donnees
DoCmd.RunSQL "UPDATE Donnees, Operations SET Donnees.IdOperation = " &
lIdOperation &_
"WHERE (((Donnees.IdOperation) Is Null))"
Voilà, je pense que cela devrait fonctionner (probablement des erreurs de
frappes).
Dis-moi ce que cela donne.
Remarque : ici, il n'y a pas de traitement des erreurs de contrainte et
d'import. Si les utilisateurs ne font pas de contrôle des données avant de
les importer, il serait peut-être utile d'importer avant dans une table
temporaire et d'effectuer un état statististique du fichier avant de
l'importer définitivement dans la table "Donnees". Ce qui veux dire que
l'ajout se fait en deux temps (import pour contrôles, puis ajout validé). Tu
peux ne créer l'enregistrement dans "Operations" qu'après l'ajout validé.
Mais je te conseille quand même de le faire avant, et de conserver un flag
"Ajouté" de manière à
- rappeler à l'utilisateur qui sort du formulaire sans ajouter qu'il a
oublié cette étape
- compter les "imports sans ajout" par utilisateur pour repérer les
problèmes de saisie ou les besoins de formation
Pierre.
"Manu" <tissot.emanuel@free.fr> a écrit dans le message de
news:00f501c3919f$6187c060$a301280a@phx.gbl...
Bonjour a tous,
Voici ma problematique: Importer des donnes en provenance
d'un fichier Excel dans une table,
dans une autre table enregistrer le nom de l'utilisateur
et la date de l'operation,
puis creer un lien entre ces deux tables pour savoir qui a
ajoute quoi et quand.
Ma table Donnee contient un Champ IdOperation qui doit me
permettre de faire le lien
avec la table Operations mais rien a faire. Dans la table
Operations ce Champ est defini
comme cle primaire et est en numerotation automatique.
J'essaye avec la requete suivante:
UPDATE Donnees, Operations SET Donnees.IdOperation = DMax
([Operations!IdOperation],"Operations")
WHERE (((Donnees.IdOperation) Is Null));
Cela me renvoie systematiquement zero alors que je
voudrais recuperer la cle primaire.
Esperant avoir ete clair, je vous remercie pour vos
suggestions.
Si j'ai bien compris, tu ajoutes un enregistrement dans la table "Operations", et plusieurs dans la table "Donnees". Le champ IdOperation de la table "Donnees" est vide au moment de l'ajout, et tu veux le remplacer par le IdOperation généré lors de la création de l'enregistrement dans la table "Operation" (celui-ci étant NuméroAuto et Clef unique).
Je ferais cela comme suit : - L'enregistrement ajouté dans la table "Operations" est réalisé en VBA, de manière à récupérer le IdOperation généré. - La requête SQL de modification est générée par une chaîne de caractère en VBA en utilisant ce IdOperation.
En gros :
Dim rsOperations as Recordset Dim lIdOperation as long Set rsOperations = CurrentDb.OpenRecordset("SELECT * FROM Operations", dbOpenDynaset)
rsOperations.AddNew rsOperations!DateOperation = Date rsOperations!NomOperateur = 'mettre ici le nom de l'opérateur '.... renseigner tous les champs liés à l'opération rsOperations.Update rsOperations.MoveLast lIdOperation = rsOperations!IdOperation
rsOperations.Close
' Importer ici les données dans la table Donnees
DoCmd.RunSQL "UPDATE Donnees, Operations SET Donnees.IdOperation = " & lIdOperation &_ "WHERE (((Donnees.IdOperation) Is Null))"
Voilà, je pense que cela devrait fonctionner (probablement des erreurs de frappes). Dis-moi ce que cela donne.
Remarque : ici, il n'y a pas de traitement des erreurs de contrainte et d'import. Si les utilisateurs ne font pas de contrôle des données avant de les importer, il serait peut-être utile d'importer avant dans une table temporaire et d'effectuer un état statististique du fichier avant de l'importer définitivement dans la table "Donnees". Ce qui veux dire que l'ajout se fait en deux temps (import pour contrôles, puis ajout validé). Tu peux ne créer l'enregistrement dans "Operations" qu'après l'ajout validé. Mais je te conseille quand même de le faire avant, et de conserver un flag "Ajouté" de manière à - rappeler à l'utilisateur qui sort du formulaire sans ajouter qu'il a oublié cette étape - compter les "imports sans ajout" par utilisateur pour repérer les problèmes de saisie ou les besoins de formation
Pierre.
"Manu" a écrit dans le message de news:00f501c3919f$6187c060$
Bonjour a tous,
Voici ma problematique: Importer des donnes en provenance d'un fichier Excel dans une table, dans une autre table enregistrer le nom de l'utilisateur et la date de l'operation, puis creer un lien entre ces deux tables pour savoir qui a ajoute quoi et quand.
Ma table Donnee contient un Champ IdOperation qui doit me permettre de faire le lien avec la table Operations mais rien a faire. Dans la table Operations ce Champ est defini comme cle primaire et est en numerotation automatique.
J'essaye avec la requete suivante:
UPDATE Donnees, Operations SET Donnees.IdOperation = DMax ([Operations!IdOperation],"Operations") WHERE (((Donnees.IdOperation) Is Null));
Cela me renvoie systematiquement zero alors que je voudrais recuperer la cle primaire.
Esperant avoir ete clair, je vous remercie pour vos suggestions.
Manu/
Access 2000 / Win Nt/2000
Manu
Bonjour Pierre,
Si j'ai bien compris, tu ajoutes un enregistrement dans la table
"Operations", et plusieurs dans la table "Donnees".
C'est exactement ca sauf que je procede dans l'ordre inverse pour ne pas enregistrer une operation qui aurait echoue.
Le champ IdOperation de
la table "Donnees" est vide au moment de l'ajout, et tu veux le remplacer
par le IdOperation généré lors de la création de l'enregistrement dans la
table "Operation" (celui-ci étant NuméroAuto et Clef unique).
Tout a fait.
Je ferais cela comme suit : - L'enregistrement ajouté dans la table "Operations" est réalisé en VBA, de
manière à récupérer le IdOperation généré. - La requête SQL de modification est générée par une chaîne de caractère en
VBA en utilisant ce IdOperation.
En gros :
Dim rsOperations as Recordset Dim lIdOperation as long Set rsOperations = CurrentDb.OpenRecordset("SELECT * FROM Operations",
dbOpenDynaset)
rsOperations.AddNew rsOperations!DateOperation = Date rsOperations!NomOperateur = 'mettre ici le nom de l'opérateur
'.... renseigner tous les champs liés à l'opération rsOperations.Update rsOperations.MoveLast lIdOperation = rsOperations!IdOperation
rsOperations.Close
' Importer ici les données dans la table Donnees
DoCmd.RunSQL "UPDATE Donnees, Operations SET Donnees.IdOperation = " &
lIdOperation &_ "WHERE (((Donnees.IdOperation) Is Null))"
Voilà, je pense que cela devrait fonctionner (probablement des erreurs de
frappes). Dis-moi ce que cela donne.
J'essaye et je te tiens au courant. Merci de ton aide. Manu/
Bonjour Pierre,
Si j'ai bien compris, tu ajoutes un enregistrement dans
la table
"Operations", et plusieurs dans la table "Donnees".
C'est exactement ca sauf que je procede dans l'ordre
inverse pour ne pas
enregistrer une operation qui aurait echoue.
Le champ IdOperation de
la table "Donnees" est vide au moment de l'ajout, et tu
veux le remplacer
par le IdOperation généré lors de la création de
l'enregistrement dans la
table "Operation" (celui-ci étant NuméroAuto et Clef
unique).
Tout a fait.
Je ferais cela comme suit :
- L'enregistrement ajouté dans la table "Operations" est
réalisé en VBA, de
manière à récupérer le IdOperation généré.
- La requête SQL de modification est générée par une
chaîne de caractère en
VBA en utilisant ce IdOperation.
En gros :
Dim rsOperations as Recordset
Dim lIdOperation as long
Set rsOperations = CurrentDb.OpenRecordset("SELECT * FROM
Operations",
dbOpenDynaset)
rsOperations.AddNew
rsOperations!DateOperation = Date
rsOperations!NomOperateur = 'mettre ici le nom de
l'opérateur
'.... renseigner tous les champs liés à l'opération
rsOperations.Update
rsOperations.MoveLast
lIdOperation = rsOperations!IdOperation
rsOperations.Close
' Importer ici les données dans la table Donnees
DoCmd.RunSQL "UPDATE Donnees, Operations SET
Donnees.IdOperation = " &
lIdOperation &_
"WHERE (((Donnees.IdOperation) Is Null))"
Voilà, je pense que cela devrait fonctionner
(probablement des erreurs de
frappes).
Dis-moi ce que cela donne.
J'essaye et je te tiens au courant.
Merci de ton aide.
Manu/