急!急!急!我更新过的,可在提交后,从数据库中取数据时取不到,不明白怎么回事!(100分)

  • 主题发起人 主题发起人 xiehua822
  • 开始时间 开始时间
X

xiehua822

Unregistered / Unconfirmed
GUEST, unregistred user!
var
i:integer;
list:Tlistitem;
begin
if listview1.Items.Count=0 then exit;

with DataModule1.tempgrp do
begin
if not active then active:=true;
edit;
end;
for i:=0 to listview1.Items.Count-1 do
begin
list:=ListView1.Items.Item;
datamodule1.tempgrp.insert;
DataModule1.tempgrp.fieldbyname('MBRID').asinteger:=strtoint(listview1.Items.Item.Caption);
DataModule1.tempgrp.fieldbyname('MBRNAME').asstring:=list.SubItems.Strings[0];
DataModule1.tempgrp.fieldbyname('PARTID').asinteger:=strtoint(list.SubItems.Strings[1]);
DataModule1.tempgrp.fieldbyname('PARTNAME').asstring:=list.SubItems.Strings[2];
DataModule1.tempgrp.fieldbyname('PHONE').asstring:=list.SubItems.Strings[3];
DataModule1.tempgrp.fieldbyname('MEETROOMID').asstring:=combobox1.text;
DataModule1.tempgrp.fieldbyname('CTROLTIME').asinteger:=secondsbetween(strtodatetime('1970-01-01 08:00:00'),strtodatetime(datetostr(date.date)+' '+timetostr(time.time)));
DataModule1.tempgrp.fieldbyname('TMPGID').asinteger:=c;
DataModule1.tempgrp.fieldbyname('STATUS').asinteger:=1;
end;
try
DataModule1.tempgrp.post;
application.messagebox('保存成功','信息',mb_ok+mb_iconinformation);
close;
except
showmessage('更新失败');
end;
 
没有post吧
 
里面有没有不为空的字段?数据类型是否正确
 
上面有post呀
数据也是正确的
实在不明白,我用的是interbase数据库,还请指点小弟一二,多谢了
 
如果不行的我回来再看,我吃饭去啦
var
i:integer;
list:Tlistitem;
begin
if listview1.Items.Count=0 then exit;

with DataModule1.tempgrp do
begin
if not active then active:=true;
edit;
end;
for i:=0 to listview1.Items.Count-1 do
begin
list:=ListView1.Items.Item;
datamodule1.tempgrp.insert;
DataModule1.tempgrp['MBRID']:=strtoint(listview1.Items.Item.Caption);
DataModule1.tempgrp['MBRNAME']:=list.SubItems.Strings[0];
DataModule1.tempgrp['PARTID']:=strtoint(list.SubItems.Strings[1]);
DataModule1.tempgrp['PARTNAME']:=list.SubItems.Strings[2];
DataModule1.tempgrp['PHONE']:=list.SubItems.Strings[3];
DataModule1.tempgrp['MEETROOMID']:=combobox1.text;
DataModule1.tempgrp['CTROLTIME']:=secondsbetween(strtodatetime('1970-01-01 08:00:00'),strtodatetime(datetostr(date.date)+' '+timetostr(time.time)));
DataModule1.tempgrp['TMPGID']:=c;
DataModule1.tempgrp['STATUS']:=1;
end;
try
DataModule1.tempgrp.post;
application.messagebox('保存成功','信息',mb_ok+mb_iconinformation);
close;
except
showmessage('更新失败');
end;
 
var
i: integer;
list: Tlistitem;
begin
if listview1.Items.Count = 0 then
exit;

with DataModule1.tempgrp do
begin
if not active then
active := true;
//edit; 不要这句
end;
try
for i := 0 to listview1.Items.Count - 1 do
begin
list := ListView1.Items.Item;
//datamodule1.tempgrp.insert;
datamodule1.tempgrp.append; //换为这句看看
DataModule1.tempgrp.fieldbyname('MBRID').asinteger :=
strtoint(listview1.Items.Item.Caption);
DataModule1.tempgrp.fieldbyname('MBRNAME').asstring :=
list.SubItems.Strings[0];
DataModule1.tempgrp.fieldbyname('PARTID').asinteger :=
strtoint(list.SubItems.Strings[1]);
DataModule1.tempgrp.fieldbyname('PARTNAME').asstring :=
list.SubItems.Strings[2];
DataModule1.tempgrp.fieldbyname('PHONE').asstring :=
list.SubItems.Strings[3];
DataModule1.tempgrp.fieldbyname('MEETROOMID').asstring := combobox1.text;
DataModule1.tempgrp.fieldbyname('CTROLTIME').asinteger :=
secondsbetween(strtodatetime('1970-01-01 08:00:00'),
strtodatetime(datetostr(date.date) + ' ' + timetostr(time.time)));
DataModule1.tempgrp.fieldbyname('TMPGID').asinteger := c;
DataModule1.tempgrp.fieldbyname('STATUS').asinteger := 1;
DataModule1.tempgrp.post;
end;
application.messagebox('保存成功', '信息', mb_ok + mb_iconinformation);
DataModule1.tempgrp.close;
except
showmessage('更新失败');
end;
end;
这样呢???
 
缓存更新的话!
post后要applyupdates
 
各位兄弟,还是不行呀
 
我把程序关闭后,再打开,刚才提交的数据就能取出来,不关闭就是不行?
 
不知你是不是将tempgrp的LockType属性改为了ltBatchOptimistic,这样的话post就没有提交到数据库中。
 
Lock Type 如果是 ltBatchOptimistic
那最后用post也是没有用的,必须要UpdateBatch
 
楼上说得没错,光急是没用的,多试试看
 
tempgrp是一个ibtable它没有locktype这个属性呀
是不是也有别的限制它呀
 
OK,你在最后post以后
把你的DataModule1.tempgrp.Close;
然后再DataModule1.tempgrp.Open;
最后再执行你的窗口关闭那个Close;
或者就在CloseQuery里写上
DataModule1.tempgrp.Close;
DataModule1.tempgrp.Open;
 
只要POST不报错,就应该没有问题,然后直接查看后台的数据库,看数据提交了没有。
可能是因为你没有使用refresh,所以post后没有及时显示出来。
 
你显示数据和编辑不是在同一个窗体上吧?
你试试我的办法吧,虽然很土但是很管用![^]
 
我显示数据和编辑是不在同一个窗体上,各位大哥刚才所说的方法我都试过了可还是不行。小弟确实没有办法了
 
来看贴的诸位,帮帮忙!
小弟在线等候
 
我估计你在DataModule1.tempgrp的beforepost事件 或者 其它的事件中进行了其它的操作。
 
关闭tempgrp 的缓存属性
 
后退
顶部