InterBase求救(200分)

  • 主题发起人 主题发起人 Linwolf
  • 开始时间 开始时间
L

Linwolf

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在在编一个使用InterBase的小数据库软件,但是使用
with TForm2.Create(nil),Datamodal do
begin
Table2.Append;
if ShowModal=mrCancel then
if DataSource2.State=dsInsert then
Table2.Cancel;
Free;
end;
无论返回mrCancel或者mrOk原窗体的DBGrid中的纪录都会丢失,而且
DBGrid的标题栏都由中文变为字段名,百思不得其解,望大虾们帮帮忙!
 
>>无论返回mrCancel或者mrOk原窗体的DBGrid中的纪录都会丢失
你的代码没有Table2.Post,
修改如下:
with Datamodal do
begin
Table2.Append;
with TForm2.Create(nil) do
try
case ShowModal of
mrCancel: if Table2.State in dsEditModes then
Table2.Cancel;
<font color=red>mrOk: if Table2.State in dsEditModes then
Table2.Post;</font>
end;
finally
Free;
end;
end;


>>DBGrid的标题栏都由中文变为字段名
你的代码
with TForm2.Create(nil),Datamodal do
begin
...
<font color=red>Free;</font>
end;
怀疑是这里把DataModule释放掉了,所以DBGrid失去数据源

很多时候会因为with之后导致属性、方法重名,
你以为是调用的某一个,实际上编译结果是别的,
写程序小心点
 
>>DBGrid中的纪录都会丢失
如果DataModule的确被Free掉,当然会这样!
检查一下吧~~
 
with TForm2.Create(nil).Datamodal do
begin
Table2.Append;

if ShowModal=mrCancel then
if DataSource2.State=dsInsert then
Table2.post;
Table2.Cancel;
//Free 没必要吧?
end;
 
Post当然有啦,我想也是datamodule被Free了,不过我没有将它Free,这几天有点事,下午再检查一下,很感谢蚯蚓!!
 
接受答案了.
 
后退
顶部