Enregistrer une clé auto incrément en delphi

Résolu/Fermé
baronmbk Messages postés 18 Date d'inscription mercredi 12 août 2015 Statut Membre Dernière intervention 1 septembre 2018 - 31 août 2018 à 00:28
baronmbk Messages postés 18 Date d'inscription mercredi 12 août 2015 Statut Membre Dernière intervention 1 septembre 2018 - 1 sept. 2018 à 20:11
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!');

A voir également:

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
31 août 2018 à 07:20
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
baronmbk Messages postés 18 Date d'inscription mercredi 12 août 2015 Statut Membre Dernière intervention 1 septembre 2018
31 août 2018 à 18:45
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
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
31 août 2018 à 19:08
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
baronmbk Messages postés 18 Date d'inscription mercredi 12 août 2015 Statut Membre Dernière intervention 1 septembre 2018
31 août 2018 à 20:46
dtpEchF.Date est un datetimepicker qui contient la date d'échéance.
0
baronmbk Messages postés 18 Date d'inscription mercredi 12 août 2015 Statut Membre Dernière intervention 1 septembre 2018
1 sept. 2018 à 20:11
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