Enregistrer une clé auto incrément en delphi

Résolu
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. Modérateur
    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. 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. Modérateur
      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. dtpEchF.Date est un datetimepicker qui contient la date d'échéance.
      0
    4. 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