Access等数据库的记录顺序(100分)

5

555

Unregistered / Unconfirmed
GUEST, unregistred user!
access数据库插入的记录是放在最后,可是我的应用中要求可以
象Excel一样在中间插入一条记录,打印时按插入得位置打印。
如何实现?
 
你有程序中用Insert不行吗?而且,你也可以用排序来搞定呀.实际上,数据库无论插入或追加
都是在最后一笔,只不过用到了索引,你才觉得他是插入到中间的.
 
你加上序号不久可以了码?
 
MDB:
如果你用的是BCB,DELPHI的话,INSERT和APPEND是有区别的,市面有个软件叫<<库管王>>,是用delphi
做的(据说是五年前做的),她的商品目录做得非常好,其中重要的一点就是,产品排序是用INSERT插入
的,这样查询时不用排序,(化整为零,用户维护商品编码总是相对少一些,而查询机会多得多)我做了一
个五六千条记录的TreeView速度飞快(用了她的数据),比递归快了不知多少倍.
相反,如果用ACCESS或者是VB,好象全部都是APPEND?
序号是最终的解决办法,总能解决问题的,不过要维护起来得仔细考虑,每次插入记录就得维护一遍序号,
或许有好的算法?
 
想得真复杂, 你管insert时是什么位置,
只要打印输出时位置对了不就行了。
看来是缺乏数据库基本常识
 
[:D]打印前排排序[:D]
 
555:
这么想并没有什么不对,不过只是为的打印,的确是没有这样的必要,但是这个问题这样考
虑还是有好处的.前面有位朋友说,插入的位置总在表的未端,我表示怀疑,我们知道,即使简
单如链表也是可以做插入操作的,何况关系数据库? 很抱歉我没有相关的资料.
如果不是赶工,回头想想这类问题还是很有好处了,我原来在ORACLE中曾经做过很复杂的触
发器,就是因为没有当时没有仔细的考虑,后来呢?在维护的时候,干脆删了,用简单的方法就行
了,嘻嘻
建议提问的朋友多研究研究SQL语言,做数据库可是吃饭的家伙.
 
如果单利用索引,不可能可以像excel一样的效果。
看来序号+索引是最终的解决办法,但如何维护序号呢?有什么好办法?
 
看来你是真的不明白:
1.可以插入记录,简单的表,用DBGrid让用户插入不就行了,你先试试,这和索引没什么关
系.
2.如果一定要用序号,维护序号对于单表单用户来说,最起码在插入记录后重新再刷一遍
(从一开始数,...)不就行了,先要解决问题,然后再考虑用什么办法解决问题更好...
3.最好能说得详细一点.客户是什么要求,什么样的情况,一般来说,报表只要根据某个关
键字用 Order By [...]就可能解决问题,只有特殊情况下,才需真实的记录客户录入记录的
位置,很少见的.
 
可能大家没有理解我的意思。
我的客户是要求可以象Excel一样对行进行操作。
其目的是管理一个档案目录,其顺序比较复杂,无法按那个字段排序,要人工安排。
如果要自动排序,必须应用序号。
 
sql语句有加上order by
 
用序号应该比较简单的吧,先把序号后的记录都加1,用一条Sql就可以实现,再添加记录到
当前序号就可以了.
 
曾见过一个程序,也是TreeView相关的,一开始总是抱有幻想,以为ACCESS可以有办法插入物理位置,其实用ACCESS多年了,DAO似乎本身根本就没有insert(),
看来只有APPEND了,:-(

有时候确实要记录数据的物理位置,比如TreeView操作,插入节点,上下文(结点)相关

当然办法是有的:
用序号,记录当前的序号,插入记录后,后面的记录序号全部加+1,打印的时候用序号排序,后面的程序用个事务一次性搞定
对了,在序号一栏用索引就行了,直接打开表,就不用排序了.
 
谢谢proman,我居然忘了用SQL直接写,该打,呵呵
 
to:555
你是不是档案目录的字段为文本型而且很长,无法排序。
插入数字型的序号+proman的做法就因该可以;
 
谢谢大家!
 
顶部