Delphi中使用TDataSetProvider和TClientDataSet协同工作,使用了一个内存中的表TClientDataSet可以非常好的实现前台的工作,中间零散的操作都可以保存在内存表中,等到工作基本结束,使用一个保存命令(界面上给用户的)通过事务一次性将所有的修改保存进远程的数据库,这样大大减少联系数据库的次数,提高了系统的效率,本人一直是这么做的,感觉非常好。
但是最近发现了一个比较的问题,那就是自增字段的存在,当为一个包含自增字段的表添加了数据,内存表中将不会对自增字段添加值,至少不会与将来保存到远程数据库以后的由数据库产生的值一致,难道这种表增加了新的数据就必须立刻保存到远程数据库吗?不保存就不能获得这个自增字段的ID了?立刻保存很大程度上破坏了上边说的使用TDataSetProvider和TClientDataSet协同工作带来的好处。
大家来帮忙啊,只要是合理的解决方法,或者告诉我没有办法必须保存,只要有个结论,我都将高分送上。
但是最近发现了一个比较的问题,那就是自增字段的存在,当为一个包含自增字段的表添加了数据,内存表中将不会对自增字段添加值,至少不会与将来保存到远程数据库以后的由数据库产生的值一致,难道这种表增加了新的数据就必须立刻保存到远程数据库吗?不保存就不能获得这个自增字段的ID了?立刻保存很大程度上破坏了上边说的使用TDataSetProvider和TClientDataSet协同工作带来的好处。
大家来帮忙啊,只要是合理的解决方法,或者告诉我没有办法必须保存,只要有个结论,我都将高分送上。
解决方案 »
- 用DELPHI7的RAVE做的报表怎么实现翻页功能啊?
- TTable和TClientDataSet的问题
- 编写后台服务程序 急!急!急!急!急!
- 如何列出sqlserver服务器上的数据库列表
- 在一个project中有好几个form,要调试其中的一个,请问该怎么办?
- 一个程序向另一个程序的控件发送消息(高手请入)
- 怎样成批的控制其他窗体上的控件?
- 现在有一问题!当pos机中的打印机在打印时突然没纸,或者没电了!在程序中怎样给个警告!也就是说怎样在程序中给个处理!!有关源代码如下:
- 关于Qreport打印的问题。
- 一个令我气愤不已的问题-关于ADO控件插入
- 如何写一个通用的窗体创建过程?
- 登录窗口的问题
-------------------------------------->
使用CreateGUID(MYGUID); //生成GUID,这个绝对唯一
var
MyGUID: TGUID;
begin
CreateGUID(MYGUID); //生成GUID
Result := GUIDToString(MYGUID); //转换成String
while Pos('-', Result) > 0 do
begin
Delete(Result, Pos('-', Result), 1); //去除'-'括号
end;
while Pos('{', Result) > 0 do
begin
Delete(Result, Pos('{', Result), 1); //去除左括号
end;
while Pos('}', Result) > 0 do
begin
Delete(Result, Pos('}', Result), 1); //去除右括号
end;
end;