Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: lmj8260

[已解决]求通过sql count查询数据表记录数自动生成编号问题

[复制链接]
发表于 2013-6-12 12:36 | 显示全部楼层
这个语名,在查询条件时,字段名的值如果是字符串,需要用单引号包围。

Sql = "Select count(1) AS 分类记录 from 供方分类 where 分类='" & ComboBox1 & "'"
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2013-6-12 12:45 | 显示全部楼层
  1. Sub 编号()  '自动编号On Error Resume Next
  2.     Dim y$
  3.     y = HzToPy(ComboBox1, 1, "", 0, 1)
  4.     If ComboBox1 = "" Then
  5.         MsgBox "数据不完整,请输入要修改内容", vbCritical, ""
  6.         Exit Sub
  7.     End If
  8.     Call mydata
  9.     Sql = " Select count(1) AS 分类记录 from 供方分类 where 分类='" & ComboBox1 & "'"
  10.     With RST
  11.         .Open Sql, CNN, adOpenKeyset, adLockOptimistic
  12.         MsgBox .EOF
  13.         If .EOF Then
  14.             TextBox1.Value = y & "001"
  15.         Else
  16.             TextBox1.Value = y & Format(.Fields("分类记录") + 1, "000")
  17.             '忘了字段名是0开始还是1开始了,这样更简单
  18.             'TextBox1.Value = y & Format(.Fields(0) + 1, "000")
  19.             'TextBox1.Value = y & Format(.Fields(1) + 1, "000")
  20.         End If
  21.     End With
  22.    
  23.     Set RST = Nothing
  24.     CNN.Close
  25. End Sub
复制代码
回复

使用道具 举报

发表于 2013-6-12 12:50 | 显示全部楼层    本楼为最佳答案   

测试了下,是0开始的。所以字段的话也可以直接用RST.FIELDS(0)
如果记录号显示不对的话,val(.Fields(0)) + 1,这个应该不会存在问题,会做自动转换的。
  1. Sub 编号()  '自动编号On Error Resume Next
  2.     Dim y$
  3.     y = HzToPy(ComboBox1, 1, "", 0, 1)
  4.     If ComboBox1 = "" Then
  5.         MsgBox "数据不完整,请输入要修改内容", vbCritical, ""
  6.         Exit Sub
  7.     End If
  8.     Call mydata
  9.     Sql = " Select count(1) AS 分类记录 from 供方分类 where 分类='" & ComboBox1 & "'"
  10.     With RST
  11.         .Open Sql, CNN, adOpenKeyset, adLockOptimistic
  12.         MsgBox .EOF
  13.         If .EOF Then
  14.             TextBox1.Value = y & "001"
  15.         Else
  16.             TextBox1.Value = y & Format(.Fields(0) + 1, "000")
  17.         End If
  18.     End With
  19.    
  20.     Set RST = Nothing
  21.     CNN.Close
  22. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-6-12 13:44 | 显示全部楼层
谢谢,测试成功。
但我不知道原来错在什么地方,我以前的程序中用过此相同语句,但能运行成功。
回复

使用道具 举报

发表于 2013-6-12 14:12 | 显示全部楼层
第1个问题是单引号的问题
第2个问题是字段名的问题。

其实设置通过ADODB.CONNECTION对象的游标属性,在查询后,通过RECOREDSET的RECORDCOUNT属性就可返回记录数。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-5 09:11 , Processed in 0.247544 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表