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(...);