Access交流中心

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

在查询中增加自动编号列的问题?“竹笛”老师给的示例无法解决。

hwm0077  发表于:2012-11-26 17:00:09  
复制

类似问题“竹笛”老师给了一个示例不能解决我的问题 http://www.accessoft.com/article-show.asp?id=2196

我的问题是:在一个分组、计数查询中增加自动编号列,点击下载此附件


试着用“竹笛”老师的方法,提示出错!

怎么实现呢?

 

Top
hwm0077 发表于:2012-11-29 01:07:28

煮江品茶:一般来说每个数据表都应该设一个id字段,这个字段唯一标识一条记录(通俗的讲就是记录不重复)。如果没有设id字段,那么你就需要在数据表中找几个字段,使得这几个字段联合起来能唯一标识一条记录。我们假设某个表中的三个字段f1、f2、f3联合起来可以唯一标识一条记录,那么对所谓“联合起来标识”就有几种处理方法,比如可以在数据表的设计视图中选中这三个字段然后将起设置为主键(id);再比如我们可以在查询中将三个字段用字符串连接符连接起来作为id,等等。

在以上查询中:...... [f1] & [f2] & [f3]<='" & [f1] & [f2] & [f3] & "'" 就是要找出所有小于等于当前id(三个字段字符串连接得到的id)的记录。其实这个算法并不完善,其原因在于字符串的比较方法是逐个字符出左到右比对。所以完善的写法是要对三个字段先进行格式化处理后再进行连接计算。

hwm0077同志 的数据表中如果已经存在一个f1字段能唯一的标识一条记录,那么这个字段就可以看成id了。如果这个字段是数字型的,可写为:

select *,dcount("*","tbname","[f1] <=" & [f1]) as ID from tbname

如若这个字段是字符型的,可写为:

select *,dcount("*","tbname","[f1] <='" & [f1] & "'") as ID from tbname

如若这个字段是日期型的,可写为:

select *,dcount("*","tbname","[f1] <=#" & [f1] & "#") as ID from tbname



感谢“煮江品茶”老师,这个最佳答案应该给老师!

 




总记录:1篇  页次:1/1 9 1 :