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

Comment créer un nouvel enregistrement joint ?

6 réponses
Avatar
Nikko
Bonjour,

Je travaille sous access 2007. J'ai une table INTERVENTION et une table
FACTURE.

Quand une intervention a été faite, je voudrais la facturer en créeant
un nouvel enregistrement FACTURE correspondant, et qui reprenne quelques
champs de la table INTERVENTION (id_client, id_intervention).

Pour cela je souhaite utiliser un formulaire fondé sur une requete de
selection avec jointure gauche (LEFT JOIN)
Dans un premier temps, la jointure gauche ne renvoi que l'intervention
car il n'ya as de facture associée,
mais si je rempli la DUREE, nomralement Access devrait me créer un
enregsitrement dans FACTURE avec les infos communes (id_client,
id_intervention) + la DUREE.

HORS le controle Durée de mon formulaire n'accepte pas d'entrée de
données, et de fait je n'arrive pas a créer d'enregistrement

QQun a til un deja utilisé cette manière de faire plutot qu'une requete
INSERT ? Merci
--
Nicolas

6 réponses

Avatar
Willi2004
Bonjour Nikko.
Normalement tu devrais pouvoir entrer des données dans ton formulaire.
Si dans le formulaire tu ne peux pas entrer de "Durée", c'est que dans la
requête source du formulaire c'est pareil.
Dans cette requête, tu as créé les jointures entre quels champs?
id_client ou id_intervention? Les champs joints sont-ils de type
Numérique, Numéro Auto?


"Nikko" a écrit dans le message de news:
461a2cb6$0$18276$
Bonjour,

Je travaille sous access 2007. J'ai une table INTERVENTION et une table
FACTURE.

Quand une intervention a été faite, je voudrais la facturer en créeant un
nouvel enregistrement FACTURE correspondant, et qui reprenne quelques
champs de la table INTERVENTION (id_client, id_intervention).

Pour cela je souhaite utiliser un formulaire fondé sur une requete de
selection avec jointure gauche (LEFT JOIN)
Dans un premier temps, la jointure gauche ne renvoi que l'intervention car
il n'ya as de facture associée,
mais si je rempli la DUREE, nomralement Access devrait me créer un
enregsitrement dans FACTURE avec les infos communes (id_client,
id_intervention) + la DUREE.

HORS le controle Durée de mon formulaire n'accepte pas d'entrée de
données, et de fait je n'arrive pas a créer d'enregistrement

QQun a til un deja utilisé cette manière de faire plutot qu'une requete
INSERT ? Merci
--
Nicolas


Avatar
Nikko
Bonjour Nikko.
Normalement tu devrais pouvoir entrer des données dans ton formulaire.


oui le formulaire est programmé en 'ajout autorisé'

Si dans le formulaire tu ne peux pas entrer de "Durée", c'est que dans la
requête source du formulaire c'est pareil.

Dans cette requête, tu as créé les jointures entre quels champs?
id_client ou id_intervention? Les champs joints sont-ils de type
Numérique, Numéro Auto?


Les ID sont des Numéros auto dans les tables CLIENT et INTERVENTION.
id_client et id_intervention sont des Entier Long dans ma table Facture.

La requete source est :
SELECT a.*, b.Duree FROM Intervention AS a LEFT JOIN Facture AS b ON
(a.id_client=b.id_client) AND (a.id=b.id_inter);

--
Nicolas

Avatar
Willi2004
Alors ouvre ta table Facture en mode modification et vérifie dans les
propriétés des champs "id-client" et "id_intervention" qu'ils sont indexés à
" Oui - Sans doublons ".
Puis essaye à nouveau d'entrer des données dans ton formulaire.

"Nikko" a écrit dans le message de news:
461a3d17$0$25716$
Bonjour Nikko.
Normalement tu devrais pouvoir entrer des données dans ton formulaire.


oui le formulaire est programmé en 'ajout autorisé'

Si dans le formulaire tu ne peux pas entrer de "Durée", c'est que dans la
requête source du formulaire c'est pareil.

Dans cette requête, tu as créé les jointures entre quels champs?
id_client ou id_intervention? Les champs joints sont-ils de type
Numérique, Numéro Auto?


Les ID sont des Numéros auto dans les tables CLIENT et INTERVENTION.
id_client et id_intervention sont des Entier Long dans ma table Facture.

La requete source est :
SELECT a.*, b.Duree FROM Intervention AS a LEFT JOIN Facture AS b ON
(a.id_client=b.id_client) AND (a.id=b.id_inter);

--
Nicolas



Avatar
Nikko
Alors ouvre ta table Facture en mode modification et vérifie dans les
propriétés des champs "id-client" et "id_intervention" qu'ils sont indexés à
" Oui - Sans doublons ".
Puis essaye à nouveau d'entrer des données dans ton formulaire.


J'ai bien indexé id_client à "Oui - avec Doublons" et id_inter avec "Oui
- sans Doublons". Car je peux facturer plusieurs fois un client, mais
une seule facture par intervention a priori.

Ceci dit ca ne marche pas !

Si tu as une autre idée, n'hésite pas
Merci de ton aide.
--
Nicolas

Avatar
Willi2004
Ta base a-t-elle une taille qui ne dépasse pas les 500Ko?
Si c'est le cas, dépose-la ici: www.cjoint.com et reviens donner le lien.

Si la taille dépasse les 500 Ko, tu peux créer une nouvelle base dans
laquelle tu importeras uniquement ton formulaire ainsi que sa source et si
la source est une requête, également les tables ayant servi créer cette
requête.
S'il y a un module ou une macro qui intervient dans le formulaire, tu
l'importes égalément.
Réduis éventuellement le nombre d'enregistrements à 3 ou 4, vérifie que ton
formulaire fonctionne correctement dans la nouvelle base, puis compacte-la.
Ensuite dépose-la ici: www.cjoint.com et reviens donner le lien.

Celà aidera à mieux appréhender les contours du problème.



"Nikko" a écrit dans le message de news:
461b37b4$0$22787$
Alors ouvre ta table Facture en mode modification et vérifie dans les
propriétés des champs "id-client" et "id_intervention" qu'ils sont
indexés à " Oui - Sans doublons ".
Puis essaye à nouveau d'entrer des données dans ton formulaire.


J'ai bien indexé id_client à "Oui - avec Doublons" et id_inter avec "Oui -
sans Doublons". Car je peux facturer plusieurs fois un client, mais une
seule facture par intervention a priori.

Ceci dit ca ne marche pas !

Si tu as une autre idée, n'hésite pas
Merci de ton aide.
--
Nicolas



Avatar
Nikko
Ta base a-t-elle une taille qui ne dépasse pas les 500Ko?
Si c'est le cas, dépose-la ici: www.cjoint.com et reviens donner le lien.


http://cjoint.com/?ekt0rQSznt
transormé en Base Access 2002.
j'ai enlevé certains objets et tables inutiles (pour le pb posé)

Le formulaire a tester est 'Intervention'.
J'essaie de pouvoir y rentrer une 'Durée' qui me permttra de créer un
enregistrement FACTURE lié.

Je pourrais aussi utiliser un sous-formulaire mais ca ne m'arrange pas
car INTERVENTION a normalement deja un sous-formulaire associé, pour
entrer les détails des interventions.