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 :

Problème champ auto-incrément sur SQL Server 2000


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Points : 49
    Points
    49
    Par défaut Problème champ auto-incrément sur SQL Server 2000
    Bonjour a tous,
    Je suis sous delphi 5 et SQL Server 2000, j'ai créer une table et j'ai définie son champ clé primaire autant que champ auto-incrément.
    Le problème est lorsque j'insère mes données sur la table:
    - Si j'insère avec le FieldValues de tout les champ (sauf celui du champ auto-inc) il m'affiche un message d'erreur (Le champ 'nom_de_mon_champ' doit avoir une valeur)
    - Si j'utilise le FieldValues pour inserer dans le champ auto-inc il m'affiche que le INSERT pour ce champ est en OFF.

    Je souhaite faire l'insertion avec FieldValues et pas en SQL (INSERT INTO ...)

    Est ce que quelqu'un pourrai m'aider????????????

    Merci d'avance pour toute propositions

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 135
    Points : 164
    Points
    164
    Par défaut
    tu peux forcer une insertion dans l'auto increment
    en exécutant l'instruction sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     SET IDENTITY_INSERT taTable  ON

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 266
    Points : 291
    Points
    291
    Par défaut
    Salut,

    Si tu utilises le BDE + ODBC pour MS-SQL il y a un probleme. Delphi ne reconnait pas les champ auto-increment. Si tu regardes les TField créés dans TDataset.Fields tu verras que ton champ auto-increment est indiqué comme un champ entier normal. Normalement, ton champs apparait comme TField.Required = true.

    Il suffit d'indiquer à Delphi que le champ n'est pas obligatoire :
    - Soit tu créés toi meme les champs de ton Dataset et il suffit de ne pas le rendre obligatoire.
    - Soit apres l'ouverture du Dataset tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LeDataset.FieldByName('leChampAutoInc').Required=false;

  4. #4
    Membre habitué Avatar de Patrick25300
    Homme Profil pro
    Retraité en technicien de maintenance et méthodes
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité en technicien de maintenance et méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 134
    Points
    134
    Par défaut
    Merci pour ces renseignements car c'était également mon souci, il me fallait renseigner la données primaire de la table, alors que j'avais un trigger dans la base de données. Le faite de mettre Required à false me convient mieux.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 266
    Points : 291
    Points
    291
    Par défaut
    Par contre fait attention, comme le champ (dans TFields) n'est pas auto-increment (TAutoIncField) il n'est pas automatiquement MAJ quand tu "post" un enregistrement inséré.

    Donc si tu as utilises ou affiches la valeur de la clé primaire alors tu dois rafraichir le jeu de données après validation (attention aux lenteurs).

Discussions similaires

  1. Quelques questions sur SQL Server 2000
    Par yinyang dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/12/2005, 19h39
  2. renseignements sur SQL Server 2000
    Par nagty dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/06/2005, 20h59
  3. [debutant]Auto incrementation sur sql-server 2000
    Par syl2095 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 18/11/2004, 18h00
  4. problème de float sur SQL server 2000.
    Par fidji dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2003, 14h15

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