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 :

Requête Insertion avec un TQuery


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut Requête Insertion avec un TQuery
    bonjour

    jai fait une requete sql insertion mais jai rencontrer un peu de probleme linsertion ce fait en double et affiche le message derreur suivant :

    'error creating cursor hundle'

    voila le program :
    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 TForm3.Button1Click(Sender: TObject);
    var requete : string;
    begin
    requete := 'insert into Table_Client(Code_Client,Nom_Client,Prenom_Client,Adress_Client,Tel_Client,Code_Postal) Values(:x1,:x2,:x3,:x4,:x5,:x6)';
    form2.query1.active := False ;
    form2.query1.sql.clear;
    form2.query1.sql.add(requete);
    form2.query1.parambyname('x1').asinteger := strtoint(edit1.Text);
    form2.query1.parambyname('x2').asstring := edit2.text;
    form2.query1.parambyname('x3').asstring := edit3.text;
    form2.query1.parambyname('x4').asstring := edit4.text;
    form2.query1.parambyname('x5').asinteger := strtoint(edit5.Text);
    form2.query1.parambyname('x6').asinteger := strtoint(edit6.Text);
    form2.query1.execsql;
    form2.query1.active := True;
    end;

    merci

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 416
    Points : 5 814
    Points
    5 814
    Par défaut
    salut

    Citation Envoyé par delphino7 Voir le message
    bonjour

    ...
    requete := 'insert into Table_Client(Code_Client,Nom_Client,Prenom_Client,Adress_Client,Tel_Client,Code_Postal) Values(1,2,3,4,5,6)';
    form2.query1.active := False ;
    form2.query1.sql.clear;
    form2.query1.sql.add(requete);
    form2.query1.parambyname('x1').asinteger := strtoint(edit1.Text);
    form2.query1.parambyname('x2').asstring := edit2.text;
    form2.query1.parambyname('x3').asstring := edit3.text;
    form2.query1.parambyname('x4').asstring := edit4.text;
    form2.query1.parambyname('x5').asinteger := strtoint(edit5.Text);
    form2.query1.parambyname('x6').asinteger := strtoint(edit6.Text);
    form2.query1.execsql;

    form2.query1.active := True;


    end;

    merci
    le query1.active n'est pas correct
    le Tquery est capable de faire deux choses
    soit d'exectuter un requete de "mise à jour" (insert,delete,update) dans ce cas la tu utilise execsql

    soit une requette d'obtention de donnée et la tu utilise open ou active

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut c bon j trouver lerreur
    voila le bon program pour linsertion :

    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
     
    procedure TForm3.Button1Click(Sender: TObject);
    var requete,x2,x3,x4 : string;
    x1,x5,x6 : integer;
    begin
    x1:= strtoint(edit1.text);
    x2:= edit2.Text; x3:= edit3.Text; x4:= edit4.Text; x5:= strtoint(edit5.Text);
    x6:= strtoint(edit6.Text);
    requete := 'insert into Table_Client(Code_Client,Nom_Client,Prenom_Client,Adress_Client,Tel_Client,Code_Postal) Values(:x1,:x2,:x3,:x4,:x5,:x6)';
    form2.query1.close;
    form2.query1.sql.clear;
    form2.query1.sql.add(requete);
    form2.query1.parambyname('x1').asinteger := strtoint(edit1.Text);
    form2.query1.parambyname('x2').asstring := edit2.text;
    form2.query1.parambyname('x3').asstring := edit3.text;
    form2.query1.parambyname('x4').asstring := edit4.text;
    form2.query1.parambyname('x5').asinteger := strtoint(edit5.Text);
    form2.query1.parambyname('x6').asinteger := strtoint(edit6.Text);
    form2.query1.execsql;
    end;
    mercitous ce qui mon aider

    maintenant je cherche la suppression et la modification ?

  4. #4
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut problem de suppression
    bonjour

    le program ne se compile pas le cursue ce met en debut de ligne la ou c ecrit requete :='delete......................' et en bas d elunite il maffiche 'unterminated string
    missing operator or semicolon
    could not compile '

    voila le program :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm2.Button2Click(Sender: TObject);
    var requete : string;
    begin
    requete:='deletefromTable_clientwherecode_client=strtoint('+quotedstr(edit1.text)';
    query1.close;
    query1.SQL.Clear;
    query1.SQL.Add(requete);
    query1.ExecSQL;
    end;
    merci

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Essaye plutôt comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm2.Button2Click(Sender: TObject);
    var 
      requete: string;
    begin
      requete := 'delete from Table_client where code_client = ' + StrToInt(edit1.text);
      query1.Close;
      query1.SQL.Clear;
      query1.SQL.Add(requete);
      query1.ExecSQL;
    end;
    @+ Claudius

  6. #6
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut suppression d'un record dans une BD
    avec ce program le projet ce compil mais quand je click sur le button delete il mafiche lerreur suivante :

    'general sql error'
    strtoint is not recognezed functio name


    voila le source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm2.Button2Click(Sender: TObject);
    var requete : string;
    begin
    requete := 'delete from Table_client where code_client=strtoint('+quotedstr(edit1.text)+')';
    query1.close;
    query1.SQL.Clear;
    query1.SQL.Add(requete);
    query1.ExecSQL;
    end;
    merci

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Regarde ma réponse au dessus.

  8. #8
    Membre du Club Avatar de milaybe
    Inscrit en
    Décembre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 58
    Points : 58
    Points
    58
    Par défaut
    Bonjour,
    et si on omet le StrToInt et on met à la place Quotedstr tout simplement, comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    requete:= 'delete from Table_client where code_client = ' + QuotedStr(edit1.text);
    Est-ce qu'il y aura un problème?
    Help, Déboguer = solutions

  9. #9
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut le meme message derreur saffiche
    Citation Envoyé par Cl@udius Voir le message
    Regarde ma réponse au dessus.
    avec ce program le meme message derreur saffiche:

    'general error '

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm2.Button2Click(Sender: TObject);
    var requete : string;
    begin
    requete := 'delete from Table_client where code_client=' + (edit1.text);
    query1.close;
    query1.SQL.Clear;
    query1.SQL.Add(requete);
    query1.ExecSQL;
    end;
    merci

  10. #10
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    avec cette requete il supprime mais de que je ferme la form et je louvre une deuxieme fois l'enregistrement reaparait

    la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete:= 'delete from Table_client where code_client = ' + QuotedStr(edit1.text);

    mais moi je veux le supprimer difinitivement

  11. #11
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Bon reprenons depuis le début.

    1. Quel SGBD utilises-tu ?
    2. Quel est le type du champ Code_Client ?
    3. Utilises-tu des transactions ? Si oui, as-tu fait un Commit après le Delete ?


    @+ Claudius

  12. #12
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut sgbdr sql server
    le type du champ Code_client est integer (4)

  13. #13
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 416
    Points : 5 814
    Points
    5 814
    Par défaut
    salut

    si le champs est de type entier il ne doit pas y avoir de quote

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    requete := format('delete from Table_client where code_client= %s ',[edit1.text]);
    query1.close;
    query1.SQL.Clear;
    query1.SQL.Add(requete);
    query1.ExecSql;

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  14. #14
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut ok
    je vais esayer sa et je vous tien au courant merci

  15. #15
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut desole les amis les trois methode sont juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete := format('delete from Table_client where code_client= %s ',[edit1.text]);
    juste elle marche

    aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete := format('delete from Table_client where code_client= '+quotedstr(edit1.text);
    juste elle marche

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete := format('delete from Table_client where code_client= '+(edit1.text);
    juste elle marche
    encore une fois désolé c t une erreur de ma par

    maintenant voila quand je supprime l'enregistrement le dbgrid devien blanc les enregitrement disparesse comme si le tquery ce vide
    quand je ferme la form et je louvre une deuxieme fois lenregistrement que jai supprimer napparé pas c tout afait normal parce que je lé supprimé les autres enregistrement apparesse moi ce que je veudrai si c possible
    quand je supprime le tquery ne se vide ou bien ne se ferme pas seulement l'enregistrement que je supprime disparesse

    merci a vous tous

  16. #16
    Membre du Club Avatar de milaybe
    Inscrit en
    Décembre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 58
    Points : 58
    Points
    58
    Par défaut
    Je n'ai pas très bien compris ce que tu essaie de dire, mais je penses que la réponse se trouve dans les questions de Claudius:
    Citation Envoyé par Claudius
    Utilises-tu des transactions ? Si oui, as-tu fait un Commit après le Delete ?
    Help, Déboguer = solutions

  17. #17
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut requete delete
    bonjour milaybe ta requete est juste c moi qui na pas su lutiliser

    et la requete de claudius est juste aussi


    merci a vous tous

    maintenant je vais attaquer la modification 'update'


    merci

  18. #18
    Membre du Club Avatar de milaybe
    Inscrit en
    Décembre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 58
    Points : 58
    Points
    58
    Par défaut
    Ravi d'avoir pu t'aider.

    Bonne progr

    Sinon, n'oublies pas le tag Résolu
    Help, Déboguer = solutions

  19. #19
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut la modification avec le Tquery (update) ?
    salut tout le monde

    es que quelqu'un peu maider a trouver comment faire une modification sur un enregistrement n sachant que je fait une recherche dabord je 'filtre ' dé que je trouve l'enregistrement je click sur le boutton modifier il me donne l'enregistrement que j'ai dans ma recherche (les champ a modifier) et de valider la modification

    je veux juste un exemple si c possible


    merci

  20. #20
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 416
    Points : 5 814
    Points
    5 814
    Par défaut
    salut

    pour la modification il faut connaitre la clé ensuite le reste n'est pas super compliqué au meme titre qu'un insert ou un delete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Update MATABLE 
     set MONCHAMP1 = MAVALEUR1 ,
          MONCHAMP2 = MAVALEUR2 
        ...
     where MONCHAMPSCLE = MAVALEURCLE
    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

Discussions similaires

  1. Requête INSERT avec Regroupement
    Par curt dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/02/2009, 23h03
  2. requête insert avec boucle ?
    Par Kropernic dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/09/2008, 15h24
  3. Pb Requête INSERT avec QBE
    Par jubi73 dans le forum Paradox
    Réponses: 4
    Dernier message: 04/09/2007, 15h20
  4. Requête INSERT avec 2 requêtes sélection (2 tables)
    Par JiB@ dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/02/2007, 16h31
  5. Requête : Insert avec plusieurs tables
    Par bleu_ciel dans le forum Access
    Réponses: 4
    Dernier message: 01/06/2006, 21h42

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