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

Requêtes et SQL. Discussion :

Création clé primaire


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut Création clé primaire
    Bonjour,
    voici ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT [Clé_primaire] AS Expr1, DateSerial([ANNEE_INTE],[MOIS_INTER],[JOUR_INTER]) AS [DATE], PINTE01.NUMERO_INT, PINTE01.NOM_ET_PRE, PINTE01.NATURE_ENT, PINTE01.REPERE_APP, PINTE01.TEMPS_PASS, PINTE01.NOTION_ALE, PINTE01.SYMPT__DEF, PINTE01.CAUSE_OBJE, PINTE01.CAUSE_DEFA, Nom_Service([CORPS_DE_M]) AS Service, Nom_Unité([CENTRE_DE]) AS Unité, [CENTRE_DE] & [SECTION] AS GROUPE INTO Tbl_Pilot_modifié
    FROM PINTE01
    ORDER BY DateSerial([ANNEE_INTE],[MOIS_INTER],[JOUR_INTER]);
    Je souhaiterai que le champ [Clé_primaire] soit une numérotation 1,2,3,...

    comment fait-on ???, je n'ai rien trouvé sur le forum !!!

  2. #2
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Salut,
    lors de la création de ta table PINTE01, il te suffit de mettre le champ clé primaire en NuméroAuto

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    Je ne peux pas le faire car PINTE01 est une table liée (extraction d'un logiciel de maintenance)
    Je souhaiterai par ma requête ,créer un champ Clé primaire, ma requête étant du type création de table.

    Vous dites si vous avez besoin de + de renseignements

  4. #4
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Dans ce cas là, tu créés une table vierge avec un champ clé primaire en NuméroAuto et tu fait une requête Ajout

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    Le problème de faire une requête ajout, à chaque fois que je l'execute, elle me double mes enregistrements.
    Je m'explique :
    tous les jours à 6h, mon fichier PINTE01.dbf est mis à jour avec les données de la veille. (données vont du 01/01/2007 à hier).
    En faisant la requête ajout, je mulitiplie mes données tous les jours.
    Car ma requête s'execute à l'ouverture d'access.

    N'existe t-il pas un moyen dans une requête "Création de Table" de définir un champ comme clé_primaire ???


    Sinon je réfléchi au fait de :
    1)Créer une table vierge avec un champ NumAuto (tbl_vierge)
    2)Créer ma table par ma requête création (Tbl_Pilot_modifié)
    3)Créer une table (Pilot_modifié = tbl_vierge + Tbl_Pilot_modifié)
    C'est lourd quand même non !!!

  6. #6
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Tu peux, par code supprimer ta table et la recréer avant de faire cette requête ajout

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    comment, quel est le code pour supprimer une table ou certains enregistrement de la table ???

  8. #8
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Un petit exemple de suppression et de re-création de table


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    Sub CreerTable()
    Dim dft As TableDef, chp1 As Field, chp2 As Field, chp3 As Field, chp4 As Field, chp5 As Field, chp6 As Field, _
        chp7 As Field, chp8 As Field, chp9 As Field, chp10 As Field, chp11 As Field, chp12 As Field, idx As Index, _
        chpIndex As Field, bds as Database
    Dim tdfLoop As TableDef
    Set Bds= CurrentDb()
        bds.TableDefs.Delete "Depenses" 'suppression de la table Depenses
    ' Crée une nouvelle table avec douze champs.
        Set dft = bds.CreateTableDef("Depenses")
        Set chp1 = dft.CreateField("RefDepense", dbLong)
        chp1.Attributes = chp1.Attributes + dbAutoIncrField
        Set chp2 = dft.CreateField("ObjetDepense", dbText, 255)
        Set chp3 = dft.CreateField("RefFournisseur", dbLong)
        Set chp4 = dft.CreateField("LigneComptable", dbText, 10)
        Set chp5 = dft.CreateField("MontantEngage", dbSingle)
        Set chp6 = dft.CreateField("DateEngagement", dbDate)
        Set chp7 = dft.CreateField("Commentaire", dbMemo)
        chp7.AllowZeroLength = True
        Set chp8 = dft.CreateField("DateFacture", dbDate)
        Set chp9 = dft.CreateField("MontantFactureHT", dbSingle)
        chp9.DefaultValue = Null
        Set chp10 = dft.CreateField("TauxTVA", dbSingle)
        Set chp11 = dft.CreateField("NumeroFacture", dbText, 20)
        Set chp12 = dft.CreateField("Verif", dbBoolean)
        chp11.DefaultValue = 0
        ' Ajoute les champs.
        dft.Fields.Append chp1
        dft.Fields.Append chp2
        dft.Fields.Append chp3
        dft.Fields.Append chp4
        dft.Fields.Append chp5
        dft.Fields.Append chp6
        dft.Fields.Append chp7
        dft.Fields.Append chp8
        dft.Fields.Append chp9
        dft.Fields.Append chp10
        dft.Fields.Append chp11
        dft.Fields.Append chp12
        ' Crée une première clé d'index.
        Set idx = dft.CreateIndex("Clé primaire")
        Set chpIndex = idx.CreateField("RefDepense", dbLong)
        ' Ajoute les champs d'index.
        idx.Fields.Append chpIndex
        ' Attribue la propriété Primary.
        idx.Primary = True
        ' Ajoute l'index.
        dft.Indexes.Append idx
    End Sub
    Il faut supprimer ta table et la recréer, car sinon si tu vides ta table, ton champ clé primaire va repartir au dernier numéro +1 de ta table vidée

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    Bon en fait j'y suis arrivé mais différement, j'ai effectué 2 requêtes, que j'ai mis sur dans un autoexec.
    Voici les 2 requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT DateSerial([ANNEE_INTE],[MOIS_INTER],[JOUR_INTER]) AS [DATE], PINTE01.NUMERO_INT, PINTE01.NOM_ET_PRE, PINTE01.NATURE_ENT, PINTE01.REPERE_APP, PINTE01.TEMPS_PASS, PINTE01.NOTION_ALE, PINTE01.SYMPT__DEF, PINTE01.CAUSE_OBJE, PINTE01.CAUSE_DEFA, Nom_Service([CORPS_DE_M]) AS Service, Nom_Unité([CENTRE_DE]) AS Unité, [CENTRE_DE] & [SECTION] AS GROUPE INTO Tbl_Pilot_modifié
    FROM PINTE01
    GROUP BY DateSerial([ANNEE_INTE],[MOIS_INTER],[JOUR_INTER]), PINTE01.NUMERO_INT, PINTE01.NOM_ET_PRE, PINTE01.NATURE_ENT, PINTE01.REPERE_APP, PINTE01.TEMPS_PASS, PINTE01.NOTION_ALE, PINTE01.SYMPT__DEF, PINTE01.CAUSE_OBJE, PINTE01.CAUSE_DEFA, Nom_Service([CORPS_DE_M]), Nom_Unité([CENTRE_DE]), [CENTRE_DE] & [SECTION]
    ORDER BY DateSerial([ANNEE_INTE],[MOIS_INTER],[JOUR_INTER]);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER TABLE Tbl_Pilot_modifié ADD COLUMN MonChampID COUNTER
    Je clos le sujet et merci quand même de ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/10/2012, 11h28
  2. Création clé primaire avec une séquence
    Par richard_sraing dans le forum PL/SQL
    Réponses: 0
    Dernier message: 14/11/2008, 01h36
  3. création clé primaire auto incrémentable SQL ACCESS ?
    Par colorid dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 23/11/2007, 15h25
  4. Requête avec création clé primaire
    Par mrenaut dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 06/03/2007, 20h20
  5. Création Clé primaire auto-incremente - Access 2000
    Par Didier100 dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/10/2004, 20h30

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