L lonanodo Unregistered / Unconfirmed GUEST, unregistred user! 2007-12-17 #1 如果在不同的机器上确没有这个问题。搞不明白。欢迎参加讨论。
S shaken Unregistered / Unconfirmed GUEST, unregistred user! 2007-12-17 #2 什么程序,什么内容,什么环境?<br>什么都没有让别人玩猜迷啊
L lonanodo Unregistered / Unconfirmed GUEST, unregistred user! 2007-12-17 #3 c/s,在客户端用时间控件来循环访问数据表并显示数据.这和我的串口服务器没有关系.2000server
B bbswenjie Unregistered / Unconfirmed GUEST, unregistred user! 2007-12-17 #4 应该是程序的BUG,是不是什么没有被释放或者什么的。
B bsense Unregistered / Unconfirmed GUEST, unregistred user! 2007-12-18 #5 没有free掉,close掉该close,free的东东,本机速度快,当然明显
L lonanodo Unregistered / Unconfirmed GUEST, unregistred user! 2007-12-18 #6 兄弟:问题不是明显不明显的问题,而是一种不停的长,另一种就不长.另外我也想对程序改进一下.如何在Timer中实时查询数据,而不增加内存?数据显示在DBGrid中.用线程?<br>我想在Timer中动态创建TADOQuery,查询完后free.但是单步凋试时发现,第二次创建时就没有数据显示了.为什么?代码如下:<br>procedure TFormCZS.ZyTimerTimer(Sender: TObject);<br>var TemQ:TADOQuery;<br>begin<br> self.ZyTimer.Enabled:=false; <br> try<br> if TemQ = nil then<br> TemQ:=TADOQuery.Create(nil);<br> TemQ.Connection :=ADOConnection1;<br> Zysource0.DataSet := TemQ;//和TDataSource绑定<br> try<br> TemQ.Close;<br> TemQ.SQL.Clear;<br> TemQ.SQL.Add('select dw,sl,spname,spm,rq from shc_dzcYds_1 where bz=bs order by rq DESC');<br> TemQ.Parameters.ParamByName('Pbs').Value:=TaskID;<br> TemQ.Open;<br> except<br> bsSkinMessage1.MessageDlg('操作shc_dzcYds_1数据表有误2!',mtInformation,mbOKCancel,1);<br> end;<br> finally<br> TemQ.Free ;<br> end;<br> self.ZyTimer.Enabled:=true;<br><br>end;
兄弟:问题不是明显不明显的问题,而是一种不停的长,另一种就不长.另外我也想对程序改进一下.如何在Timer中实时查询数据,而不增加内存?数据显示在DBGrid中.用线程?<br>我想在Timer中动态创建TADOQuery,查询完后free.但是单步凋试时发现,第二次创建时就没有数据显示了.为什么?代码如下:<br>procedure TFormCZS.ZyTimerTimer(Sender: TObject);<br>var TemQ:TADOQuery;<br>begin<br> self.ZyTimer.Enabled:=false; <br> try<br> if TemQ = nil then<br> TemQ:=TADOQuery.Create(nil);<br> TemQ.Connection :=ADOConnection1;<br> Zysource0.DataSet := TemQ;//和TDataSource绑定<br> try<br> TemQ.Close;<br> TemQ.SQL.Clear;<br> TemQ.SQL.Add('select dw,sl,spname,spm,rq from shc_dzcYds_1 where bz=bs order by rq DESC');<br> TemQ.Parameters.ParamByName('Pbs').Value:=TaskID;<br> TemQ.Open;<br> except<br> bsSkinMessage1.MessageDlg('操作shc_dzcYds_1数据表有误2!',mtInformation,mbOKCancel,1);<br> end;<br> finally<br> TemQ.Free ;<br> end;<br> self.ZyTimer.Enabled:=true;<br><br>end;
L lonanodo Unregistered / Unconfirmed GUEST, unregistred user! 2007-12-20 #7 兄弟:问题不是明显不明显的问题,而是一种不停的长,另一种就不长.另外我也想对程序改进一下.如何在Timer中实时查询数据,而不增加内存?数据显示在DBGrid中.用线程?<br>我想在Timer中动态创建TADOQuery,查询完后free.但是单步凋试时发现,第二次创建时就没有数据显示了.为什么?代码如下:<br>procedure TFormCZS.ZyTimerTimer(Sender: TObject);<br>var TemQ:TADOQuery;<br>begin<br> self.ZyTimer.Enabled:=false; <br> try<br> if TemQ = nil then<br> TemQ:=TADOQuery.Create(nil);<br> TemQ.Connection :=ADOConnection1;<br> Zysource0.DataSet := TemQ;//和TDataSource绑定<br> try<br> TemQ.Close;<br> TemQ.SQL.Clear;<br> TemQ.SQL.Add('select dw,sl,spname,spm,rq from shc_dzcYds_1 where bz=bs order by rq DESC');<br> TemQ.Parameters.ParamByName('Pbs').Value:=TaskID;<br> TemQ.Open;<br> except<br> bsSkinMessage1.MessageDlg('操作shc_dzcYds_1数据表有误2!',mtInformation,mbOKCancel,1);<br> end;<br> finally<br> TemQ.Free ;<br> end;<br> self.ZyTimer.Enabled:=true;<br><br>end;<br><br>我在TemQ.Open;后加一句Query1.recordset:=TemQ.recrodSet;将结果集转出.就搞定了.<br>可是新问题又来了.当查询求和时上面的方法还是不行.我决定将查询的工作交给数据库,<br>用存储过程.但是Oracle的存储过程有点难搞,特别是创建参数时和多参数的传入,传出时,容易出错.各位如有现成的代码,请发出来支持一下.先谢过了!!
兄弟:问题不是明显不明显的问题,而是一种不停的长,另一种就不长.另外我也想对程序改进一下.如何在Timer中实时查询数据,而不增加内存?数据显示在DBGrid中.用线程?<br>我想在Timer中动态创建TADOQuery,查询完后free.但是单步凋试时发现,第二次创建时就没有数据显示了.为什么?代码如下:<br>procedure TFormCZS.ZyTimerTimer(Sender: TObject);<br>var TemQ:TADOQuery;<br>begin<br> self.ZyTimer.Enabled:=false; <br> try<br> if TemQ = nil then<br> TemQ:=TADOQuery.Create(nil);<br> TemQ.Connection :=ADOConnection1;<br> Zysource0.DataSet := TemQ;//和TDataSource绑定<br> try<br> TemQ.Close;<br> TemQ.SQL.Clear;<br> TemQ.SQL.Add('select dw,sl,spname,spm,rq from shc_dzcYds_1 where bz=bs order by rq DESC');<br> TemQ.Parameters.ParamByName('Pbs').Value:=TaskID;<br> TemQ.Open;<br> except<br> bsSkinMessage1.MessageDlg('操作shc_dzcYds_1数据表有误2!',mtInformation,mbOKCancel,1);<br> end;<br> finally<br> TemQ.Free ;<br> end;<br> self.ZyTimer.Enabled:=true;<br><br>end;<br><br>我在TemQ.Open;后加一句Query1.recordset:=TemQ.recrodSet;将结果集转出.就搞定了.<br>可是新问题又来了.当查询求和时上面的方法还是不行.我决定将查询的工作交给数据库,<br>用存储过程.但是Oracle的存储过程有点难搞,特别是创建参数时和多参数的传入,传出时,容易出错.各位如有现成的代码,请发出来支持一下.先谢过了!!
G guang_guang Unregistered / Unconfirmed GUEST, unregistred user! 2007-12-21 #8 可能是某些动态创建的资源未释放,使其常驻内存,所以内存会不段增大。另外,我看了一下你写的程序,你将AdoQuery定义为局域变量,这样每次Timer触发该事件时AdoQuery都要被重新创建和释放,这样会非常慢的。你可以将其定义为全局的,在窗体的FormShow或FormCreat中对其创建(…Create(self)),会随着窗体关闭而释放。
可能是某些动态创建的资源未释放,使其常驻内存,所以内存会不段增大。另外,我看了一下你写的程序,你将AdoQuery定义为局域变量,这样每次Timer触发该事件时AdoQuery都要被重新创建和释放,这样会非常慢的。你可以将其定义为全局的,在窗体的FormShow或FormCreat中对其创建(…Create(self)),会随着窗体关闭而释放。
L lonanodo Unregistered / Unconfirmed GUEST, unregistred user! 2007-12-25 #9 to guang_guang.说的有理,使用控件得了,因为窗体要到工作完成以后才关闭。我试试看先。访问数据库的问题大家有什么看法,请继续发表意见。
F frankie_24 Unregistered / Unconfirmed GUEST, unregistred user! 2007-12-29 #10 创建的控件有问题..我也遇到过....后来就直接用控件了...