Access交流中心

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

[5分]在查询中新增加id(原A表中没有该字段)为自动编号(或类似的

whyg519  发表于:2012-11-22 10:16:01  
复制

不是生成新表或追加查询,在查询中新增加id(原A表中没有该字段)为自动编号(或类似的)值?

 

 

Top
煮江品茶 发表于:2012-11-22 10:29:32

除非表中有一个或几个字段能唯一的标识一条记录,否则的话不可能处理。

假设数据表中有三个字段f1、f2、f3联合起来能唯一的标识一条记录,则用查询可以编制序号(ID):

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

或者

select a.*,(select count(b.*) from tbname as b where b.f1 & b.f2 & b.f3<=a.f1 & a.f2 & a.f3 ) as ID from tbname



竹笛 发表于:2012-11-23 10:30:45
殷小宝 发表于:2012-11-24 18:22:49
煮江品茶老师,这句是什么含义:[f1] & [f2] & [f3]<='" & [f1] & [f2] & [f3] & "?

hwm0077 发表于:2012-11-27 13:09:40

我也想知道:“煮江品茶老师,这句是什么含义:[f1] & [f2] & [f3]<='" & [f1] & [f2] & [f3] & "?”

[f1]、[f2]、[f3]全是数字字段与其中有字符字段得出的序号不一样?

 如果[f1]是唯一能标识记录的字符型字段(不重复),这个语句又怎么写呢?本人菜了,试几次都不对。。。



煮江品茶 发表于:2012-11-27 16:09:11

一般来说每个数据表都应该设一个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

 



hwm0077 发表于:2012-11-28 16:23:04
明白了,感谢“煮江品茶”老师,我的问题已解决!楼主该给煮江老师“最佳”。

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