Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6461|回复: 14

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

[复制链接]
发表于 2013-6-12 11:12 | 显示全部楼层 |阅读模式
下面是一段通过sql查询access数据表 “供方分类”表 字段“分类“下的记录数量并自动生成编号的代码,运行不成功,请各位大师帮助解决一下,问题出在什么地方。谢谢!

Sub 编号()  '自动编号On Error Resume Next
Dim y$
y = HzToPy(ComboBox1, 1, "", 0, 1)
If ComboBox1 = "" Then
MsgBox "数据不完整,请输入要修改内容", vbCritical, ""
Exit Sub
End If
Call mydata
sql = " Select count(1) AS 分类记录 from 供方分类 where 分类=" & ComboBox1 & ""
RST.Open sql, CNN, adOpenKeyset, adLockOptimistic
TextBox1.Value = y & Format(RST.Fields(" 分类记录 ") + 1, "000")
Set RST = Nothing
CNN.Close
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
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-6-12 11:18 | 显示全部楼层
sql = " Select count(*) AS 分类记录 from 供方分类 where 分类=" & ComboBox1 & ""
这样试试呢,还有,万一你查找不到一条记录呢。
回复

使用道具 举报

发表于 2013-6-12 11:26 | 显示全部楼层
分类=后面再加一个引号,应该是引号不对,你可以执行到这句后在立即窗口显示一下
回复

使用道具 举报

 楼主| 发表于 2013-6-12 12:15 | 显示全部楼层
sql = " Select count(*) AS 分类记录 from 供方分类 where 分类='" & ComboBox1 & "'"

请问是这样吗?试过了还是不行
回复

使用道具 举报

 楼主| 发表于 2013-6-12 12:25 | 显示全部楼层
立即窗口显示:
请保存文件
J:\项目信息管理系统(测试2).xls
回复

使用道具 举报

发表于 2013-6-12 12:28 | 显示全部楼层
你把你的附件传过来,你确认表里有符合条件的记录?
如果查不到记录,那就要报错了。
回复

使用道具 举报

发表于 2013-6-12 12:30 | 显示全部楼层
  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.     rst.Open Sql, CNN, adOpenKeyset, adLockOptimistic
  11.     If rst.EOF Then

  12.         TextBox1.Value = y & "001"
  13.     Else

  14.         TextBox1.Value = y & Format(rst.Fields("分类记录") + 1, "000")
  15.     End If

  16.     Set rst = Nothing
  17.     CNN.Close
  18. End Sub
复制代码
回复

使用道具 举报

发表于 2013-6-12 12:30 | 显示全部楼层
rst.Fields("分类记录"),这里原来的字段名前后加了空格。
回复

使用道具 举报

发表于 2013-6-12 12:31 | 显示全部楼层
  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.     RST.Open Sql, CNN, adOpenKeyset, adLockOptimistic
  11.     Debug.Print RST.EOF
  12.     If RST.EOF Then
  13.         TextBox1.Value = y & "001"
  14.     Else
  15.         TextBox1.Value = y & Format(RST.Fields("分类记录") + 1, "000")
  16.     End If
  17.     Set RST = Nothing
  18.     CNN.Close
  19. End Sub
复制代码
回复

使用道具 举报

发表于 2013-6-12 12:34 | 显示全部楼层
你留意对话框,如果显示是TRUE,则没有符合条件的记录,如果为FALSE,那就有记录。

Sub 编号()  '自动编号On Error Resume Next
    Dim y$
    y = HzToPy(ComboBox1, 1, "", 0, 1)
    If ComboBox1 = "" Then
        MsgBox "数据不完整,请输入要修改内容", vbCritical, ""
        Exit Sub
    End If
    Call mydata
    Sql = " Select count(1) AS 分类记录 from 供方分类 where 分类=" & ComboBox1 & ""
    RST.Open Sql, CNN, adOpenKeyset, adLockOptimistic
    MsgBox RST.EOF
    If RST.EOF Then
        TextBox1.Value = y & "001"
    Else
        TextBox1.Value = y & Format(RST.Fields("分类记录") + 1, "000")
    End If
    Set RST = Nothing
    CNN.Close
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 17:53 , Processed in 0.225933 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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