The connection is set up as:
SQLConnection -> SQLDataSet -> DataSetProvirer -> ClientDataSet
The SQLDataSet has the float fields provider flags are set to pfinUpdate only and it does not matter what update method I use for the DataSetProvder updade mode upwhereall, upwhereupdate, upwherekey, nothing works.
The error is
"Clientdataset1: Must apply updates before refreshing data"
any help would be appreciated,
Thanks, Peter
Code: Select all
unit float_test;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DbxDevartMySql, FMTBcd, DB, Grids, DBGrids, DBClient, Provider,
SqlExpr, StdCtrls;
type
TForm1 = class(TForm)
SQLConnection1: TSQLConnection;
SQLDataSet1: TSQLDataSet;
DataSetProvider1: TDataSetProvider;
ClientDataSet1: TClientDataSet;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
ClientDataSet1Recnum: TIntegerField;
ClientDataSet1Instrument_code: TSmallintField;
ClientDataSet1Date: TDateField;
ClientDataSet1Time: TTimeField;
ClientDataSet1Start_levelpercent: TFloatField;
ClientDataSet1Comments: TWideStringField;
Button1: TButton;
SQLDataSet1Recnum: TIntegerField;
SQLDataSet1Instrument_code: TSmallintField;
SQLDataSet1Date: TDateField;
SQLDataSet1Time: TTimeField;
SQLDataSet1Start_levelpercent: TFloatField;
SQLDataSet1Comments: TWideStringField;
SQLMonitor1: TSQLMonitor;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
clientdataset1.append;
clientdataset1.edit;
clientdataset1.FindField('Date').AsString := DatetoStr(Date);
clientdataset1.FindField('Time').AsString := TimetoStr(Time);
clientdataset1.FindField('Instrument_Code').AsInteger :=22;
clientdataset1.FindField('Comments').AswideString := 'test' ;
clientdataset1.FindField('Start_level[percent]').AsFloat:=23.45;
clientdataset1.ApplyUpdates(-1);
clientdataset1.Refresh;
clientdataset1.refresh;
clientdataset1.Last;
end;
end.