主页
Top.Mail.Ru Yandeks.Metrika
论坛:“基地”;
当前存档:2002.04.01;
下载:[xml.tar.bz2];

向下

如何以编程方式对数据库进行排序 找到类似的分支


Bill   (2002-03-06 10:51) [0]

请帮助您提供有关如何以编程方式对数据库进行排序的建议,例如,在DATE。



deleon   (2002-03-06 10:56) [1]

这有一个BDE API函数。
DbiSortTable



Val   (2002-03-06 11:01) [2]

TTable:在所需字段上创建索引并在acc中指定它。 性能
TQuery:通过myfield从mytable订单中选择*



Bill   (2002-03-06 11:23) [3]

它位于哪个模块中?



Jim   (2002-03-06 11:37) [4]

BDE



Bill   (2002-03-06 12:13) [5]

完全迷惑这个功能。
帮助编写此函数以按日期字段对Table1数据库进行排序。



Val   (2002-03-06 12:34) [6]

为什么写呢?



Bill   (2002-03-06 12:52) [7]

怎么写? 我只是需要它。
我对这些参数感到困惑。
我写了。 但她喋喋不休地说这个号码已经满了。
所以我想检查一下。



Bill   (2002-03-06 12:53) [8]

怎么写? 我只是需要它。
我对这些参数感到困惑。
我写了。 但她喋喋不休地说这个号码已经满了。
所以我想检查一下。

我只是不想使用索引。



Val   (2002-03-06 12:57) [9]

>比尔(06.03.02 12:53)
我只是不想使用索引。
这意味着什么并不容易?
你怎么看,排序发生了什么?



Bill   (2002-03-06 13:03) [10]

Database Desktop具有通过某些字段对数据库进行排序的功能。 即 此数据将写入数据库。 已经排序了。 我几乎想要这么一件小事。



deleon   (2002-03-06 13:03) [11]

如果表中有一个自动增量字段并且它在键中,那么您不能使用此函数对表进行排序,只能输出到另一个表!



Bill   (2002-03-06 13:06) [12]

不,不! 没有自动增量字段。



roottim   (2002-03-06 13:35) [13]

Val©(06.03.02 11:01)
TTable:在所需字段上创建索引并在acc中指定它。 性能
TQuery:通过myfield从mytable订单中选择*


如果用数据库的话来表示数据库的表...那么你不喜欢VAl的建议



Bill   (2002-03-06 15:13) [14]

我喜欢一切。 但是!
我需要在物理层面上做这件事。 TE 这样数据库就已经按字段排序了。



roottim   (2002-03-06 15:20) [15]

我当然不认为评估你在数据库领域的知识深度......
也许这真的很必要!!!! ...
但如果没有! 然后没有人会对磁盘上​​的“基础”进行排序!...这是精神错乱!



deleon   (2002-03-06 15:25) [16]

一切都非常简单:
(c)代顿

过程TForm1.Button1Click(Sender:TObject);
VAR
Db:TDatabase;
SaveActive:布尔值;
CurProp:CurProps;
SortFlds:Word的数组[0..0];
CaseIns:Bool;
RecSort:整数;
开始
尝试
SaveActive:= Tbl.Active;
Tbl.DisableControls;
Tbl.Active:= True;
SortFlds [0]:= 1;
CaseIns:= True;
检查(DbiGetCursorProps(Tbl.Handle,CurProp));
Db:= Tbl.Database;
Tbl.Active:= False;
检查(DbiSortTable(Db.Handle,
CurProp.szName,CurProp.szTableType,
零,零,零,零,
1,{数组中的字段数}
@SortFlds,{可排序字段数组}
@CaseIns,{升序/降序排序}
nil,nil,False,nil,RecSort));
最后
Tbl.Active:= SaveActive;
Tbl.EnableControls;
结束;
结束;



deleon   (2002-03-06 15:28) [17]

如果是精神错乱,Borland就不会为此书写函数!



Val   (2002-03-06 15:41) [18]

> deleon(06.03.02 15:28)
你能解释通过物理移动表中的表来排序表的意义吗? 然后 - “......首席下令..”:)



deleon   (2002-03-06 15:45) [19]

例如:每月一次用大型数据库执行此类排序,以确保最有效地访问数据,因为 索引重组将更快,索引排序包括。 即 我建议你阅读关于数据库的严肃文献,而不是阅读21日的Delphi :)))



Val   (2002-03-06 16:02) [20]

停止,亲爱的,谢谢你的建议,当然,但这不是关于包装,其优点不太可能被争论,但排序,是否有区别?



deleon   (2002-03-06 16:09) [21]

不,我的意思是排序因为 如果已经至少部分地对这些字段进行了排序,那么构建索引要快得多



Delirium   (2002-03-06 16:11) [22]

嗯,使用物理级别的记录排列来加速对数据的访问是违反SQL逻辑的。 但是,既然我们在谈论Paradox,那么我认为这是可能的,但我怀疑这比索引排序更快。



MAxiMum   (2002-03-06 16:11) [23]

我被同样的问题折磨着。 我需要通过任何字段对表(DBGrid)进行排序。 诀窍是它充满了LookUp字段。



deleon   (2002-03-06 16:11) [24]

我不打算证明普通事实,但在某些情况下,物理排序可以极好地优化数据访问!



deleon   (2002-03-06 16:16) [25]

当然,构建索引比对表中的条目进行物理排序要快得多,但我们讨论的是罕见的排序。 是的,订购记录仅在没有密钥的表中才有意义,即 本地。



Val   (2002-03-06 16:24) [26]

没有密钥的表(它是关于主要的是什么?)不太可能对应于有关数据库和使用它们的现代想法。 还有为什么你把这些表称为本地?



deleon   (2002-03-06 16:28) [27]

这正是因为基于客户端 - 服务器技术的表中缺少密钥与识别记录的规则不同。



deleon   (2002-03-06 16:29) [28]

关闭主题,我只是试图帮助作者,而不是陷入无用的争论。



Anatoly Podgoretsky   (2002-03-06 20:57) [29]

如果我们谈论罕见的订购,那么你不应该打破你的头脑,一切都已经写好,只需运行DBD - 这个程序并不比我的差,我怀疑它更好 - 更可靠。



sniknik   (2002-03-07 08:56) [30]

关闭主题。
我不会试图帮助作者,但组织记录的主题让我感动。 因为 我自己也参与其中,我可以逻辑地证明这一点。 对于那些不明白为什么这是必要的人。
任务。 有必要将来自不同计算机(现金服务台)的日志文件合并为一个,以获得一般统计信息。 记录严格按日期 - 时间排序。 使用这些文件的程序(旧的,但仍在使用它)只能感知它们(如果你在开头的时间较晚进行输入,那么之后的所有内容将被忽略,直到时间再次消失)。 为了给她一个普通的日志文件,它必须严格(物理)订购 - 收银机 - 日期 - 时间。 根本没有索引,如果你创建然后发誓说错了。
在SQL中,该任务似乎只在BDE或提供直接写访问的东西上没有解决方案。 我通过BDE实现了它。

roottim(06.03.02 15:20)
我当然不认为评估你在数据库领域的知识深度......
也许这真的很必要!!!! ...
但如果没有! 然后没有人会对磁盘上​​的“基础”进行排序!...这是精神错乱!

roottim去任何一家超市看看收银机最有可能以什么模式工作(如果它是POS)。 这真是疯了。 但他们就是这么做的。 并对磁盘上的基础进行排序。 其中的系统工程师肯定是精神错乱,因为他们必须使用过时的格式并适应过时的程序。 即使一个人问一个问题,他真的需要它,不要批评,但如果你已经接受了,那就回答。



roottim   (2002-03-07 09:12) [31]

sniknik©我责备我!...

但我仍然提出了必要的修正!!!!! ...
这是作者非常糟糕的表达!...也许他真的
身体不恰当......出于某种原因,他当然是沉默的!也许真相已经为自己决定了一切

看到根!
>请提供有关如何按编程方式对数据库进行排序的建议,例如DATE
这件事的正确性还不够......

我不争辩! 旧系统(如收银机)提出了这样的要求......我不打算争辩!...
而且真的很疯狂!...但该做什么......谁现在很容易:)



Tolyan   (2002-03-07 10:14) [32]

对我自己来说,一旦我通过SQL对给定字段的给定表进行物理排序的过程,它就会有所帮助。 使用索引也是不可能的。(创建一个临时文件。)
过程SortTable(TB:TTable; fname:string);
const fn =“temp.dbf”;
Var标志:布尔值;
st0:string;
开始
flag:= TB.Active;
如果标志然后TB.Close;
st0:= fn;
CopyFile(PChar(TB.TableName),PChar(st0),true);
DM1.Qu1.SQL.Clear;
DM1.Qu1.SQL.Add(“SELECT * FROM”+ st0 +“ORDER By”+ fname);
DM1.Qu1.Open;
TB.Exclusive:= True;
TB.EmptyTable;
TB.BatchMove(DM1.Qu1,batAppend);
TB.Active:= flag;
DM1.Qu1.SQL.Clear;
DM1.Qu1.Close;
DeleteFile(st0);
结束;



Страницы: 1 整个分支

论坛:“基地”;
当前存档:2002.04.01;
下载:[xml.tar.bz2];

楼上









内存:0.67 MB
时间:0.031 c
7-332
ESergey
2001-12-28 17:51
2002.04.01
如何以编程方式更改CDROM速度?


4-365
fomka
2002-01-31 01:18
2002.04.01
赢得api


6-273
eblade
2002-01-16 22:18
2002.04.01
TClientSocket和OnConnect覆盖


1-93
AHD
2002-03-19 11:31
2002.04.01
的Dimetra


14-301

2002-02-19 13:13
2002.04.01
Delphi 5和C ++ Builder





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法文
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本性玩偶 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 泰米尔人 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский