Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/02/2011, 18h30   #1
Membre régulier
 
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 76
Points : 76
Par défaut Dupliquer facture / générer avoir , méthode ?

Bonjour à tous,

J'aurai besoin du conseil d'un pro concernant la duplication de factures ou génération d'avoirs.

Je ne sais pas quelle méthode utiliser pour récupérer les données d'une table "Détails factures" correspondantes au numéro de facture en cours de la table "Factures" pour pouvoir créér automatiquement une duplication de facture ou générer un avoir.

Je sais qu'il faut se servir de requêtes ajout pour remplir une table "avoirs" puis la table "détails avoirs" qui recevront la copie des données des tables citées plus haut , mais je n'arrive pas à le mettre en place.

J'arrive à remplir la table Avoirs par rapport à la facture à transformer mais je ne sais pas comment effectuer la requête qui reprendrait toutes les lignes de la table "Détails factures" et les injecterait dans la table "Détails avoirs" ?
Faut il le faire en deux étapes ?

Bref, si vous connaissez la méthode, merci de m'en faire part
(J'éxécute toutes mes actions en VBA et me sers exclusivement de formulaires indépendants)

Merci beaucoup d'avance
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 09h09   #2
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
Hello
Première suggestion: dans ma base perso, celle avec laquelle je gère Simplifi et que je vends, les avoirs sont bien stockés dans la table facture et donc les détails d'avoirs dans la table des détails de factures
quant à la duplication de facture, j'ai ce programme (léger) sous le bouton:
Code :
1
2
3
4
DoCmd.SetWarnings False
DoCmd.OpenQuery "duplication_fact"
DoCmd.OpenQuery "Duplication_détail_fact"
DoCmd.SetWarnings True
et dans la requête "duplication_fact"
Code :
1
2
3
4
INSERT INTO Factures ( N°facture, N°commande, N°fact_partenaire, Partenaire, Adresse, Contact, Description, Montant_TTC, Taux_TVA, Montant_HT, Montant_TVA, Mémo, Rubrique, Conditions, Payer_encaisser, TVA_biz, Formation )
SELECT Val([Formulaires]![Duplication_factures]![surN°]) AS Expr1, Factures.N°commande, Factures.N°fact_partenaire, Factures.Partenaire, Factures.Adresse, Factures.Contact, Factures.Description, Factures.Montant_TTC, Factures.Taux_TVA, Factures.Montant_HT, Factures.Montant_TVA, Factures.Mémo, Factures.Rubrique, Factures.Conditions, Factures.Payer_encaisser, Factures.TVA_biz, Factures.Formation
FROM Factures
WHERE (((Factures.N°facture)=[Formulaires]![Duplication_factures]![N°facture]));
et dans la requête "Duplication_détail_fact"
Code :
1
2
3
4
INSERT INTO Détail_Facture ( Désignation, Quantité, Libellé, Commentaire, Unité, Prix_unitaire, N°Ligne, Prix_ligne_HT, Tx_TVA, Val_TVA, Prix_ligne_TTC, Rubrique, N°Fact )
SELECT Détail_Facture.Désignation, Détail_Facture.Quantité, Détail_Facture.Libellé, Détail_Facture.Commentaire, Détail_Facture.Unité, Détail_Facture.Prix_unitaire, [Formulaires]![Duplication_factures]![surN°]+[N°ligne]-[N°Fact] AS Expr2, Détail_Facture.Prix_ligne_HT, Détail_Facture.Tx_TVA, Détail_Facture.Val_TVA, Détail_Facture.Prix_ligne_TTC, Détail_Facture.Rubrique, Formulaires!Duplication_factures!surN° AS Expr1
FROM Détail_Facture
WHERE (((Détail_Facture.N°Fact)=[Formulaires]![Duplication_factures]![N°facture]));
Tu as donc compris que les tables Factures et Détail_Facture sont liées par Factures.N°facture <---> Détail_Facture.N°Fact
Il faut donc bien commencer par copier la table mère puis ensuite la fille

Les N° de facture de départ ([Formulaires]![Duplication_factures]![N°facture] ) et d'arrivée (Formulaires!Duplication_factures!surN°) ont été déterminés sur le fomulaire Duplication_factures
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 12h24   #3
Membre régulier
 
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 76
Points : 76
Citation:
Envoyé par Simplifi Voir le message
Hello
Première suggestion: dans ma base perso, celle avec laquelle je gère Simplifi et que je vends, les avoirs sont bien stockés dans la table facture et donc les détails d'avoirs dans la table des détails de factures :
Merci pour ta réponse,

J'ai déjà créée une table "Avoirs" qui est automatiquement complétée sur clic de bouton depuis mon formulaire Factures avec un module qui attribue un numéro automatique d'avoir.

C'est l' automatisation des requêtes filles qui me pose problème, comment insérer le résultat de la requête "Détails Factures" dans la table "Détails avoirs" ?

Ca doit être tout bête mais avec la fatigue je trouve pas la logique à appliquer...
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 13h31   #4
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
Hello
c'est bien le but de la deuxième requête de ma réponse précédente

Pour procéder:
je commence par une requête sélection sur les détails avec le même critère que la sélection de des en-têtes
Ensuite je la passe en requête ajout
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 13h39   #5
Membre régulier
 
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 76
Points : 76
Oui, mais comment récupérer les valeurs de la première requête pour les mettre dans la deuxième ?
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2011, 13h17   #6
Membre régulier
 
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 76
Points : 76
En fait je me rends compte qu'il faut tout bêtement utiliser des requêtes ajout !!!

Mon seul problème va être d'injecter le numéro d'avoir dans la table "Détails Avoirs" qui est créé dans la table avoir mais j'ai ma petite idée ...
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2011, 15h51   #7
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
Hello
c'est bien pour ça que je prépare mon nouveau numéro dans le formulaire Duplication_factures avant de cliquer sur le bouton de commande.
Ceci me permet de programmer la règle que je veux: par exemple:
- le max de N° +1
- le max de N° +1 si N°>0, ou min de N° -1 si N°<0
- le max de N° du mois en cours +1
- deux chiffres pour l'année, un tiret, deux pour le mois, un tiret, le max de N° du mois en cours +1
- tout autre produit deton imagnation
Mais surtout, ça me permet de forcer à la main celui que je veux, notamment pour entrer le N°11 avant le N°10

enfin ma requête fait référence à ce champ avec chez moi la formule:
Code :
[Formulaires]![Duplication_factures]![surN°]+[N°ligne]-[N°Fact] AS N°Ligne
cette formule vient du fait que chez moi, les lignes de la facture N°2 sont: 2,01 ; 2,02 ; etc
si donc le numéro sur lequel on copie (SurN°) est 5 alors on a 5 + 2,01 - 2 = 5,01 ; 5 + 2,02 - 2 = 5,02 ; etc

à toi d'adapter à ton cas
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 22h14   #8
Nouveau Membre du Club
 
Homme
Technicien maintenance
Inscription : juin 2008
Messages : 110
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Technicien maintenance
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : juin 2008
Messages : 110
Points : 35
Points : 35
Bonjour comment a tu fait pour lier dans ta table avoir car ton id facture qui permet d'y rattacher les lignes de facture n'est pas le même pour l'avoir.

Je bute sur ce problème.

J'ai fait une requête qui me récupère l'id de l'insertion et je dois insérer cet id dans ma table détail en place.

Moi je part d'un devis que je transforme en facture.

Donc c mon "devis_id" qui fait lien avec "detail_devis_id"

Je fais mon insert et je récupère le "fact_id" que je dois utiliser dans "detail_fact_id" mais mon problème c'est que je ne sais pas comment l'interpréter dans ma requête d'insert car j'aurai donc une variable + un select
chouchouilloux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 23h04   #9
Membre régulier
 
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 76
Points : 76
Sur le bouton "Transformer en Facture" :

Une fonction de numérotation automatique par rapport à la date et le mois / année qui se charge de numéroter les Devis en vérifiant le dernier numéro existant.

J'ai créé un champ "Liaison" dans la table Devis et dans la table Factures.

Je remplis ce champ par la requête Insert into du genre :

Code :
1
2
Insert into "Factures" (NumFacture,Liaison, ...) values ('"& NumFactureAuto () &"','"& Me.NumDevis &"', ...);
"
Le Select se fait en filtrant les lignes de Devis correspondant au numéro de devis en cours.

J' éffectue un update de la table Devis pour remplir le champ liaison de la table Devis :

Code :
Update "Devis" Set [Liaison]=Me.NumfactureAuto();
Comme ça les deux tables contiennent des données en relation aux deux types de documents créés...

Le cas est applicable si tu disposes aussi d'une seule table pour les devis / factures.
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 00h09   #10
Nouveau Membre du Club
 
Homme
Technicien maintenance
Inscription : juin 2008
Messages : 110
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Technicien maintenance
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : juin 2008
Messages : 110
Points : 35
Points : 35
Salut, je vais regarder un peu ce que tu a fait mais demain car là dodo ;-)

Mais moi non j'ai 1 table devis + 1 table detail_devis
et 1 table facture + 1 table detail_facture.

Merci de l'info je te tiens au courant
chouchouilloux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 09h17   #11
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
Hello
sur ce shéma, j'ai toute la chaine Devis-commande-bordereaux de livraison-Facture/avoir
Et comme pour moi tous ces documents sont les mêmes pour les fournisseurs et pour les clients, j'ai un oui/non pour payer/encaisser

voilà donc le sql d'une requête de passage de devis en commande:
requête "Passe_devis_commande":
Code :
1
2
3
4
INSERT INTO Commandes ( N°Commande, N°Dev, N°cde_partenaire, Partenaire, Adresse, Destinataire, Description, Montant_TTC, Taux_TVA, Montant_HT, Montant_TVA, Payer_encaisser, TVA_biz )
SELECT Val(Formulaires!Passage_devis_com!surN°) AS N°Commande,N°devis, N°dev_partenaire, Partenaire, Devis.Partenaire, Contact, Devis.Description, Montant_TTC, Taux_TVA, Montant_HT, Montant_TVA, Payer_encaisser, TVA_biz
FROM Devis
WHERE (((Devis.N°devis)=[Formulaires]![Passage_devis_com]![N°devis]));
requête "Passe_détail_devis_commande":
Code :
1
2
3
4
INSERT INTO Détail_commande ( Désignation, Quantité, Libellé, Commentaire, Unité, Prix_unitaire, N°Ligne, Prix_ligne_HT, Tx_TVA, Val_TVA, Prix_ligne_TTC, N°Com )
SELECT Désignation, Quantité, Libellé, Commentaire, Unité, Prix_unitaire, Round([Formulaires]![Passage_devis_com]![surN°]+[N°ligne]-[N°dev],2) AS N°Ligne, Prix_ligne_HT, Tx_TVA, Val_TVA, Détail_Devis.Prix_ligne_TTC, [Formulaires]![Passage_devis_com]![surN°] AS N°Com
FROM Détail_Devis
WHERE (((Détail_Devis.N°Dev)=[Formulaires]![Passage_devis_com]![N°devis]));
les clefs des tables sont N°Commande et N°Ligne
et le lien entre les deux se fait par Détail_commande.N°Com = Commandes.N°Commande
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 18h26   #12
Nouveau Membre du Club
 
Homme
Technicien maintenance
Inscription : juin 2008
Messages : 110
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Technicien maintenance
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : juin 2008
Messages : 110
Points : 35
Points : 35
Petite question sur ton code car là je patauge lol.

Quand tu fait
Code :
1
2
INSERT INTO Commandes ( blabla, blabla2 )
SELECT Val(Formulaires!Passage_devis_com!surN°) AS N°Commande,N°devis, N°dev_partenaire, ...
Code :
Val(Formulaires!Passage_devis_com!surN°) AS N°Commande
correspond à une valeur de ton formulaire qui n'est pas lié à ton select directement, je veux dire qui n'est pas un champ de ta table ?

Edit :
C'est bon j'ai trouvé, non sans mal, mais j'ai trouvé.
Merci de tes réponses qui m'ont bien aiguillé.

Bonne continuation
chouchouilloux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h07.


 
 
 
 
Partenaires

Hébergement Web