Ouai comme tu dis c très étrange, mon avis c'est comme nous l'avons dit avec Malatar de rester sur la première soluce et de régler ce problème d'arrondi, mon screen t'en a-t-il révélé plus malatar ?
Ouai comme tu dis c très étrange, mon avis c'est comme nous l'avons dit avec Malatar de rester sur la première soluce et de régler ce problème d'arrondi, mon screen t'en a-t-il révélé plus malatar ?
Envoyé par RodEpsi
Qu'un réel double c'est un peu beaucoup pour un nombre d'heure à facturer![]()
![]()
Non le pas à pas s'arrête sur ADOQueryAjoutHeures mais de toute façon il est certain que l'erreur vienne de là puisque lorsque je vire ce paramètre dans la requête tout mon programme s'execute correctement.
Envoyé par Malatar
Malheureusement la bdd est une bdd existante mise en place par une autre société et alimentant un logiciel existant, ce n'est donc pas moi qui ai déterminé la structure de cette table et je ne pe absolument pas la modifier.
Mouais, bin franchement leur table bof bof, il respecte même pas les règles de nommage des champs (Accents, espace), enfin bon, c'est un avis personnelEnvoyé par RodEpsi
La je seche completement, je vois pas d'où peut venir ton problème.
Quand j'insère dans un champ réel double via une requete ca fonctionne très bien chez moi.
Quel version de delphi tu as ?
As tu mis à jour les MDAC ?
Delphi 7.0 et le MDAC je sais même pas ce que c'est. Moi je développe bêtement![]()
MDAC = Microsoft Data Access ComponentsEnvoyé par RodEpsi
selon les version de windows il est plus ou moins a jours (sur 2k et + ca se met a jour tout seul)
sinon a tu fais l'update de delphi 7 ?
je sui en train de créer un nouveau projet avec une fenêtre vide, ma requete insert et je vais essayer d'insérer comme ça pour voir. Si ça marche pas je ferai les mises à jour (ce que j'ai oublié de te préciser c ke les valeurs ke je récupère dans mes variables (enfin dans la variable terrain) c'est des valeurs que je récupère dans un fichier excel, au format 0.00) je c pas si ça change quelque chose mé bon ...
Envoyé par Malatar
Comment tu as fais pour que ça marche de ton côté car moi g crée un nouveau projet avec une fenêtre et un bouton tout bête sur lequel doit être executée la requête insert into et j'ai toujours la m^mee erreur, peux-tu medonner tous les éléments stp ?
en fait j'ai du nouveau, je me suis aperçu que l'insertion se faisait bien une première fois quand je clique sur le bouton qui execute ma requête, mais si je clique une deuxième fois dessus c'est là que le problème d'incompatibilité des types intervient.
C'est pour ça que ce matin je t'avais dit que j'avais l'erreur mais que j'avais quand même eu l'insertion de l'enregistrement dans ma table.
Or comme j'ai plusieurs enregistrements à insérer c'est pour ça que ça ne marche pas c'est étonnant ce n'est pas lié à ma boucle puisque comme je t'ai dis si je ne tiens plu compte de ce paramètre dans ma requête celle ci s'execute bien ainsi que tout mon code. De plus dans le nouveau petit projet avec ma fenêtre unique et mon bouton que j'ai crée il n'y a pas de boucle mon code est le suivant :
procedure TForm1.Button1Click(Sender: TObject);
var toto : Double;
begin
toto:=3.75;
ADOQuery1.Close;
ADOQuery1.Parameters[0].Value:=39;
ADOQuery1.Parameters[1].Value:=toto;
ADOQuery1.Parameters[2].Value:=3;
ADOQuery1.ExecSQL;
showmessage('ok');
Donc en cliquant une fois sur le bouton ça marche j'ai même la boite de dialogue avec "Ok" qui apparait mais si je click une seconde fois c'est là que survient l'erreur.
Essaie comme ça, ca marchera beaucoup mieux. J'ai fait un prog avec ta methode (Parameters[x]) et la mienne (Parameters.ParamByName), au bout du deuxieme clic de bouton j'ai eu une erreur avec ta methode, et pas d'erreur avec la mienne.
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
21
22
23 var ref_fiche, c_employe, RefProjet: Integer; DateTache: TDate; terrain: real; begin With AdoQueryAjoutHeures do begin Close; SQL.Clear; SQL.add('INSERT INTO Heures (RéfFicheHoraire, CodeEmployé, DateTâche, RéfProjet, HeuresAFacturer, RéfCodeTâche)'); SQL.Add('VALUES (:ref_fiche, :ref_employe, :date_tache, :ref_projet, :heures, :ref_tache);'); ParamCheck := True; Parameters.ParamByName('ref_fiche').Value:=ref_fiche; Parameters.ParamByName('ref_employe').Value:=c_employe; Parameters.ParamByName('date_tache').Value:=DateTache; Parameters.ParamByName('ref_projet').Value:=RefProjet; Parameters.ParamByName('heures').Value:=terrain; Parameters.ParamByName('ref_tache').Value:=1; ExecSQL; end; end;
Avec l'aide d'un pote j'ai trouvé l'erreur, tu vas rigoler quand tu vas savoir ce que c'était et d'ailleurs je n'arrive pas à comprendre mais en mettant mon paramètre "heures" qui est censé gérer un réel en WideString et bien plus aucune erreur, ma table se rempli correctement et tout va bien![]()
C'est pas normal, enfin bon je te conseil la méthode que je t'ai donné plus haut, qui est plus fiable et plus lisible que des [0],[1], etc ... car on a direct le nom du paramètre.Envoyé par RodEpsi
De plus si un jour tu rajoutes un paramètre au milieu tu vas être obliger de renumeroter, alors qu'avec le ParamByName, pas besoin.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager