开发C/S数据库的问题(100分)

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

Lidong

Unregistered / Unconfirmed
GUEST, unregistred user!
现在我要开发一个后台为SQL7的系统(还未做),有一个疑问,
在用户录入界面使用Table控件好吗?如果是Table,这样用户
只要在数据敏感控件之间移动光标,程序都会自动与后台数据库
交互(自动执行POST)。
能不能象PB一样,只有当用户保存时,才一次性提交。
如果使用UpdateSQL的话,和使用事务有什么区别?
 
我用SQL6。5,我觉得使用Query控件好,如果使用Table,
容易发生死锁,而且Query能保证一次性提交。
 
USE QUERY+UPDATSQL AND SET CACHE UPDATED =TRUE
 
to wumeng:
你有成功的案例吗?我总觉得用Query不是那么回事,不如Table正规。
而且一对多的时候Table可以指定MasterSourse和MasterField……
 
agree arm
在我的脑子里没有TTable,呵呵……
一次性保存用Transaction,Cached update也可以
 
就算CachedUpdate后,如事务还没有commite,一样可以Rollback
 
比如FORM1上有两个QUERY,他们的CachedUpdate=True,且各自有一个UpdateSQL,
如果我将他们的ApplyUpdate语句放到一个Transaction里,QUERY1.ApplyUpdate
成功了,但QUERY2.ApplyUpdate失败,此时Catch里面RollBack,
问一下,QUERY1提交到数据库了吗?
 
我用SQL SERVER作后台,delphi程序中这样处理:
...
query.cachedupdates := true;
...


database.starttransaction;
try
query.applyupdates
except
database.rollback;
raise;
end;
database.commit;
query.commitupdates

如果遇到master/detail表,只需在query的onupdaterecord各事件中进行适当处理
即可。具体可以参阅DELPHI的帮助文件:开发数据库应用部分。





 
to xczbb:
现在是master/detail表,如果我要在提交之前,将子表的所有c01字段设置为
主表的c01字段值,该如何处理?
thanks!
 
多人接受答案了。
 
后退
顶部