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

Bases de données Delphi Discussion :

Comment éviter les doublons dans access


Sujet :

Bases de données Delphi

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut Comment éviter les doublons dans access
    Bonjour,

    Dans une table ACCESS, sur un champ quelconque (colonne), c'est à dire ni clé primaire ni clé secondaire, comment au moment de insert interdire un doublon sur ce champ ?

    Exemple :
    champ 1 : RecNo AUTOINCREMENT : clé primaire autoincrémentée
    champ 2 : OwnerNo INTEGER : Clé étrangère
    champ 3 : Name CHAR(32) : ce champ ne doit pas avoir de doublon

    Exemple en code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      ADOTableSeg.Close;
      ADOTable.ConnectionString:= Format(_ConnString,[_UserName,_PassWord,MDBFile]);
      ADOTable.TableName:= 'MATABLE';
      ADOTable.Open;
      ADOTable.Last;
      ADOTable.Edit; 
      ADOTable.Insert; // La clé primaire est autoincrémentée
      ADOTable.FieldByName('OWNER_NO').AsInteger := OwnerNo;// clé étrangère
      ADOTableSeg.FieldByName('NAME').AsString := aName;// Ce champ ne doit pas supporter des doublons
    Le champ concerné est à la ligne 9

    Merci pour un éventuel exemple de complément du code

    Bonne journée à tous

  2. #2
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par colorid Voir le message
    Bonjour,

    Dans une table ACCESS, sur un champ quelconque (colonne), c'est à dire ni clé primaire ni clé secondaire, comment au moment de insert interdire un doublon sur ce champ ?

    Exemple :
    champ 1 : RecNo AUTOINCREMENT : clé primaire autoincrémentée
    champ 2 : OwnerNo INTEGER : Clé étrangère
    champ 3 : Name CHAR(32) : ce champ ne doit pas avoir de doublon

    Exemple en code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      ADOTableSeg.Close;
      ADOTable.ConnectionString:= Format(_ConnString,[_UserName,_PassWord,MDBFile]);
      ADOTable.TableName:= 'MATABLE';
      ADOTable.Open;
      ADOTable.Last;
      ADOTable.Edit; 
      ADOTable.Insert; // La clé primaire est autoincrémentée
      ADOTable.FieldByName('OWNER_NO').AsInteger := OwnerNo;// clé étrangère
      ADOTableSeg.FieldByName('NAME').AsString := aName;// Ce champ ne doit pas supporter des doublons
    Le champ concerné est à la ligne 9

    Merci pour un éventuel exemple de complément du code

    Bonne journée à tous
    Bonjour colorid,

    Va dans Access, ouvre ta table en mode création, va sur ton champs text et dans les paramètres tu as juste à mettre indexé à "oui sans doublon".

    A+

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut Ok mais c'est en code delphi ou SQL que je cherche la solution
    Merci

    Mais j'ai mal posé ma question

    Comment déclarer le champ interdit de doublon ?

    Soit lors de la création de la table, voir code de création ci-après
    Soit au moment de l'insert d'un nouveau enregistrement. voir 1ére question

    Exemple de création de la table avec ADOCommand
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      req:= 'CREATE TABLE CONTROL (' +
      ' CONTROL_NO AUTOINCREMENT, ' +
      ' CONTROL_OPERATION_NO INTEGER NOT NULL, ' +
      ' CONSTRAINT FK_Control2Operation FOREIGN KEY (CONTROL_OPERATION_NO) '+
      ' REFERENCES OPERATION(OPERATION_NO) ON UPDATE CASCADE ON DELETE CASCADE, '+
      ' CONTROL_NAME VARCHAR(32) NOT NULL, ' +
    // déclaration de la suite des champs
      ADOCommand1.CommandText := req;
      ADOCommand1.Execute;
    Que dois-je ajouter à la ligne 6 ?
    ou quel type de code genre " 'ALTER TABLE CONTROL" dois-je ajouter ?

    Merci d'avance à tous

  4. #4
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    avec un index (ou une contrainte) d'unicité?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     CREATE UNIQUE INDEX MonIndex ON MaTable (MonChamp);
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  5. #5
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut

    Le paramètre qui permet de placer un champ en "Oui Sans doublon" c'est
    UNIQUE

    Comme tu as mis le paramètre NOT NULL tu as juste a rajouter derriere UNIQUE.

    Bye.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut Merci à tous
    Merci,

    Si j'ai bien compris seul la caractérisation UNIQUE du champ suffit, il n'est pas besoin de le déclarer en index

    Je coche résolu

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

Discussions similaires

  1. Comment éviter les doublons dans une ComboBox
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 27/07/2017, 16h03
  2. Comment éviter les doublons dans TComboBox ?
    Par petitclem dans le forum C++Builder
    Réponses: 3
    Dernier message: 28/04/2009, 14h49
  3. [vbexcel]Comment supprimer les doublons dans une combobox?
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 24/11/2005, 11h12
  4. Comment éviter les doublons dans ma table
    Par einegel dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/11/2004, 12h18
  5. Éviter les doublons dans une requete
    Par royrremi dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 03/08/2004, 19h37

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