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 :

[TSqlQuery+dbexpress] Pbs Insertion


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Par défaut [TSqlQuery+dbexpress] Pbs Insertion
    Bonjour à tous,
    voila, j'utilises dbexpress avec une base Interbase en local,
    j'utilises principalement un TSqlQuery et tout marche bien pour
    les SELECT mais pour les INSERT j'ai des erreurs.

    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TcreerCompteForm.RegisterUser;
    Begin
    DataModule1.SQLQuery.Close;
    DataModule1.SQLQuery.SQL.Clear;
    DataModule1.SQLQuery.SQL.Add('INSERT INTO UTILISATEURS VALUES(:NOM,:PRENOM)');
    DataModule1.SQLQuery.ParamByName('NOM').Value:=(CreerCompteForm.LblNom.text);
    DataModule1.SQLQuery.ParamByName('PRENOM').Value:=(CreerCompteForm.LblPrenom.text);
    DataModule1.SQLQuery.ExecSQL;
    End;
    avec ce code j'ai l'erreur :

    Count of read-write columns does not equal count of values
    pourtant, si je fais la requête suivante dans IbExpert, elle s'insère sans pb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO UTILISATEURS(NOM,PRENOM) Values ('duss','jean-claude')

    J'ai une erreur différente si j'utilise ce code à la place :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TcreerCompteForm.RegisterUser;
    Begin
    DataModule1.SQLQuery.SQL.Clear;
    DataModule1.SQLQuery.SQL.Add('INSERT INTO UTILISATEURS (NOM,PRENOM) Values ('+ CreerCompteForm.LblNom.text +','+ CreerCompteForm.LblPrenom.text +')');
    DataModule1.SQLQuery.ExecSQL;
    End;
    Token unknown -line 1, .....
    j'ai esayé les simples quotes autour des noms de champs, les doubles quotes etc etc... sans trouver la syntaxe exacte

    Quelqu'un pourrait il me dire où est mon erreur et quelle est la bonne façon de faire ceci ?

    voilà la structure de la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE UTILISATEURS (
        ID              INTEGER NOT NULL,
        NOM             VARCHAR(30),
        PRENOM          VARCHAR(30),
        SEXE            VARCHAR(10),
        DATE_NAISSANCE  DATE,
        TAILLE          INTEGER,
        MOT_DE_PASSE    VARCHAR(15)
    );
    Merci à vous

    Fred

  2. #2
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Par défaut
    Bonjour Fred,

    Et comme cela ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TcreerCompteForm.RegisterUser; 
    Begin 
      DataModule1.SQLQuery.SQL.Clear; 
      DataModule1.SQLQuery.SQL.Add('INSERT INTO UTILISATEURS  (NOM,PRENOM) Values ('+ quotedStr(CreerCompteForm.LblNom.text) +','+ quotedStr(CreerCompteForm.LblPrenom.text) +')'); 
      DataModule1.SQLQuery.ExecSQL; 
    End;
    Cordialement

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Par défaut
    Merci Pascal de ton aide,
    en effet cela marche maintenant,
    j'avais bien vu dans certains exemples l'utilisation de QuotedStr, mais comme je rentrai des valeus simples (nom = 'aaaa' et prenom='bbbb') pr tester, je ne pensais pas que je devais l'utiliser, comme il n'y pas de quotes dans ces 2 chaines.

    Encore un fois, merci Pascal

    Fred

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

Discussions similaires

  1. [XE3, MSSQL, DBExpress] Performance INSERT avec paramètres
    Par Eric.H dans le forum Bases de données
    Réponses: 8
    Dernier message: 04/02/2013, 15h56
  2. Erreur lors d'un INSERT sur une table dans Firebird via dbExpress
    Par matou7 dans le forum Bases de données
    Réponses: 4
    Dernier message: 03/04/2012, 16h40
  3. Pbs d'insertion, de maj des données dans ma base
    Par bigwal2007 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 29/08/2007, 16h10
  4. [DBExpress] Formulaire d'insertion (Base de donnée)
    Par Nadd dans le forum C++Builder
    Réponses: 14
    Dernier message: 12/07/2007, 10h22
  5. Problème avec TSQLQuery-DbExpress
    Par patrickSan dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/03/2007, 09h36

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