在画面上放置一个EDIT和一个TIMER,TIMER扫描signal表的weight字段,EDIT用来显示此字段的值,如果这个字段值发生改变,EDIT要随时更新,代码如下:
procedure TPrintLabel.Timer1Timer(Sender: TObject);
var
PWeight:integer;
begin
//sinal form
if DataModule2.SignalFormADODataSet.Active=False then
DataModule2.SignalFormADODataSet.Active:=True;
DataModule2.SignalFormADODataSet.First;
PWeight:=DataModule2.SignalFormADODataSet.FieldByName('WEIGHT').AsInteger;
if PWeight<>0 then
begin
edtPruductWeight.Text:=IntToStr(PWeight);
DataModule2.SignalFormADODataSet.Active :=false;
DataModule2.SignalFormADODataSet.Active :=true;
end
else
edtPruductWeight.Text:=IntToStr(Global.PWeight);
这里用了个笨办法,把数据集关闭然后再打开,可这种法子不好,这段程序将在各个客户端执行,就会出问题,有什么好的办法吗?如果用ADOQuery代替ADODataSet我想可以,但如果不用ADOQuery怎么实现数据集的更新?
procedure TPrintLabel.Timer1Timer(Sender: TObject);
var
PWeight:integer;
begin
//sinal form
if DataModule2.SignalFormADODataSet.Active=False then
DataModule2.SignalFormADODataSet.Active:=True;
DataModule2.SignalFormADODataSet.First;
PWeight:=DataModule2.SignalFormADODataSet.FieldByName('WEIGHT').AsInteger;
if PWeight<>0 then
begin
edtPruductWeight.Text:=IntToStr(PWeight);
DataModule2.SignalFormADODataSet.Active :=false;
DataModule2.SignalFormADODataSet.Active :=true;
end
else
edtPruductWeight.Text:=IntToStr(Global.PWeight);
这里用了个笨办法,把数据集关闭然后再打开,可这种法子不好,这段程序将在各个客户端执行,就会出问题,有什么好的办法吗?如果用ADOQuery代替ADODataSet我想可以,但如果不用ADOQuery怎么实现数据集的更新?
在写入成品表时同样的问题出现了:必须关闭数据集再打开,否则DBGRID不刷新,所以我要知道代码怎么实现数据集的刷新