Article View: comp.lang.pascal.delphi.databases
Article #157Insert : OK. Modify and delete : "Update Failed"
From: Fran�ois Delaby
Date: Thu, 23 Oct 1997 00:00
Date: Thu, 23 Oct 1997 00:00
181 lines
9561 bytes
9561 bytes
--------------47F0FFAB3A5922759B8AA4E7
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Hello.
I use Delphi 3.0 with ODBC and SQL server 6.5.
I have a TQuery wich has a SQL property like that :
select idf, date
from mytable
order by date
I have a second TQuery wich has
select *
from mytable
order by date
The second TQuery has Src1 as DataSource property (Src1 has Query1 as
DataSet property).
When I try to insert a new value in the Query2, all is going well.
When I try to remove or modify a record, it sends a error message :
"Update Failed".
All TQuery CachedUpdate properties are TRUE, RequestLive too.
I have a UpdateRecord procedure like that
procedure TBiologieDtMdl.QueryUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
begin
with (DataSet as TQuery).UpdateObject as TUpdateSQL do
begin
SetParams(UpdateKind) ;
// Here, all values seems good
MessageDlg(FloatToStr((DataSet as
TQuery).FieldByName('Id').AsFloat)+#13+#10+
FloatToStr(DataSet.FieldByName('Id').NewValue)+#13+#10+
FloatToStr(DataSet.FieldByName('Id').OldValue)+#13+#10+
FloatToStr((DataSet as
TQuery).FieldByName('Id_Centre').AsFloat)+#13+#10+
FloatToStr(DataSet.FieldByName('Id_Centre').NewValue)+#13+#10+
FloatToStr(DataSet.FieldByName('Id_Centre').OldValue)+#13+#10+
DateToStr((DataSet as
TQuery).FieldByName('Date').AsDateTime)+#13+#10+
DateToStr(DataSet.FieldByName('Date').NewValue)+#13+#10+
DateToStr(DataSet.FieldByName('Date').OldValue)+#13+#10+
(DataSet as
TQuery).FieldByName('quantite').AsString+#13+#10+
DataSet.FieldByName('quantite').NewValue+#13+#10+
DataSet.FieldByName('quantite').OldValue,
mtInformation, [mbOk], 0);
if UpdateKind = ukInsert then
begin
Query[UpdateKind].ParamByName('Id_Patient').AsFloat := Id.Idf ;
Query[UpdateKind].ParamByName('Id_Centre').AsFloat := Id.IdfCentre
;
Query[UpdateKind].ParamByName('Date').AsDateTime := FDate ;
end ;
try
ExecSQL(UpdateKind) ; // Here, it doesn't work with UpdateKind =
ukModify or ukDelete
except
MessageDlg('Impossible de mettre � jour la base', mtError, [mbOk],
0);
UpdateAction := uaFail ;
raise ;
end ;
end ;
UpdateAction := uaApplied ;
end;
Any suggestions ?
Fran�ois Delaby.
--------------47F0FFAB3A5922759B8AA4E7
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
<HTML>
Hello.
<P>I use Delphi 3.0 with ODBC and SQL server 6.5.<BR>
I have a TQuery wich has a SQL property like that :
<BR> select idf, date
<BR> from mytable
<BR> order by date
<BR>I have a second TQuery wich has
<BR> select *
<BR> from mytable
<BR> order by date
<BR>The second TQuery has Src1 as DataSource property (Src1 has Query1
as DataSet property).
<BR>When I try to insert a new value in the Query2, all is going well.
<BR>When I try to remove or modify a record, it sends a error message :
"Update Failed".
<P>All TQuery CachedUpdate properties are TRUE, RequestLive too.
<BR>I have a <FONT FACE="Arial,Helvetica"><FONT SIZE=-1>UpdateRecord procedure
like that</FONT></FONT><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>procedure TBiologieDtMdl.QueryUpdateRecord(DataSet:
TDataSet;</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> UpdateKind: TUpdateKind;
var UpdateAction: TUpdateAction);</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>begin</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> with (DataSet as
TQuery).UpdateObject as TUpdateSQL do</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> begin</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> SetParams(UpdateKind)
;</FONT></FONT><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>// Here, all values seems
good</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> MessageDlg(FloatToStr((DataSet
as TQuery).FieldByName('Id').AsFloat)+#13+#10+</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
FloatToStr(DataSet.FieldByName('Id').NewValue)+#13+#10+</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
FloatToStr(DataSet.FieldByName('Id').OldValue)+#13+#10+</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
FloatToStr((DataSet as TQuery).FieldByName('Id_Centre').AsFloat)+#13+#10+</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
FloatToStr(DataSet.FieldByName('Id_Centre').NewValue)+#13+#10+</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
FloatToStr(DataSet.FieldByName('Id_Centre').OldValue)+#13+#10+</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
DateToStr((DataSet as TQuery).FieldByName('Date').AsDateTime)+#13+#10+</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
DateToStr(DataSet.FieldByName('Date').NewValue)+#13+#10+</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
DateToStr(DataSet.FieldByName('Date').OldValue)+#13+#10+</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
(DataSet as TQuery).FieldByName('quantite').AsString+#13+#10+</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
DataSet.FieldByName('quantite').NewValue+#13+#10+</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
DataSet.FieldByName('quantite').OldValue,</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
mtInformation, [mbOk], 0);</FONT></FONT><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> if UpdateKind
= ukInsert then</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> begin</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
Query[UpdateKind].ParamByName('Id_Patient').AsFloat := Id.Idf ;</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
Query[UpdateKind].ParamByName('Id_Centre').AsFloat := Id.IdfCentre ;</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
Query[UpdateKind].ParamByName('Date').AsDateTime := FDate ;</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> end ;</FONT></FONT><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> try</FONT></FONT><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
ExecSQL(UpdateKind) ; // Here, it doesn't work with UpdateKind = ukModify
or ukDelete</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> except</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
MessageDlg('Impossible de mettre à jour la base', mtError, [mbOk],
0);</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
UpdateAction := uaFail ;</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>
raise ;</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> end ;</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> end ;</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> UpdateAction := uaApplied
;</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>end;</FONT></FONT>
<P>Any suggestions ?
<P>François Delaby.</HTML>
--------------47F0FFAB3A5922759B8AA4E7--
Technical Details
Message-ID:
<344F7CAD.AB1B74FE@univ-lille2.fr>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII X-Google-Thread: ffff5,7b033c865d3e16f3,start X-Google-Attributes: gidffff5,public X-Google-Thread: 10de66,7b033c865d3e16f3,start X-Google-Attributes: gid10de66,public From: "Fran�ois Delaby" <delaby@univ-lille2.fr> Subject: Insert : OK. Modify and delete : "Update Failed" Date: 1997/10/23 Message-ID: <344F7CAD.AB1B74FE@univ-lille2.fr> X-Deja-AN: 282650415 X-Priority: 3 (Normal) Organization: Universite des Sciences et Technologies de LILLE, France Newsgroups: comp.lang.pascal.delphi.databases,borland.public.delphi.database.sqlservers