Enregistrer une clé auto incrément en delphi

Résolu
baronmbk Messages postés 24 Statut Membre -  
baronmbk Messages postés 24 Statut Membre -
Slt les amis. Je travaille sur un petit projet personnel où j'ai lié mon application delphi à sql server 2008. Cependan, j'ai du mal à enregistrer des données dans sql quand la clé primaire de ma table "Frais" est de type auto-incrément. J'utilise ADOCommande et ADOConnection. Quelqu'un pourrait m'aider?

Voici un extrait de mon code:


adoc1.CommandText := 'INSERT INTO frais VALUES(:idF, :libF, :tarF, echF)';
adoc1.Parameters.ParamValues['idF'] := edtCodeF.Text;//identifiant
adoc1.Parameters.ParamValues['libF'] := edtLibF.Text; //Libellé frais
adoc1.Parameters.ParamValues['tarF'] := strtoint(edtTarF.Text);//Tarif ou montant à payer
adoc1.Parameters.ParamValues['echF'] := dtpEchF.Text;//Echéance
adoc1.Execute;

showmessage('Succès!');

1 réponse

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour
    Si idf auto incrémente.. ne pas la renseigner dans la requete sql...
    Et utiliser la syntaxe
    INSERT INTO tatable (champ1, champ2..)
    VALUES( 'val1', 'val2', .. )
    
    

    0
    1. baronmbk Messages postés 24 Statut Membre
       
      Merci beaucoup pour votre aide. J'ai revu mon code en enlevant le champ de l'identifiant dans la requête sql et en ajoutant quelques petites corrections.


      adoc1.CommandText := 'INSERT INTO frais(LibelléF, TarifF, EcheanceF) VALUES(:libF, :tarF, echF)';
      adoc1.Parameters.ParamValues['libF'] := edtLibF.Text; //Libellé frais
      adoc1.Parameters.ParamValues['tarF'] := strtofloat(edtTarF.Text);//Tarif ou montant à payer
      adoc1.Parameters.ParamValues['echF'] := dtpEchF.Date;//Echéance
      adoc1.Execute;

      showmessage('Succès!');



      Maintenant je reçois l'erreur suivante: "Echec de ka conversion de la date et/ou de l'heure à partir d'une chaîne de caractère"
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Que contient dtpEchF.Date ?
      Je suppose, vu le message d'erreur, qu'il s'agit d'une "string"... hors toi tu sembles attendre une date.
      Il te faut certainement faire une conversion...
      0
    3. baronmbk Messages postés 24 Statut Membre
       
      dtpEchF.Date est un datetimepicker qui contient la date d'échéance.
      0
    4. baronmbk Messages postés 24 Statut Membre
       
      J'ai finalement compris que le datetimepicker n'a en fait pas besoin de convertir sa valeur parce que sa propriété datetime fait automatiquement la conversion. Je me trompais plutôt en essayant d'utiliser la propriété date qui pourtant ne fonctionnait pas. Maintenant ça marche. :)

      Merci bcp pour ton assistance.
      0