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 ADO - INSERT INTO


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par défaut Problème ADO - INSERT INTO
    Bonsoir,

    Me voilà confronté depuis 4 heures à un problème assez bizarre.

    J'utilise Delphi 2005, une base de données ACCESS et des composants ADO pour effectuer mes requêtes et accéder à ma base access.

    Voila la structure de ma table USERS :
    - iduser : incrauto
    - LOGIN : varchar(25)
    - PASSWORD : varchar(25)

    Lorsque j'insère par SQL et ADO ceci :
    DM.Q_New_User.SQL.Add('INSERT INTO USERS (LOGIN) VALUES ('+ QuotedStr(form12.login_edit.Text) +')');
    Ca marche.

    Si maintenant je fais :
    DM.Q_New_User.SQL.Add('INSERT INTO USERS (LOGIN, PASSWORD) VALUES ('+ QuotedStr(form12.login_edit.Text) +','+QuotedStr(form12.password_edit.Text)+')');
    J'ai une erreur type : Erreur de syntaxe dans l'instruction INSERT INTO

    Dans son contexte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //On insère 
        /////////// 
        // Fermeture de la requete Q_New_User 
      DM.Q_New_User.Close; 
      // Effacement de la requete 
      DM.Q_New_User.SQL.Clear; 
      // Modification de la requete 
      DM.Q_New_User.SQL.Add('INSERT INTO USERS (LOGIN, PASSWORD) VALUES ('+ QuotedStr(form12.login_edit.Text) +','+QuotedStr(form12.password_edit.Text)+')'); 
     
      showmessage(DM.Q_New_User.SQL.Text); 
       // Ouverture de la requete 
      DM.Q_New_User.ExecSQL;
    Remarque : De même, je retrouve le même type d'erreur en faisant un UPDATE.

    J'ai bô cherché, je ne trouve pas de solution.

    Merci d'avance pour votre aide...

  2. #2
    Membre confirmé Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Par défaut Mot de passe vide
    Bonjour


    vérifier si le mot de passe est vide ,elle pose des pbs


    A+

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par défaut Re: Mot de passe vide
    Citation Envoyé par layouni
    Bonjour


    vérifier si le mot de passe est vide ,elle pose des pbs


    A+
    Lors des tests, les champs Login et Password sont vérifiés et ne doivent pas être nuls. Donc cela ne vient pas de là.

    Merci quand même pour ta réponse.

  4. #4
    Membre chevronné
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Par défaut
    Réponse idiote peut-être, mais tu fais bien un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DM.Q_New_User.SQL.Clear
    avant ton Add ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par défaut
    Citation Envoyé par cmen76
    Réponse idiote peut-être, mais tu fais bien un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DM.Q_New_User.SQL.Clear
    avant ton Add ?
    Oui tout à fait.

    Voici ce que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        //On insère
        ///////////
        // Fermeture de la requete Q_New_User
      DM.Q_New_User.Close;
      // Effacement de la requete
      DM.Q_New_User.SQL.Clear;
      // Modification de la requete
      DM.Q_New_User.SQL.Add('INSERT INTO USERS (LOGIN, PASSWORD) VALUES ('+ QuotedStr(form12.login_edit.Text) +','+QuotedStr(form12.password_edit.Text)+')');
     
      showmessage(DM.Q_New_User.SQL.Text);
       // Ouverture de la requete
      DM.Q_New_User.ExecSQL;

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Essai ca, si il y a un problème, c'est qu'il y a un soucis avec ta base de données.

    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
     
    With DM.Q_New_User do
    begin
      Close;
      SQL.Clear;
      SQL.Add('Select * from Users');
      Open;
      Append;
      FieldByName('Login').asString := form12.login_edit.Text;
      FieldByName('Password').Asstring := form12.password_edit.Text;
      try
        Post;
      Except on E:Exception do
        Showmessage('Erreur : ' + E.Message);
      End;
    end;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre confirmé Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Par défaut
    Il peut aussi y avoir un problème avec des champs qui sont utilisés par le système ?

    Je sais que j'avais eu des soucis avec des champs qui s'appelait Min ou Max (Et oui pas terrible ce genre de nom mais bon c'est une reprise d'existant)
    En mettant entre [ ] ça passait.

    Enfin je me souviens pas que PASSWORD soit un mot réservé.

    ++

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Pour les mots réservés y a >>> ici <<<

    Aucun des noms qu'il utilise n'est dans cette liste.

    Sinon est ce un composant AdoqQuery ou un AdoDataset utilisé comme un adoQuery ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 41
    Par défaut
    Salut,
    pour ajouter un enregistrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DM.Q_New_User.SQL.Add( ' INSERT INTO USERS(Login, password) ' );
    DM.Q_New_User.SQL.Add( ' VALUES(:Login, :password) ' );
    // Ici on définit le type de chaque paramètre (longin et password) comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DM.Q_New_User.Parameters[0].AsString;
    DM.Q_New_User.Parameters[1].AsString;
    // puis on associe les valeurs de chaque edit.text avec son type correspondant comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DM.Q_New_User.ParamByname('Longin').AsString := form12.login_edit.Text;
    DM.Q_New_User.ParamByname('Password').AsString := form12.Password_edit.Text;

    Après chaque Insertion(INSERT INTO), mise à jour (UPDATE) on utilise toujours ExecSQL au lieu de OPEN, parce que la requete ne renvoie pas de résultat.
    Donc, on execute la requete par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DM.Q_New_User.ExecSQL;
    j'espère que j'étais claire.
    bonne chance.

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Citation Envoyé par baba
    // Ici on définit le type de chaque paramètre (longin et password) comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DM.Q_New_User.Parameters[0].AsString;
    DM.Q_New_User.Parameters[1].AsString;
    Inutile et ca n'existe pas en ADO.

    De plus il n'y a aucune utilité à définir le type des paramètres, puisque que cela se fait automatiquement quand tu transmets les paramètres via ParamByName.

    ParamByName('UnChamp').AsString = Paramètre de type chaine
    ParamByName('UnChamp').AsInteger = Paramètre de type entier
    ParamByName('UnChamp').AsDataTime = Paramètre de type date heure.
    etc ...
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Par défaut
    La syntaxe de la requête semble bonne a priori mais que te renvoie DM.Q_New_User.SQL.Text ??
    S'il y a des quote ou double quote dans login_edit.text ou dans password_edit.text cela peut provoquer effectivement des erreurs de syntaxe.

    Isa

  12. #12
    Membre chevronné
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Par défaut
    Puisqu'on a un doute sur le fait que Password soit un mot réservé, il faudrait essayer ce SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DM.Q_New_User.SQL.Add('INSERT INTO USERS (LOGIN, "PASSWORD") VALUES ('+ QuotedStr(form12.login_edit.Text) +','+QuotedStr(form12.password_edit.Text)+')');

  13. #13
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Citation Envoyé par cmen76
    Puisqu'on a un doute sur le fait que Password soit un mot réservé, il faudrait essayer ce SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DM.Q_New_User.SQL.Add('INSERT INTO USERS (LOGIN, "PASSWORD") VALUES ('+ QuotedStr(form12.login_edit.Text) +','+QuotedStr(form12.password_edit.Text)+')');
    Faudrait surtout que le créateur de ce post, nous dise où il en est ^^
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

Discussions similaires

  1. problème avec insert into
    Par ulysse031 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 29/04/2007, 15h40
  2. Problème avec INSERT INTO
    Par Armaklan dans le forum Oracle
    Réponses: 3
    Dernier message: 28/02/2007, 11h15
  3. Passage de dbXpress aux composants ADO, INSERT INTO bugue
    Par WebPac dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/11/2006, 16h57
  4. Réponses: 12
    Dernier message: 25/11/2005, 12h29
  5. Réponses: 3
    Dernier message: 10/05/2005, 11h02

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