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 :

Erreur de syntaxe dans l'expression INSERT INTO


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 36
    Points : 27
    Points
    27
    Par défaut Erreur de syntaxe dans l'expression INSERT INTO
    Bonjour,

    Je ne comprend pas le message d'erreur affiché sur cette procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    m.sql_1.SQL.Clear;
    m.sql_1.SQL.Add('insert into user(code_type_user, nom_user, prenom_user, fixe_user, mobile_user, mail_user, date_naissance_user, mdp_user, src_photo) VALUES(:1,:2,:3,:4,:5,:6,:7,:8,:9)');
    m.sql_1.Parameters.ParamByName('1').Value:=copy(zs_type.Text,1,2);
    m.sql_1.Parameters.ParamByName('2').Value:=zs_nom.Text;
    m.sql_1.Parameters.ParamByName('3').Value:=zs_prenom.Text;
    m.sql_1.Parameters.ParamByName('4').Value:=zs_fixe.Text;
    m.sql_1.Parameters.ParamByName('5').Value:=zs_mobile.Text;
    m.sql_1.Parameters.ParamByName('6').Value:=zs_mail.Text;
    m.sql_1.Parameters.ParamByName('7').Value:=zs_date_naissance.Date;
    m.sql_1.Parameters.ParamByName('8').Value:=zs_mdp.Text;
    m.sql_1.Parameters.ParamByName('9').Value:='zs_mdr.Text';
    m.sql_1.ExecSQL;
    Si vous trouvez l'erreur je suis à votre écoute =)
    D'avance merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    Pour les erreurs invisibles, il faut voir du côté des esprits.

    Pour que nous puissions t'aider, il serait bien de nous indiquer le points prévus dans la charte, à savoir :

    • Base de données utilisée
    • Message d'erreur, car il me semble omis
    • Présentation de la table concernée
    • Autres informations utiles

    A+

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    je ne suis pas sur que l'on puisse utiliser des chiffres comme nom de paramètres,(jamais testé)
    pour le reste , déjà une erreur pour la valeur du paramètre 9 (a moins qu'il soit voulu que cela soit la constante 'zs_mdr.Text'

    et enfin je plussoie seabs , on n'est : ni dans votre tête , ni sur votre poste
    une question bien posée , se résout souvent toute seule
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 36
    Points : 27
    Points
    27
    Par défaut
    @seabs : le SGBD est access. Concernant la ma table sql et bien elle contient les champs dont tu peux voir dans ma requete sql, tous les champs sont de type texte sauf la date (veut tu voir autre chose de ma BDD ?). Pour le message d'erreur c'est l'intitulé de ma discussion.

    @sergioMaster : le fait d'insérer les chiffres fonctionne car je le fait dans bcp de requête déjà et ça ne pose aucun problème. Concernant le paramètre 9 ce n'est pas exactement cela mais ce n'est pas celui ci qui génère l'erreur.

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    paramètre avec des nombres comme nom : je viens d'apprendre une chose

    pour ce qui est des affectations des valeurs a ces paramètres , je préfère toujours typer le paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // TQuery classique, je ne maitrise pas assez ADO (je pense que c'est ceux utilisés)
    m.sql_1.ParamByName('7').asDateTime:=zs_date_naissance.Date;
    m.sql_1.ParamByName('8').asString:=zs_mdp.Text;
    // pour le paramètre 9 je parlais juste du fait que cela devenait une constante au lieu de la valeur du Tedit zs_mdr 
    m.sql_1.ParamByName('9').AsString:='zs_mdr.Text';
    comme indiqué
    je ne maitrise pas assez ADO
    pour ce qui est du typage des paramètres mais j'ai déjà lu des Posts a ce sujet
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    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
    Bonjour,

    (idem à Sergio )

    Il est toujours important de typer tes champs avant de les renseigner surtout dans le cas de Float ou Currency. De plus il faut mettre tes champs entre crochet et il manquais peut-être un espace entre into user( ou into user (

    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
    m.sql_1.SQL.Clear;
    m.sql_1.SQL.Add('insert into user ([code_type_user], [nom_user], [prenom_user], [fixe_user], [mobile_user], [mail_user], [date_naissance_user], [mdp_user], [src_photo]) VALUES(:1,:2,:3,:4,:5,:6,:7,:8,:9)');
    {$REGION 'Type'}
    m.sql_1.Parameters.ParamByName('1').DataType:=ftString;
    m.sql_1.Parameters.ParamByName('2').DataType:=ftString;;
    m.sql_1.Parameters.ParamByName('3').DataType:=ftString;
    m.sql_1.Parameters.ParamByName('4').DataType:=ftString;
    m.sql_1.Parameters.ParamByName('5').DataType:=ftString;
    m.sql_1.Parameters.ParamByName('6').DataType:=ftString;
    m.sql_1.Parameters.ParamByName('7').DataType:=ftDate;
    m.sql_1.Parameters.ParamByName('8').DataType:=ftString;
    m.sql_1.Parameters.ParamByName('9').DataType:=ftString;
    {$ENDREGION}
     
    {$REGION 'Value'}
    m.sql_1.Parameters.ParamByName('1').Value:=copy(zs_type.Text,1,2);
    m.sql_1.Parameters.ParamByName('2').Value:=zs_nom.Text;
    m.sql_1.Parameters.ParamByName('3').Value:=zs_prenom.Text;
    m.sql_1.Parameters.ParamByName('4').Value:=zs_fixe.Text;
    m.sql_1.Parameters.ParamByName('5').Value:=zs_mobile.Text;
    m.sql_1.Parameters.ParamByName('6').Value:=zs_mail.Text;
    m.sql_1.Parameters.ParamByName('7').Value:=zs_date_naissance.Date;
    m.sql_1.Parameters.ParamByName('8').Value:=zs_mdp.Text;
    m.sql_1.Parameters.ParamByName('9').Value:='zs_mdr.Text';
    {$ENDREGION}
     
    m.sql_1.ExecSQL;
    Sinon je ne vois pas où est ton message d'erreur exacte ? (ni dans l'entête du post)

    Ensuite fait attention au champs vide autorisé ou non, champ autorisé nul ou non..

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 36
    Points : 27
    Points
    27
    Par défaut
    Merci à tous pour vos réponse mais je pense avoir trouvé mon erreur. J'ai simplement modifier le nom de ma table. Je l'ai remplacé de "user" à "utilisateur".. Est-ce que le terme "user" peut générer des problèmes étant donné qu'il est utilisé couramment en informatique ??
    Bref depuis ca, plus de problème.

    Encore merci =)

  8. #8
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Chaque SGBD a ses propres mots réservés ; 'user' a de bonnes chances d'en faire partie.

    Une table d'utilisateurs pourrait utilement s'appeler users pour éviter l'homonymie avec un mot-clef.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

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

Discussions similaires

  1. [AC-2007] Erreur de syntaxe dans l'instruction INSERT INTO
    Par DébutantAccess dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 28/02/2013, 18h45
  2. OleDbException -{"Erreur de syntaxe dans l'instruction INSERT INTO."}
    Par daniel.moreda dans le forum Framework .NET
    Réponses: 1
    Dernier message: 27/09/2011, 16h38
  3. Erreur de syntaxe dans l'instruction INSERT INTO
    Par doolar dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/05/2008, 15h37
  4. Erreur de syntaxe dans l'instruction INSERT INTO
    Par logiciel_const dans le forum Bases de données
    Réponses: 8
    Dernier message: 19/03/2008, 10h57
  5. erreur de syntaxe dans l'instructiuon insert into
    Par greg64 dans le forum Access
    Réponses: 6
    Dernier message: 13/04/2006, 14h07

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