Jenojen
Messages postés12Date d'inscriptionsamedi 1 décembre 2007StatutMembreDernière intervention28 août 2008
-
26 août 2008 à 16:49
Jenojen
Messages postés12Date d'inscriptionsamedi 1 décembre 2007StatutMembreDernière intervention28 août 2008
-
27 août 2008 à 11:39
Bonjour,
J'aurais bien besoin d'aide sur ce problème.
procedure Tgestionparis.dbChevauxDblClick(Sender: TObject);
var truc:integer;
begin
truc:=dm.DsParticiper.fieldbyname('idcheval').asinteger;
with dm.queryExe do
begin
sql.clear;
sql.add('insert into tparier (idcheval) values (');
sql.add(truc)+')';
// sql.add(quotedstr(inttostr(truc)))+')';
ExecSQL;
sql.text:= 'select * from tcourses';
open;
end;
end;
J'ai donc tenté ça + la ligne qui est en commentaitre mais j'ai droit à: - Identificateur non déclaré: Fieldbyname
-Opérateur ou point virgule manquant sur la première ligne de code.
-Et type incompatible sur la ligne avec le quotedstr. (Le champ idcheval est un numérique)
Alors j'ai deux questions.
Ma méthode, chaud ou froid?
Et pourquoi ces problèmes?
Premièrement je ne comprends pas le problème avec fieldbyname et avec l'opérateur sur la première ligne.
Deuxièmement je ne comprend pas pourquoi les types sont incompatibles.
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 26 août 2008 à 17:36
Bonjour,
Partant du principe que DsParticiper est un datasource, écris plutôt :
truc:= dm.DsParticiper. DataSet. fieldbyname('idcheval').asinteger;
Pour la requête :
sql.clear;
sql.add('insert into tparier (idcheval) values (');
SQL.Add(IntToStr(truc)+')'); ExecSQL;
SQL.Clear; sql.text: = 'select * from tcourses';
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 26 août 2008 à 17:40
Ou plus simplement :
var truc : string; begin
truc:=dm.DsParticiper.Dataset.fieldbyname('idcheval').AsString;
with dm.queryExe do
begin
sql.clear;
sql.add('insert into tparier (idcheval) values (');
sql.add(truc +')');
Jenojen
Messages postés12Date d'inscriptionsamedi 1 décembre 2007StatutMembreDernière intervention28 août 2008 26 août 2008 à 17:50
Merci pour ta réponse.
Pour le problème fieldbyname j'avais compris mon erreur.
Pour ce qui est du code en lui même la première solution me dit que la conversion de type variant est incorrecte et idem pour la deuxième solution. Le truc la dedans c'est que c'est vraiment un problème de conversion string/integer.
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 27 août 2008 à 09:01
Bé c'est marrant mais j'ai aussi cette erreur de temps en temps (ouais, je suis pas le seul !)... A savoir un insert qui me plante sur les champ entier... Impossible de passer ma requête sauf par une sous requête. Est-ce un défaut paradox ?
Ça devrait passer... mais je voudrais bien savoir s'il y a un moyen de contourner ce problème, parce que les sous requêtes, c'est pas toujours possible ou alors des fois c'est un peu lourd...
Simon
Vous n’avez pas trouvé la réponse que vous recherchez ?
Jenojen
Messages postés12Date d'inscriptionsamedi 1 décembre 2007StatutMembreDernière intervention28 août 2008 27 août 2008 à 11:39
J'ai réussi à régler le problème.
with dm.queryExe do
begin
sql.clear;
sql.add('insert into tparier (i idcheval) values (');
sql.add(dm.tParticiper.fieldbyname('idcheval').asstring + ')');
ExecSQL;
sql.text:= 'select * from tcourses';
open;
end;