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 SQL


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Points : 10
    Points
    10
    Par défaut erreur de SQL
    Bonjour,
    j'utilise avec delphi interbase.
    je voudrai juste ajouter un enregistrement dans une table contacts .
    voici mon code :
    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
    procedure TAjout_contact.Button1Click(Sender: TObject);
    var id_contact :integer;
    num_serveur:integer;
     
    begin
    num_serveur:=1;
    DMcode.DONNE_NUM_CONTACT.ExecProc;
    id_contact:= DMcode.DONNE_NUM_CONTACT.ParamByName('ID_CONTACT').AsInteger;
    DMcode.DONNE_NUM_CONTACT.close;
     
    //DMcode.contacts.close;
    DMCode.IBSQL1.SQL.Clear;
    DMCode.IBSQL1.SQL.Add('insert into CONTACTS (ID_CONTACT, SERVEUR, SIRET,SERVEUR_SIRET,NOM,PRENOM,CIVILITE,TELEPHONE,PORTABLE,EMAIL,FONCTION) VALUES ('+ inttostr(id_contact) + ','+ inttostr(num_serveur) +',' + DMCode.Prospects.FieldByName('SIRET').AsString + ','+ DMCode.Prospects.FieldByName('serveur').Asstring +','+NOM.text+','+PRENOM.text+','+ComboBox1.text+','+TEL.text+','+PORT.text+','+EMAIL.text+','+Fonction.text+' )');
    DMCode.IBSQL1.ExecQuery;
    DMCode.IBSQL1.Close;
    id_contact est un générateur, siret et serveur_siret viennent d'une autre base et les autres proviennent d'un TEdit que l'on doit remplir...

    Mon message d'erreur est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dynamic error SQL
    SQL error code =-206
    column unknow
    BERTRAND
    AT line 1, column 149
    merci beaucoup

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TAjout_contact.Button1Click(Sender: TObject);
    var id_contact :integer;
    num_serveur:integer;
    
    begin
    num_serveur:=1;
    DMcode.DONNE_NUM_CONTACT.ExecProc;
    id_contact:= DMcode.DONNE_NUM_CONTACT.ParamByName('ID_CONTACT').AsInteger; 
    //  Gros doute que ca focntionne comme çà. a mon avis tu aurais un meilleur resulat avec FieldByName.
    DMcode.DONNE_NUM_CONTACT.close;
    T'as pas plus long comme ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DMCode.IBSQL1.SQL.Add('insert into CONTACTS (ID_CONTACT, SERVEUR, SIRET,SERVEUR_SIRET,NOM,PRENOM,CIVILITE,TELEPHONE,PORTABLE,EMAIL,FONCTION) VALUES ('+ inttostr(id_contact) + ','+ inttostr(num_serveur) +',' + DMCode.Prospects.FieldByName('SIRET').AsString + ','+ DMCode.Prospects.FieldByName('serveur').Asstring +','+NOM.text+','+PRENOM.text+','+ComboBox1.text+','+TEL.text+','+PORT.text+','+EMAIL.text+','+Fonction.text+' )');
    en fait, ta requete est fausse car tu n'indiques pas dans ton insert si tu insère un champ numérique ou alphanumérique.
    Quand tu as beaucoup de champ à insérer les paramètres sont de rigueur
    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
     
    //DMcode.contacts.close;
    DMCode.IBSQL1.SQL.Clear;
    DMCode.IBSQL1.SQL.Add('insert into CONTACTS (ID_CONTACT, SERVEUR, SIRET,SERVEUR_SIRET,NOM,PRENOM,CIVILITE,TELEPHONE,PORTABLE,EMAIL,FONCTION)');
    DMCode.IBSQL1.SQL.Add('VALUES (:CONTACT,:NSERVEUR,:SIRET,:SERVEUR,:NOM,:PRENOM,:LACOMBO,:TELEPHONE,:PORT,:MAIL,:FONCTION)');
    DMCODE.IBSQL1.ParamByName('CONTACT').Value := id_contact;
    DMCODE.IBSQL1.ParamByName('NSERVEUR').Value :=  num_serveur;
    DMCODE.IBSQL1.ParamByName('SIRET').Value := DMCode.Prospects.FieldByName('SIRET').AsString;
    DMCODE.IBSQL1.ParamByName('SERVEUR').Value := DMCode.Prospects.FieldByName('serveur').Asstring
    DMCODE.IBSQL1.ParamByName('NOM').Value := NOM.text;
    DMCODE.IBSQL1.ParamByName('PRENOM').Value := PRENOM.text;
    DMCODE.IBSQL1.ParamByName('LACOMBO').Value := ComboBox1.text;
    DMCODE.IBSQL1.ParamByName('TELEPHONE').Value := TEL.text;
    DMCODE.IBSQL1.ParamByName('PORT').Value := PORT.text;
    DMCODE.IBSQL1.ParamByName('MAIL').Value := EMAIL.text;
    DMCODE.IBSQL1.ParamByName('FONCTION').Value := Fonction.text;
    DMCode.IBSQL1.ExecQuery;
    DMCode.IBSQL1.Close;
    Essai comme ca, si ca ne fonctionne pas, remplace (si possible) les Value par des AsString,Asinteger, etc... selon le type de champ.
    Modérateur Delphi

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

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Avec ta méthode il met une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    violation of foreign key constraint "FK_SIRER_CONTACTS" on table contacts
    les deux champs SIRET et SERVEUR_SIRET sont des clés étrangères.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Je vous récris l'erreur :
    Avec ta méthode il met une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    violation of foreign key constraint "FK_SIRER_CONTACTS" 
    on table contacts
    les deux champs SIRET et SERVEUR_SIRET sont des clés étrangères.

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/12/2005, 13h13
  2. Réponses: 10
    Dernier message: 26/01/2005, 19h48
  3. [CE10 Pro] Erreur Connexion SQL pour etats publiés
    Par L.nico dans le forum Connectivité
    Réponses: 1
    Dernier message: 09/12/2004, 17h16
  4. catch des erreurs dans SQL+
    Par lalystar dans le forum Oracle
    Réponses: 2
    Dernier message: 21/09/2004, 15h17
  5. message d'erreur "Microsoft SQL-DMO"
    Par tachi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/08/2004, 11h47

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