注册 登录
编程论坛 VB6论坛

请问我写的这个自动生产编号的程序为什么会出问题

yflovevb01 发布于 2017-05-04 16:11, 1789 次点击
Dim rs As New ADODB.Recordset
Dim cnn As New ADODB.Connection

Private Sub Command1_Click()
rs.Open "select * from guest order by 编号", cnn, adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
rs.MoveLast
Text1.Text = Format(Val(rs.Fields("编号")) + 1, "00000")
Else
Text1.Text = "00001"
End If
rs.Close
End Sub

Private Sub Command2_Click()
rs.Open "ABC", cnn, adOpenKeyset, adLockOptimistic
rs.AddNew
rs!编号 = Text1.Text
rs.Update
rs.Close
MsgBox "保存成功!"
Unload Me
End Sub

Private Sub Form_Load()
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Store Findeway Management.mdb;Persist Security Info=False"
End Sub

以上是我写的代码
我需要实现的是自动编号
点一下command1
text1会自动生成编号
点command2
将会自动保存
我感觉没什么问题了
但是我生成的编号一直是00001
很无奈
求大神解释一下
6 回复
#2
风吹过b2017-05-04 16:20
Private Sub Command1_Click()
rs.Open "select max(编号) as M编 from guest", cnn, adOpenKeyset, adLockOptimistic        '直接返回一条记录,该记录显示 编号的最大值
'未测试数据库无记录时,是否也有记录返回
Text1.Text = Format(Val(rs.Fields("M编")) + 1, "00000")
rs.Close
End Sub

这样试试看。
#3
yflovevb012017-05-04 16:25
还是一直都生成00001
#4
风吹过b2017-05-04 17:34
好吧,我建库来测试一下。
#5
yflovevb012017-05-04 17:38
太感谢了
#6
风吹过b2017-05-04 17:43
测试结果,你的代码,我的代码都有效。
我的代码需要处理 无记录的情况。

程序代码:
Private Sub Command1_Click()
rs.Open "select max(编号) as M编 from guest", cnn, adOpenKeyset, adLockOptimistic        '直接返回一条记录,该记录显示 编号的最大值
'
未测试数据库无记录时,是否也有记录返回
If IsNull(rs.Fields(0)) Then
  Text1.Text = "00001"
Else
  Text1.Text = Format(Val(rs.Fields(0)) + 1, "00000")
End If
rs.Close
End Sub


=================
你的错误出在,保存模块,你保存在哪个表??
而你读又在哪个表???
表都不一样,自然永远返回 00001 啊。

#7
yflovevb012017-05-04 18:06
!!!!
好了!!
确实是这样
谢谢版主
请问我能加您的联系方式吗?
1