L
lorca
Unregistered / Unconfirmed
GUEST, unregistred user!
如何在delphi里压缩与修复access数据库的方法我已经会了,在大富翁里有很多代码,我用的是function CompactDatabase(AFileName,APassWord:string):boolean;想必很多人一看函数就知道用的是哪个了:)(这只是其中的一种方法)
但出现的问题是:无论用哪种方法,对数据库使用后破坏了排序规则,SQL语句中的order by变得无效,希望有高人能指点,如何改进能使排序正常,先谢过了。(注:ADODataset的Sort方法还可以正确排序,现只讨论用SQL语句中的order by)
有这样一个例子:access数据库里的一个test表,academy是一个字符型字段,表示毕业院校,有三条记录如下:
academy
云南大学
三门峡师专
中州大学
.......
使用ADOQuery打开表并按院校排序代码如下:
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from test order by academy');
Open;
end;
正确的排序结果应当是(三S、云Y、中Z):
academy
三门峡师专
云南大学
中州大学
......
好,开始压缩修复access数据库。。。。。
方法1:直接在MS access里打开数据库,使用“工具|数据库实用工具|压缩和修复数据库”
再打开ADOQuery1,显示排序结果正常
方法2:在Delphi里用上面的代码压缩和修复数据库,再打开ADOQuery1,显示排序结果:
academy
三门峡师专
中州大学
云南大学
结果显然不符合要求!
但出现的问题是:无论用哪种方法,对数据库使用后破坏了排序规则,SQL语句中的order by变得无效,希望有高人能指点,如何改进能使排序正常,先谢过了。(注:ADODataset的Sort方法还可以正确排序,现只讨论用SQL语句中的order by)
有这样一个例子:access数据库里的一个test表,academy是一个字符型字段,表示毕业院校,有三条记录如下:
academy
云南大学
三门峡师专
中州大学
.......
使用ADOQuery打开表并按院校排序代码如下:
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from test order by academy');
Open;
end;
正确的排序结果应当是(三S、云Y、中Z):
academy
三门峡师专
云南大学
中州大学
......
好,开始压缩修复access数据库。。。。。
方法1:直接在MS access里打开数据库,使用“工具|数据库实用工具|压缩和修复数据库”
再打开ADOQuery1,显示排序结果正常
方法2:在Delphi里用上面的代码压缩和修复数据库,再打开ADOQuery1,显示排序结果:
academy
三门峡师专
中州大学
云南大学
结果显然不符合要求!