首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 刷新控件界面数据集报错。神奇的有关问题~

2012-09-02 
delphi 刷新控件界面数据集报错。神奇的问题~~父窗体procedure TjcJobTypeForm.timerTimer(Sender: TObject

delphi 刷新控件界面数据集报错。神奇的问题~~
父窗体
procedure TjcJobTypeForm.timerTimer(Sender: TObject); //为了省事、写了个刷新界面的计时器事件
begin
  if timerResult then
  begin
  destoryControl();
  treeViewCreate();
  btnCreate();
  timerResult:=False;
  end;
end;

procedure TjcJobTypeForm.destoryControl(); //释放动态生成的控件
var  
  i:integer;
begin
  Node1:=nil;
  tv1.Items.Clear;
  for i:=0 to recCord do
  controlBtn[i].Free;
end;



子窗体
procedure TjcjobTypeSetForm.enterBtnClick(Sender: TObject); //刷新sql语句,开启数据集
begin
  with DataModule2.JobTypeQuery do
  begin
  Close;
  SQL.Clear;
  SQL.Text:='insert into basedata(vhrname,intparentID) values("'+
  nameEdit.Text + '",' +codedEdit.Text +')';
  ExecSQL;
  ShowMessage(IntToStr(DataModule2.JobTypeQuery.RecordCount));
  //断点。上边的SQL执行正确、之后到这条语句就报错了。。。 说数据集是关闭的,无法进行操作。
  无奈。。才刚重新打开,什么时候关闭它了啊,而且重新运行程序后能够看到新增的数据。
  end;
  timerResult:=True;
  jcjobTypeSetForm.Close;
end;

[解决办法]
先搞清楚ExecSQL与Open的区别吧,什么情况下应该用那一个
insert into/update/delete等数据操作,是ExecSQL
select查询用Open;

...
ExecSQL;
SQL.Text:='select * from basedata';
Open;
ShowMessage(...);

热点排行