请问一个delphi+sql7.0的问题,table1.refresh,query1.refresh(100分)

  • 主题发起人 主题发起人 yjj100
  • 开始时间 开始时间
Y

yjj100

Unregistered / Unconfirmed
GUEST, unregistred user!
1、 请问一个delphi+sql7.0的问题,ttable+tdatesource+dbgrid,table1.cachedupdate:=true;
table1.append;
table1.fieldbyanme('..').as...:='...';
....
table1.post;
table1.ApplyUpdates;
数据是保存了,但table1中新加的记录被清除了,没办法只有table1.close,table1.open,table1.last 取得新生提交的记录。有没有另外的办法?
用access则不会出现这种现象。
2、在access中,TABLE1.refresh运行正常,在sqlserver中,TABLE1.refresh出错, 不管是ACCESS 还SQLSERVER query1.refresh 出错‘不支持这种操作',表都加了唯一索引,不知怎样解决,以前大富翁上也没人说清楚。
 
1. 在applyUpdates 之后,加上一个 query1.Database.commit试试
2。 对于 SQL 数据库, 不允许 Query 进行 Refresh 操作
 
crab: 加事务开始+提交事务语句,不能解决第一个问题。
 
我这里没有 Sql 7.0,只能在 Interbase 上试,没发现问题,是不是SQL Server
有什么特别的地方?
 
在table1的Afterpost事件为:
with table1 do
begin
Database1.StartTransaction;
try
ApplyUpdates;
Database1.Commit;
except
Database1.Rollback;
raise;
end;
CommitUpdates;
end;
 
我已前也遇见过,不过当时很急,改用TQuery(用SQL写,例如“insert ...”)后
没问题了。
 
换用Query+UpdateSQL吧
 
你只要在table控件的afterpost事件中加入
此句:
table1.refresh;
 
表的一列应为: IDENTITY 并且设置为 PRIMARY KEY
保证没问题了!
 
agree with lidong
 
to hpretty,lidong
不行,我试过!
 
10多天没解决?用query别用table了
 
用tquery+tupdatesql肯定行,这是不可能的,我用了好久,没出现任何问题。不行的话说明你不会用。简单的例子:
tquery属性Cachedupdate=true,Requestlive=false。Updateobject=updatesql1
。tquery的SQL为“select id,name from dbo.table1”。
tquery的Afterpost事件:
with query1 do
begin
Database1.StartTransaction;
try
ApplyUpdates;
Database1.Commit;
except
Database1.Rollback;
raise;
end;
CommitUpdates;
end;

tupdatesql的insertSql为:
insert into table1(id,name)
values (:id,:name)

语句:
query1.append;
query1.fiedbyname('id').Asinteger:=1;
query1.fieldbyanme('name').asstring:='A';
query1.post;

肯定行的。


 
fstao,you're right,Thank you very much!
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部