为什么我的Dbgrid老倒着排序!!大家来帮忙!(100分)!(100分)

  • 主题发起人 主题发起人 吕建设
  • 开始时间 开始时间

吕建设

Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi+access做数据库,在主从表的设置如下:
主表、从表的cachedupdates为true;将连接字段连接
从表只有连接字段为索引,在编辑状态时,对子表的插入
一移出该插入记录,该记录自动移到最后一条,保存该记录
后,先将主表移到另一记录,再返回原主表的记录,看到
子表的顺序已被改变,它将按物理表排放的顺序的倒序排列,
我并没有在子库设置第二索引啊,我所要的是按物理表的顺序排列。


 
>>它将按物理表排放的顺序的倒序排列
你能肯定是倒序吗?
原理上应该没有顺序,因为Access记录的物理位置和插入的顺序无关,这个问题
以前讨论过.

如果你希望他以某种顺序显示,请加索引或用ORDER BY.
 
呵呵, 用append来添加新记录, 不要用insert, 就可以了:-)
 
就是,当然要用SELECT ... ORDER BY
 
cAkk:
已经肯定是倒着排序,反正一保存,再回来查看该主从单据,就倒了.
cytown:
我都是用append没用insert.
CJ:
程序好多的主从单据,因为是本地access数据库,故都是用table来做

谢谢各位!!
 
这种问题我也遇到过,原因是我在设计数据库结构时没有指定索引字段,而只是
默认使用第一字段为索引,实际上这时并没有建立索引文件,就可能会出现自动倒
排。如果你也是这样的话,您可以用desktop 重构一下数据库,把第一字段后(Key)
位置点上*号,再Pack一下,顺序就能倒过来。
 
吕先生用两个 ID 吗?分数就可难办了,呵呵。
我也觉得是主键的问题,相立相应的主键,索引,
查询时Order by,问题应该不大。
大家都说过了,我只不过是跟屁虫。:)
 
liukt:
正在调试!
不知你出现问题是在主从表情况,且从表用dbgrid连接,
我的是用access 97 建库的,从表是不能设为key,只能加索引,
我把从表与主表的连接字段设为索引,请问如何pack?
3h:
我是用两个ID的,且都很常用的,至于分数,大不可担心,
既然是自己提出的问题,岂有自己给自己分的道理?
我的情况"倒着排序"出现在从表,不能有主键,我要的是
在从表原先输入什么顺序,查看时也是什么顺序!

谢谢!!
 
可能您需要按插入时间的先后排序吧,何不建一个字段,用Now的内容填写,
然后按它排序?
 
3h:
如果插入一字段,则在子库的记录当中插入一条记录,再按照你的排序
结果这中间插入的记录浏览时在最后了,我要输入什么顺序,查看就什么
顺序!

还有我遇到一个怪现象:
连delphi自带的例子:在Demos/Db/Mastapp中edorders.pas单元中
,在运行期间,在子库多条记录中间插入新记录,移到另一条记录情况下,
这新插入的记录就跳到了第一条记录了,不知为什么???

各位高手们来帮帮忙!!
 
各位出出声啊!!是不是我描述的问题不清楚???
还是.....???
我要的是我在Dbgrid编辑时什么顺序,保存编辑记录后也是什么顺序.

sos!!!
 
我是小米(Microsoft Access)加步枪(Delphi 4.0 Build 5.108),刚开始也一样,请照如下方式修改你的程,保证药到病出:
1、建立一自动编号字段AutoID(自动编号)并设为Primary Key
2、在从表的IndexFieldName属性中输入<LinkKey>;AutoID
<LinkKey>为与主表关联使用到的(有重复)之索引

记得请我喝酒!
 
点解我输入的〈LinkKey〉被吃掉了,请板主回复我
 
zengmiao:
我按你的方法去做:
现dbgrid 有两字段 autoid ,和name char(8)
数据为:
1 zengmiao
2 lvjianshe
再从第二条记录前插入一记录 name 为aa,
现为:
1 zengmiao
2 lvjianshe
3 aa
而我要的是:
1 zengmiao
2 aa
3 lvjianshe
该什么办好?

help!!!


 
Delphi 的主/从关系在抓取资料时是倒序的,这你可以从SQL Monitor中可以看到
如果你要如此的结果,请如下方法解决:
用一TQuery作为资料获取控件,这单身只需一与单头关联的Field即可
 
zengmiao:
"这单身只需一与单头关联的Field即可":
>>不太理解
只觉无论是什么表,即使库中无主键既无索引,在delphi直接编辑dbgrid时,
它老会帮着排序,中间插入的竟然会跑到最后一个记录

各位:
有第三方控件解决吗?infopower公司的已然不行,用过rxlib的觉得怎样?
@@
{ }
 
方法1、你的问题是插入时也要不重排,就需要去掉AutoID字段, 另一Field作为索引是为了加快查询速度, 单身用TQuery作为DBGrid的数据来源, 不要用TTable。
方法2、用一字段作为项次是最直接的方法,插入时对项次进行重排即可...
 
真是怪事用paradox7建的库不会出现乱排序问题,偏偏access毛病多多!
zengmiao:
有没有用delphi4和access97试过?
或者你说的用项次排序,即:
1 lvjianshe
2 zengmiao
第一个字段作为项次,
2前插入 :
使的2 zengmiao中的2改为3
新插入改为2 >>程序该如何写!!
note:上述仅限于access;;

谢谢!!
 
多两个循环就可以了!
 
zengmiao:
在afterpost事件中写,先将新插入的记录给定id号为table1.recordcount+1,
再将recordno(当前记录号)后的记录id号+1,最后将新插入的id号为recordno,
但会引起afterpost 事件的循环调用! 有烦详细告知!!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部