IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modélisation Discussion :

Problème pour créer une clé primaire


Sujet :

Modélisation

  1. #1
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Problème pour créer une clé primaire
    Bonjour,

    je suis débutant dans access. Et je crée une base de données me permettant de stocker la liste des factures que j'emets. la table facture ne comporte que les champs suivante :

    date (date du jour)
    code société (renseigné manuellement)
    Numéro d'action (renseigné manuellement)
    Montant ttc (renseigné manuellement)
    Numéro Facture.

    C'est ce dernier champs qui me pose probleme. car j'aimerais qu'il soit automatique et sous le format suivant : Année+Mois+Code Société+Numéro incrementé. Ce qui donnerait, par exemple 0808C0201, pour la première facture du mois d'aout 08 pour la société C02.
    J'aimerais de plus que ce champ numéro de facture soit la clé primaire.

    J'espere que j'ai été assez clair dans ma demande. Sinon je suis a votre disposition.

    merci par avance de votre aide.

    @ +

  2. #2
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par grahamm Voir le message
    j'aimerais qu'il soit automatique et sous le format suivant : Année+Mois+Code Société+Numéro incrementé. Ce qui donnerait, par exemple 0808C0201, pour la première facture du mois d'aout 08 pour la société C02.
    Ca me semble difficile en utilisant directement le format du champs. Il faudra sûrement programmer ça dans le formulaire de saisie.
    Le formulaire cherche dans la table le dernier numéro de facture enregistré et compose automatiquement le numéro de la nouvelle facture en fonction du choix du client concerné.

    J'aimerais de plus que ce champ numéro de facture soit la clé primaire.
    Mauvaise idée !
    Une clé primaire est dé préférence un champ de type NuméroAuto, autrement dit et pour généraliser aux autres bases de données, de type entier auto-incrémenté.
    Ceci pour des raisons de rapidité et de recherche lors des jointures avec les autres tables, surtout si le volume de données est important.
    Donc ajoutez un champ FactId de type NuméroAuto et faites en la clé primaire.[/quote]

  3. #3
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci d'avoir répondu aussi vite.

    Vous pourriez m'indiquer la marche a suivre, pour créer ce champ dans le formulaire?

  4. #4
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Le champ sera une zone de texte qui ne sera pas accessible en saisie.
    La source de cette zone de texte sera la colonne [Numéro facture].

    3 solutions pour déclencher l'opération de formatage du numéro de facture :
    - A l'événement OnChange de la liste déroulante qui permet de sélectionner le client dans la table des clients ;
    - A l'événement getFocus (je crois me souvenir que c'est comme ça qu'il s'appelle) de la zone de texte, à condition que celle-ci soit la dernière à avoir le focus dans le formulaire ;
    - A l'événement onClic du bouton de validation des infos de la facture.

    Perso, je préfère la dernière car on peut lancer en même temps une série d'opérations de vérification de la saisie (montant incohérent par exemple).

    Pour le calcul :
    - on connaît la date de facture qui est a priori la date du jour donc on peut extraire l'année et le mois,
    - on connait le numéro du client parce qu'il a été choisi par l'utilisateur dans la liste des clients,
    - on interroge par une requête le précédent numéro de facture enregistré afin de l'utiliser pour calculer le nouveau numéro.

    On affiche le numéro dans la zone de texte en demandant la confirmation de la saisie et le tour est joué.

  5. #5
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    j'ai plus ou moins compris ce que vous vouliez dire.

    mais étant débutant je n'arrive pas a monter l'expression me permettant d'avoir le résultat désiré.

    le numéro de facture se compose donc de la manière suivante : 0810C0201

    08 = année
    10 = mois
    C02 = le code de la société
    01 = le numéro de la facture (la première facture pour le mois d'octobre 2008).

    Mes questions sont les suivantes :
    - Quel est le code approprié pour extraire l'année et le mois de la date de la facture sous le format aa pour l'année et mm pour le mois.

    - et comment faire pour lui demander d'incrémenter ce numéro alors que l'on repart a 01 pour chaque société et pour chaque mois.

    Merci d'avance pour votre aide.

  6. #6
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Un coup d'oeil dans les tutoriels peut-être...

  7. #7
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    je viens d'aller y jeter un coup d'oeil, et je n'en ai pas trouvé qui correspondait a ma recherche. j'ai peut être pas chercher au bon endroit.

Discussions similaires

  1. [Débutant] Problèmes pour créer une classe
    Par Hokage dans le forum Débuter
    Réponses: 3
    Dernier message: 27/09/2007, 17h48
  2. problème pour créer une procédure stockée
    Par PoichOU dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 06/09/2007, 10h58
  3. [ANTLR/EXPRESS] Problèmes pour créer une grammaire de EXPRESS
    Par cotmar dans le forum Autres langages
    Réponses: 2
    Dernier message: 07/05/2007, 10h05
  4. Problème pour créer une illumination par dôme de lumière
    Par m-matthieu dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 09/11/2006, 14h54
  5. Problème pour créer une clé étrangère
    Par DevloNewb' dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/07/2006, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo