如何生成本地的临时表(100分)

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

xfh

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用的数据库是microsoft sql server 6.5,我希望用table控件对数据库中
表的数据直接修改,是否应该先生成本地表,对本地表进行修改。应如何做?
 
为何用table?
用TQuery
 
做SQL SERVER开发最好是用QUERY或存储过程更新数据库
因为MS SQL SERVER是页锁,在多用户环境里容易出现死锁现象

看您的意思似乎是 用户要编辑或添加一批数据后再保存到MS SQL SERVER里
可以有两种办法
1。使用DELPHI 的CACHE UPDATE, 给用户提供在本地编辑,然后批量保存到
SERVER里,实际上这种方法是用你的BDE CACHE做临时内存表保存修改和添加的数据
但是程序一关,BDE的CACHE中的数据就会被清洗掉
2。使用你想象中的临时表,在本地动态建立一个临时表,然后用QUERY或
存储过程循环的把临时表的数据保存到SERVER里

两种方法我都做过
第一种方法简单易行,不知道是否符合你的要求
第二种方法编程量大些,
 
可以(不考虑其它因素)直接用TTABLE修改
如果用本地表,常用的做法是通过本地ACCESS数据库,定期更新MS SQL
的数据库,具体嘛,漫漫玩吧
 
1. 临时表可以使用Paradox等台式数据库实现,更新 MS SQL 的数据库时,使用 TbatMove批量更新.

2. 使用RxLib2.6中的TMemTable控件,用内存表作为临时表,速度较快,实现方式也
比较简单,但是程序关闭时,数据被清空.
 
用TABLE可以,就是烦了


Active := False; { The Table component must not be active }

{ First, describe the type of table and give it a name }
DatabaseName := 'DBDEMOS';
TableType := ttParadox;
TableName := 'CustInfo';

{ Next, describe the fields in the table }
with FieldDefs do
begin
Clear;
Add('Field1', ftInteger, 0, True);
Add('Field2', ftString, 30, False);

end;

{ Next, describe any indexes }
with IndexDefs do
begin
Clear;
{ The first index has no name because it is a Paradox primary key }
Add('', 'Field1', [ixPrimary, ixUnique]);
Add('Fld2Indx', 'Field2', [ixCaseInsensitive]);
end;

{ Now that we have specified what we want, create the table }
CreateTable;
 
我在SYSBASE中用TTABLE实现过,只要将KEEPALIVE置成TRUE,修改完数据后POST一下就可以了,好象在MSSQL上也实现过,一时记不清了,有兴趣的话给我一个MAIL。
 
為什么不用 ClientDataSet?
 
多人接受答案了。
 
后退
顶部