是不是我错了,还是delphi6需要补丁呢…??,大家来看一下,好吗??(100分)

  • 主题发起人 主题发起人 ARt3
  • 开始时间 开始时间
A

ARt3

Unregistered / Unconfirmed
GUEST, unregistred user!
问题如下,数据库用Paradox,是delhpi6,还没有打补丁;
有二个表sh_main和SH_detail ,是主从表
sh_main 有字段
SHdh:送货单号,是唯一的
SHdw:送货单位
......
sh_detail
shdh:送货单号;
hpmc:货品名称;
.......
sh_main
有记录如下
20020405001 大学 。。。。。
20020405002 小学 。。。。。
sh_detail
有记录如下
20020405001 1
20020405001 2
20020405001 3
20020405002 4
20020405002 5
20020405002 6
记录的顺序如上
在一个query中的控件中
有如下语句
query1.SQL.Clear;
query1.SQL.Add('select a.shrq,b.hpmc,b.hpsl,b.hpjg,b.dw,b.je from sh_main a,sh_detail b where a.shdh=b.shdh and a.shdw='''+edit1.Text+'''');
query1.Active:=true;
这样的结果如下
20020405001 大学 。。。。。 1
20020405001 大学 。。。。。 2
20020405001 大学 。。。。。 3
20020405002 大学 。。。。。 4
20020405002 大学 。。。。。 5
20020405002 大学 。。。。。 6
而如果这样写的话,就是带有参数的话
query1.SQL.Clear;
query1.SQL.Add('select a.shrq,b.hpmc,b.hpsl,b.hpjg,b.dw,b.je from sh_main a,sh_detail b where a.shdh=b.shdh and a.shdw=:name');
query1.ParamByName('name').asstring:=edit1.text;
query1.Active:=true;
结果变为

20020405001 大学 。。。。。 1
20020405001 大学 。。。。。 3
20020405001 大学 。。。。。 2
20020405002 大学 。。。。。 4
20020405002 大学 。。。。。 6
20020405002 大学 。。。。。 5
也就是不能把记录按顺序显示出来
这是为什么呢?
我又试过了,如果只从一个表中出来数据,也是可以按顺序的。好郁闷啊,







 
对不起了,上面有一段写错了
20020405001 大学 。。。。。 1
20020405001 大学 。。。。。 2
20020405001 大学 。。。。。 3
20020405002 大学 。。。。。 4
20020405002 大学 。。。。。 5
20020405002 大学 。。。。。 6
改为
20020405001 大学 。。。。。 1
20020405001 大学 。。。。。 2
20020405001 大学 。。。。。 3
20020405002 小学 。。。。。 4
20020405002 小学 。。。。。 5
20020405002 小学 。。。。。 6


这一段
20020405001 大学 。。。。。 1
20020405001 大学 。。。。。 3
20020405001 大学 。。。。。 2
20020405002 大学 。。。。。 4
20020405002 大学 。。。。。 6
20020405002 大学 。。。。。 5
改为
20020405001 大学 。。。。。 1
20020405001 大学 。。。。。 3
20020405001 大学 。。。。。 2
20020405002 小学 。。。。。 4
20020405002 小学 。。。。。 6
20020405002 小学 。。。。。 5


 
加个order sh_main.SHdh,sh_detail,hpmc 吧
 
这样的结果也算正常啊,想排序你应该加自己的子句,从结果集来看,两种方法都能返回
正确的结果,同时也说明两种方法的实现是不同的。
BTW:得到排序的结果我认为只是一种巧合,应该和你的a,b表中的数据的排列顺序相关,也就是
说,在数据多或a,b表数据变化时,这种结果并不能保证给你返回排序的结果。
 
但如果不带参数的放,直接在sql语句中
这样写'select a.shrq,b.hpmc,b.hpsl,b.hpjg,b.dw,b.je from sh_main a,sh_detail b where a.shdh=b.shdh and a.shdw='''+edit1.Text+''''
为什么又能自动的排好呢,
order by 试过了,还是不行的
 
带参数的sql语句和不带参数的sql语句,得出的排列顺序是不一样的,这就说明,两者有
区别的。
但如果遇是一种巧合的话,那又为什么不带参数的总能得出正确的顺序呢?难道不是有某种关系吗
 
高手指点一下了…,小弟先谢了………………在线等 啊,关系到饭碗的问题了,呵呵[^][:(!]
 
呵呵,你怎么就不明白呢,返回结果的一个数据集,而数据是变化的,基于这个原因,不用
排序子句的SQL语句返回的排序结果你能放心用?当然是巧合,你只用这几条试了吗?不信的话
你可以加100条试试,当然测试数据不要有规律。
btw:
你的改动对结果没影响
返回正确结果对你的饭碗并无影响
 
order by不行?!
不可能呀?!
 
TO menxin
在吗,再指点一下好吗
我的原问题就是,选择客户名称,然后从sh_main(送货主单)和sh_detail(送货详细单)中得出
shrq(送货日期),hpmc(货品名称),hmjg(价格)等信息
但这些信息要按输入的顺序排列,像这样,什么先进去,什么先出来
20020405001 大学 。。。。。 1
20020405001 大学 。。。。。 2
20020405001 大学 。。。。。 3
20020405002 小学 。。。。。 4
20020405002 小学 。。。。。 5
20020405002 小学 。。。。。 6

一个客户一天可能有100条这样的信息,如果要用到group by
用的是什么字段呢,我试过group by shrq,但结果就是不能按顺序排。除了这个shrq 外,
总不能拿hpmc来排吧,所以总不能得到正确的排序结果
再来讨论一下吧
 
TO zhai_xin
order by 一定不行,我试了N次了
 
TO menxin
我的测试数据一共有30条,全是乱七八糟的,没有带参数的语句可以把顺序(也就是SH_detail
的物理顺序)排出来,而带参数就不行了…不知为什么了
 
后退
顶部