在画面上放置一个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怎么实现数据集的更新?

解决方案 »

  1.   

    大哥:我用的是MS-SQL,表只有一条记录,不过我想知道用代码怎么实现,不考虑触发器,
      

  2.   

    是这样的,我要实现这种功能:在生产计划里有若干张表,还有一张表保存从现场电子称的产品的重量、时间等相关信息,当生产完成后,我把计划表的部分内容和产品重量等信息写入到成品表中,
    在写入成品表时同样的问题出现了:必须关闭数据集再打开,否则DBGRID不刷新,所以我要知道代码怎么实现数据集的刷新