Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

clés primaires entre 2 table dont 1 temporaire

2 réponses
Avatar
Gundt
Bonsoir à tous,

Dans mon appli facturation, dans la base données, j'ai 2 tables Lignes
Factures et Lignes Factures Temp.
J'ai mis toutes les 2 une clé primaire RéfDétailFacture en NuméroAuto.

Au cours du déroulement du programme, par une requête ajout, j'ajoute
les enregistrements de la table Lignes Factures Temp dans Lignes Factures.

Les champs sont identiques dans les 2 tables.
Les autres champs sont : Numerofacture, N°BL, Codearticle, etc ...

Quand je lance la requête ajout, j'obtiens un message d'erreur de
violation de clé.
Forcément, les champs RéfDétailFacture (qui sont en NuméroAuto) dans
chaque table ne sont pas à la même valeur.

Et en plus, cette appli est destinée à tourner sur un runtime, le jour
où je l'installerai, je ne connaîtrai pas d'avance la valeur
RéfDétailFacture de la table Lignes Factures sur le pc runtime. Il me
sera difficile d'ajuster sa valeur.

2 questions :
- comment synchroniser RéfDétailFacture dans chacune des 2 tables ?
- peut-on s'en passer en utilisant un autre moyen d'utiliser comme une
clé primaire comme numerofacture + Codearticle.

Quelles solutions préconiseriez-vous ?

Merci d'avance.

Gundt

2 réponses

Avatar
zOrg2net
Bonjour Gundt,

Si j'ai bien compris tu déverses les enregistrements de la table "Lignes
Factures Temp", dans la table "Lignes Factures" ?
Dans ce cas, il faut déclarer le champ "RéfDétailFacture" de la table
"Lignes Factures" comme type de données numérique Entier long (et non
NuméroAuto), et le garder comme clé primaire. Le numéro auto étant créé dans
la table temporaire.

zOrg2net
7OuNet


Bonsoir à tous,

Dans mon appli facturation, dans la base données, j'ai 2 tables Lignes
Factures et Lignes Factures Temp.
J'ai mis toutes les 2 une clé primaire RéfDétailFacture en NuméroAuto.

Au cours du déroulement du programme, par une requête ajout, j'ajoute
les enregistrements de la table Lignes Factures Temp dans Lignes Factures.

Les champs sont identiques dans les 2 tables.
Les autres champs sont : Numerofacture, N°BL, Codearticle, etc ...

Quand je lance la requête ajout, j'obtiens un message d'erreur de
violation de clé.
Forcément, les champs RéfDétailFacture (qui sont en NuméroAuto) dans
chaque table ne sont pas à la même valeur.

Et en plus, cette appli est destinée à tourner sur un runtime, le jour
où je l'installerai, je ne connaîtrai pas d'avance la valeur
RéfDétailFacture de la table Lignes Factures sur le pc runtime. Il me
sera difficile d'ajuster sa valeur.

2 questions :
- comment synchroniser RéfDétailFacture dans chacune des 2 tables ?
- peut-on s'en passer en utilisant un autre moyen d'utiliser comme une
clé primaire comme numerofacture + Codearticle.

Quelles solutions préconiseriez-vous ?

Merci d'avance.

Gundt



Avatar
Gundt
Bonjour à tous,


[...]
2 questions :
- comment synchroniser RéfDétailFacture dans chacune des 2 tables ?
- peut-on s'en passer en utilisant un autre moyen d'utiliser comme une
clé primaire comme numerofacture + Codearticle.

Quelles solutions préconiseriez-vous ?


J'ai trouvé comment faire.

Voici ce que j'ai fait :
Sur la table lignes factures temp :
- j'ai supprimé numéroauto dans RéfDétailFacture et je l'ai mis en
numérique entier long non indexé,
- j'ai mis les champs suivants en clé primaire :
Numfacture, N°BL et codearticle

Sur la table lignes factures,
j'ai laissé RéfDétailFacture en numéroauto

Cette fois-ci, la requête fonctionne sans que Access se plaigne.

C'est bien. J'espère que c'est une bonne solution car les index ne sont
pas les mêmes. Apparemment, les données se retrouvent bien au bon
endroit (N°BL pour le client avec les bons articles qui le concernent).

Gundt