Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

在组合框中选择一个数字N作为查询N条记录的数字

hwm0077  发表于:2012-10-05 23:19:22  
复制

表A:

编号  名称

001   AAA

002   AAB

004   AAH

009   AAJ

011   BBC

016   TWY

031   LKJ

045   HUI

081   HWR

084   JKD

099   DGH

 

注:1、编号是不重复但不连续的。

    2、窗体中有一个组合框,可以选择3、5、8、10...等(或者在一个文本框中输入一个数字)。

 

问题:如何建立一个查询得到最近N条记录的编号?这个参数N是组合框(或文本框)中的数字。

例如:当组合框中的数字是“3”时,查询结果是:

          编号

          099

          084

          081

 

      当组合框中的数字是“5”时,查询结果是:

          编号

          099

          084

          081

          045

          031

 

自己在查询的SQL语句中这样写: SECELT TOP [Forms]![窗体名]![组合框名].[value]  编号  FROM 表A ORDER BY 编号 DESC;

                       提示:“SELECT子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。”

不知道是什么错误?怎样才能实现这个查询呢?

 

望老师们指导!!最好给个示例。  谢谢了!

 

 

 

 

Top
煮江品茶 发表于:2012-10-06 20:19:47

top 子句的参数好像不能为变量,只能为一个常量,所以需要动态的修改查询语句。假设事先存在一个叫做“表A查询”的查询,则可以如下处理:

 

1、写一个函数或者子程序:

function EditQuery(n as long)
     dim Qdef As QueryDef
     dim ssql as string
     ssql="select top " & n & " * from 表A ORDER BY 编号 DESC"
     Set Qdef = CurrentDb.QueryDefs("表A查询")
     Qdef.SQL = ssql
     Qdef.Close
     Set Qdef = Nothing
end function

 

2、在组合框的更新后事件中调用该函数:

call EditQuery(me.组合框名称.value)



hwm0077 发表于:2012-10-11 16:29:25

感谢煮江品茶老师,试了几次不成功。

“假设事先存在一个叫做“表A查询”的查询”这句不太明白?!



沈军 发表于:2012-10-11 22:36:11
煮江品茶 老师已经为你做了一个函数,非常完美的解决方案,你只需要将此函数复制到你的窗体代码里面,然后在“组合框”更新后事件中加入2的代码内容。

call EditQuery(me.组合框名称.value)

 

为何要有选择性的3行5行或多少行显示呢?如果只是想组合框中显示的值是最近的,你直接可以利用ID字段,或在一个能够进行先后顺序的字段中加一降序排序,且组合框属性中也有一个属性可以设置显示多少行的选项



hwm0077 发表于:2012-10-24 13:37:50

出差两周,没有及时回复老师,见谅!!

本人实在菜鸟,按老师的方法捣鼓多次都不成功。。。

现在做了一个实例,请老师帮忙!!谢谢了!!      点击下载此附件

 

实例说明:  1、“表A” 中“单号”是有重复随时间递增的,但不连续;

                 2、每张单号包含1~3个小组的当天销售数据;

                 3、“分类变化差值”是指同一小组同一类商品当期数据与前一期对应数据的差值(右边子窗体看得较明白);

                 4、“差值”的规则是:当期分类商品的数据如果在该期之前的所有数据中没有对应数据,则该期“差值”为“0”(比如第一条记录);

                 5、“表A”的记录很多(上万条),所以希望从中取出部分数据进行分析。

希望解决的问题 (如图):

                 1、 如何将选项组的数值作为选取记录集的参数?

                 2、“商品销售分类变化差值”是手工计算输入的,如何实现自动计算保存?

                 3、选取以前的单号后,重新选后面的单号时,最后一条记录没有显示在子窗体的最下方,如何让最后一条记录显示在子窗体中以方便查看?(不动滚动条就能看见)

 

             



煮江品茶 发表于:2012-10-24 14:52:03
总记录:5篇  页次:1/1 9 1 :