|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 9 ![]() |
Bonjour,
Je suis débutant avec Access et j'ai beau fouiller partout je ne trouve pas de réponses à mon problème. Je travail en 2007, voici les tables utilisé: Table Employé: - no employé(CP) - nom - autre info Table Service offert - No employé(CP) - No de facture - Montant chargé au client Table détail facture - No facture(CP) - Date facture - Montant due à l'employé sur cette facture - Autre info sur la facture... Table période de paie - Date début période(CP) - Date fin période Table somme due par employé - No employé - Date de fin de période de paie - Somme due Sur les ventes de l'entreprise, les employés recoivent une rémunération spécifique(table détail facture). Nous devons produire des rapports bi-hebdomadaire sur ces revenus détaillé ou non. Jusque là tout m'a semblé bien aller. Par contre j'aurais aimé utilisé la table période de paie, mais je ne sais pas comment relier cette table à ma table détail facture. Le lien devrait être en fonction de l'intervale entre les date de période. Et le seul lien que j'ai réussi à faire est est-ce que la date de facture correspond à la date de fin ou début. Donc je n'ai pas encore lier ma table des période et dans mes états je filtre manuellement selon les période de date désiré. On m'a finalement demandé de compiler des sommes due par les employés que nous devons soustraire des sommes que nous leur devons. Et ces sommes ne sont pas due par jour mais par période de paie. Donc je dois absolument faire un lien avec les périodes. J'espère être compréhensible. Je commence un peu à utliser VB, donc si j'ai à coder svp me guider un peu. Merci |
|
|
00
|
|
|
#2 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Une solution simple mais qui peut-être couteuses en temps de traitement et d'espace disque est de faire un produit croisé entre tes périodes de paie et tes factures puis de ne retenir que la période qui encadre ta date de facturation.
Un tuc du comme Code sql :
SELECT facture.*, periodePaie.* WHERE facture.[dateFacture] BETWEEN periodePaie.dateDebutPeriode AND periodePaie.dateFinPeriode; Il serait intelligent de réduire la sélection des périodes de paie et des factures à l'année courrante pour réduire le produit croisé. Sinon il existe peut-être une fonction qui te permettrai de déduire la période de paie de la date facturation. Exemple : la période de paie est mensuelle (du 1 à fin de mois) donc si une facture est faite dans le mois elle appartient à cette période de paie. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#3 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Autre idée, au moment de la création de la facture, rechercher la période de paie et l'ajouter à la table des factures comme un attribut de la facture. Comme cela tu sais au moment ou tu traite ta facture à quelle période elle appartient.
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#4 | |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 9 ![]() |
Citation:
Je fais quoi comme relation entre ces tables? Voici la formule que j'ai fais dans le générateur d'expression: Code :
période paie: VraiFaux([Datefacture]>=[TPériodePaie]![DatedébutPP] Et [Datefacture]<=[TPaiePériode]![DatefinPP];[TPaiePériode]![Période];"Pas de période") |
|
|
|
00
|
|
|
#5 | ||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Tu ne peux pas mettre de relation entre tes tables. Il faut en faire une artificielle avec une sélection d'intervale dans une requête.
Je supose que tu n'as pas de recouvrement de périodes de paie. C'est à dire qu'une date appartient à une et une seule période de paie. Personnellement voici comment je résoudrai cela en utilisant la date de début de paie comme identifiant. Fonction à ajouter à un module de ton application. Code :
Code sql :
SELECT facture.*, LireDebutPeriodePaie([Fcature].[dateFacture] AS DebutPeriodePaie FROM facture; Grace à cette requête tu vas pouvoir associé une facture et la date de début de la période. Si tu as un identifiant de prériode tu pourrais le récupérer à la place de la date de début. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
||
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 9 ![]() |
Humm... Je sens que je me perds un peu. J'ai ajouté dans un module le code et j'ai modifié les champs et tables selon ma base de donnée. Il y avait un erreur de ) à la fin de la ligne résult. Enfin en enlevant la ) en double ça a fonctionné.
Ensuite dans une nouvelle requête et ajouté le code sql que j'ai aussi adapté selon la base. Je ne connais pas le SQL, mais pourquoi quand j'exécute il me demande d'ouvrir le fichier source? Est-ce que j'aurais due ajouter ce code à ma requête du départ? Désolé de mon ignorance... |
|
|
00
|
|
|
#7 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Pourras-tu poster ton code et le SQL de ta requête ?
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Inscription : mars 2011 Messages : 9 ![]() |
Code :
SELECT Nofolio.*, LireDebutPeriodePaie([TSoinvoucher].[Datesoin] AS DebutPeriodePaie FROM Nofolio; Code :
|
||
|
|
00
|
|
|
#9 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Il y a divers problèmes avec ton SQL :
Il manque une parenthèse et il manque une référence à la table TSoinvoucher et probablement une jointure à créer. Pour être fonctionnel il faudrait que ton SQL ressemble à cela. Code sql :
SELECT Nofolio.*, LireDebutPeriodePaie([TSoinvoucher].[Datesoin]) AS DebutPeriodePaie FROM Nofolio, TSoinvoucher; Note que je n'ai pas mis la jointure entre la table Nofolio et TSoinvoucher car je ne connais pas la strucure des tes tables. Je te suggère de faire une requête qui affiche tous les éléments dont tu as besoin puis, une fois que tu es satisfait de la sélection, d'y intégrer l'appel à la fonction. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 9 ![]() |
Je ne comprends pas la formule en Sql alors je je sais pas comment la coder...
Voici ce que j'ai fais, la table Nofolio n'exite pas. Le lien a faire est entre la table TPP (soit table des périodes) et le tabel Tsoinvoucher (soit la table des factures) Code :
SELECT [TPP].*, LireDebutPeriodePaie([TSoinvoucher].[Datesoin]) AS DebutPeriodePaie FROM ([TPP].[DatedébutPP]), ([TPP].[DatefinPP]); Merci |
|
|
00
|
|
|
#11 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Peux-tu poster le message de Access ?
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 9 ![]() |
Voir la pièce jointe.
Merci |
|
|
00
|
|
|
#13 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Spécialiste en bases de données Inscription : septembre 2006 Messages : 2 882 ![]() |
Bonjour,
Selon la théorie des données intervallaires (temporelles en particulier), on est souvent amené à ne pas utiliser de clé étrangère pour les intervalles (périodes). Une proposition : Pour connaître la période associée à chaque facture (ou les factures associées à chaque période), passer par une vue : 1) Table PERIODE : 2) Table FACTURE 3) Créer une requête jouant le rôle de vue, appelons-la FACTURE_PERIODE : ![]() ou en mode QBE : ![]() 4) Au résultat, pour chaque facture on a la période associée : ![]() 5) Pour récupérer les factures de telle période, disons [2005-01-31:2005-02-10] : Version QBE : Au résultat :
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
00
|
|
|
#14 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Bolak, peux-tu ouvrir les tables utilisées par ta requête directements ?
Là cele ne me semble pas relié à ton SQL mais à l'accès à tes données. Est-ce une base 100% Access ou tu as un Access en frontale et une dorsale sur Oracle ou un autre SGBD ? A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 9 ![]() |
Merci fmsrel, cela me donne run bout de chemin de ce que j'ai besoin.
Avec ce que tu m'as donné je réussi à afficher la période sur chaque facture ce qui est bien. Ensuite je dois lier les sommes qu'il nous doivent à chaque périodes sur le même état, par contre il peut y avoir plusieurs factures pour une période mais seulement une sommes due pour la période. Alors ma prochaine étape est de faire le lien entre les 2. Lundi je suis un cours avancé, je vais poser des questions et je vous reviens par la suite. marot_r: 100% access, oui je peux les ouvrir. Merci à vous 2 pour votre aide! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com