为什么要动态加索引,用batchmove最好用有自然索引的表。
因为 addindex本来就有很多限制,因表的种类、表的版本不同对索引的动态建立的支持有很多不同。你上面的代码: 如果是paradox表,ixDescending 在主索引中是不支持的。
另外你的batchmove2是什么意思??batchmove1吧。batchmove完后,我把索引删了。可能是画蛇添足了,可我觉得不加这句话更危险。你自己多测测吧。看看动态加减这句话的效果。凭我的经验,最好还是用自然索引(建表就建了索引,他俩同生的,哪怕是一起动态产生)。我的测试效果时好时坏,不知道是我的调试环境的问题,还是动态建索引batchmove本来就不稳定,我也不敢肯定。
win2k+delphi5代码修改为: Indexstr:='Code;SaleDate';
//dstr:='Code;SaleDate';
Table2.Close;
Table2.Exclusive := True;
Table2.Open;
Table2.AddIndex('NewIndex',indexstr,[ixPrimary]);
//Table2.IndexDefs.Update;
//Table2.CreateTable;
BatchMove1.source:= table1;
BatchMove1.Destination:= table2;
//BatchMove1.problemTableName:='ErrFile.txt';
BatchMove1.Mode:=batAppendupdate;
//BatchMove1.RecordCount:=0;
BatchMove1.Execute;
Table2.DeleteIndex('NewIndex');
因为 addindex本来就有很多限制,因表的种类、表的版本不同对索引的动态建立的支持有很多不同。你上面的代码: 如果是paradox表,ixDescending 在主索引中是不支持的。
另外你的batchmove2是什么意思??batchmove1吧。batchmove完后,我把索引删了。可能是画蛇添足了,可我觉得不加这句话更危险。你自己多测测吧。看看动态加减这句话的效果。凭我的经验,最好还是用自然索引(建表就建了索引,他俩同生的,哪怕是一起动态产生)。我的测试效果时好时坏,不知道是我的调试环境的问题,还是动态建索引batchmove本来就不稳定,我也不敢肯定。
win2k+delphi5代码修改为: Indexstr:='Code;SaleDate';
//dstr:='Code;SaleDate';
Table2.Close;
Table2.Exclusive := True;
Table2.Open;
Table2.AddIndex('NewIndex',indexstr,[ixPrimary]);
//Table2.IndexDefs.Update;
//Table2.CreateTable;
BatchMove1.source:= table1;
BatchMove1.Destination:= table2;
//BatchMove1.problemTableName:='ErrFile.txt';
BatchMove1.Mode:=batAppendupdate;
//BatchMove1.RecordCount:=0;
BatchMove1.Execute;
Table2.DeleteIndex('NewIndex');
解决方案 »
- delphi 用BDE控件连接的ORACLE怎样转成用ADO连接?
- 怎样把serversocket放在一个.pas(没有form)文件中,并且把事件也相应写在里面(做成公用的)
- C# des加密 delphi解密
- From继承问题
- 不知道有谁能解决这个问题!
- pCount : ^Integer;//这个指针以后在代码中怎样使用的//这个指针是一个变量吗
- 如何用delphi编程实现sql server的数据备份和恢复
- 用delphi怎么连接远程SQL服务器?在线等候!
- 【散分贴】delphi XE5 北京发布会,参加的留个名喽~
- xml 查询 ,劳驾各位了
- 请大富翁论坛的地址, 已经有人告诉我是www.delphibbs.com,但是不行
- 怎样把缩成任务栏按钮的应用程序还原??
laza,我将你的程序运行了一遍,还是出错,出错信息为:
Number is out of range
Index does not exist
Index: NewIndex不知道什么原因???
我想总会有解决的办法,要不就是Delphi5的Bug.
batchmove.AbortOnProblem := False;
指定 Mappings string; 这样容错性搞一些; with BatchMove1.Mappings do
begin
Clear;
Add('servicelistid=servicelistID');//字段名1=字段名2中间没有空格。
Add('ProvinceID=ProvinceID');
Add('unit=unit');
end;