Office中国论坛/Access中国论坛

标题: 实现ID 自动编号 [打印本页]

作者: wangf    时间: 2007-2-2 16:55
标题: 实现ID 自动编号
Private Sub 保存记录_Click()
On Error GoTo Err_保存记录_Click
   '定义各种变量
   Dim STemp As String
   Dim Rs As ADODB.Recordset
   Set Rs = New ADODB.Recordset
   STemp = "Select * From 电"
   '为打开数据表"查询语句"字符变量赋值
   Rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
     '判断必填文本框和组合框是否为空
     If IsNull(Me![ID]) = True Then
       MsgBox "请输入ID它不能为空!", vbOKOnly, "输入ID"
       Me![ID].SetFocus
     ElseIf IsNull(Me![日期]) = True Then
       MsgBox "请输入日期,它不能为空!", vbOKOnly, "输入日期"
       Me![日期].SetFocus
     ElseIf IsNull(Me![班次]) = True Then
       MsgBox "请输入班次,它不能为空!", vbOKOnly, "输入班次"
       Me![班次].SetFocus
     ElseIf IsNull(Me![抄表人]) = True Then
       MsgBox "请输入抄表人,它不能为空!", vbOKOnly, "输入抄表人"
       Me![抄表人].SetFocus
     ElseIf IsNull(Me![统计员]) = True Then
       MsgBox "请输入统计员,它不能为空!", vbOKOnly, "输入统计员"
       Me![统计员].SetFocus
     Else
     '保存产量输入
    STemp = "INSERT INTO 电"
     STemp = STemp & "(ID,日期,班次,抄表人,1#动力变,2#动力变,1#整流变,2#整流变,3#整流变,4#整流变,5#整流变,高压电机,统计员,备注)"
     STemp = STemp & "VALUES ('" & Me![ID] & "','" & Me![日期] & "',"
     STemp = STemp & "'" & Me![班次] & "','" & Me![1#动力变] & "',"
     STemp = STemp & "'" & Me![2#动力变] & "','" & Me![1#整流变] & "',"
     STemp = STemp & "'" & Me![2#整流变] & "','" & Me![3#整流变] & "',"
     STemp = STemp & "'" & Me![4#整流变] & "','" & Me![5#整流变] & "',"
     STemp = STemp & "'" & Me![高压电机] & "','" & Me![抄表人] & "',"
     STemp = STemp & "'" & Me![统计员] & "','" & Me![备注] & "')"
     DoCmd.RunSQL STemp
     '刷新子窗体
     Me![电 子窗体].Requery
     End If
Exit_保存记录_Click:
  Exit Sub
Err_保存记录_Click:
  MsgBox Err.Description
  Resume Exit_保存记录_Click
End Sub[attach]22943[/attach]


[此贴子已经被作者于2007-2-2 15:53:27编辑过]


作者: hi-wzj    时间: 2007-2-2 18:56
由于“1#动力变”等等字段是数值型的,不需要用单引号来分隔,因此代码需要由  ,'" & Me![1#动力变] & "',"    改成 ," & Me![1#动力变] & ","

而日期型的字段应使用#号来分隔而不是用单引号。

而自动编号的id字段是不需要您去追加,它会自动生成编号的。
作者: 轻风    时间: 2007-2-2 19:29
可能跟你的字段名里的#号有关,有#号的字段要用[ ]括起来。

  STemp = STemp & "(ID,日期,班次,抄表人,1#动力变,2#动力变,1#整流变,2#整流变,3#整流变,4#整流变,5#整流变,高压电机,统计员,备注)"
改成:  STemp = STemp & "(ID,日期,班次,抄表人,[1#动力变],[2#动力变],[1#整流变],[2#整流变],[3#整流变],[4#整流变],[5#整流变],高压电机,统计员,备注)"
试试看!
作者: wangf    时间: 2007-2-2 23:50
以下是引用hi-wzj在2007-2-2 10:56:00的发言:


而自动编号的id字段是不需要您去追加,它会自动生成编号的。

这个

我还不会,请教了!!!![em09]

应该说是做过但没有成功。所以



[此贴子已经被作者于2007-2-2 15:52:43编辑过]


作者: 一点通    时间: 2007-2-3 00:55
其它字段增加数据后,自动编号会自动完成,这个不用教了吧,你在表中输入数据就知了
作者: wangf    时间: 2007-2-3 18:15
在表中,我会啊,我是说在窗体中,怎么实现这个功能,

我是这样做的,在增加时,使各文本框为空,在保存时,让ID自动编号。

首先问:我这样的思路对吗?再问怎样才能自动编号。

Private Sub 保存记录_Click()
On Error GoTo Err_保存记录_Click
   '定义各种变量
   Dim STemp As String
   Dim Rs As ADODB.Recordset
   Set Rs = New ADODB.Recordset
   STemp = "Select * From 电"
   '为打开数据表"查询语句"字符变量赋值
   Rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
     '判断必填文本框和组合框是否为空
      If IsNull(Me![ID]) = True Then
       MsgBox "请输入ID它不能为空!", vbOKOnly, "输入ID"
       Me![ID].SetFocus
     ElseIf IsNull(Me![日期]) = True Then
       MsgBox "请输入日期,它不能为空!", vbOKOnly, "输入日期"
       Me![日期].SetFocus
     ElseIf IsNull(Me![班次]) = True Then
       MsgBox "请输入班次,它不能为空!", vbOKOnly, "输入班次"
       Me![班次].SetFocus
     ElseIf IsNull(Me![抄表人]) = True Then
       MsgBox "请输入抄表人,它不能为空!", vbOKOnly, "输入抄表人"
       Me![抄表人].SetFocus
     ElseIf IsNull(Me![统计员]) = True Then
       MsgBox "请输入统计员,它不能为空!", vbOKOnly, "输入统计员"
       Me![统计员].SetFocus
     Else
     '保存产量输入
     STemp = "INSERT INTO 电"
     STemp = STemp & "(ID,日期,班次,抄表人,[1#动力变],[2#动力变],[1#整流变],[2#整流变],[3#整流变],[4#整流变],[5#整流变],[高压电机],统计员,备注)"
     STemp = STemp & "VALUES ('" & Me![日期] & "',"
     STemp = STemp & "'" & Me![班次] & "','" & Me![1#动力变] & "',"
     STemp = STemp & "'" & Me![2#动力变] & "','" & Me![1#整流变] & "',"
     STemp = STemp & "'" & Me![2#整流变] & "','" & Me![3#整流变] & "',"
     STemp = STemp & "'" & Me![4#整流变] & "','" & Me![5#整流变] & "',"
     STemp = STemp & "'" & Me![高压电机] & "','" & Me![抄表人] & "',"
     STemp = STemp & "'" & Me![统计员] & "','" & Me![备注] & "')"
     DoCmd.RunSQL STemp
     '刷新子窗体
     Me![电 子窗体].Requery
     End If
Exit_保存记录_Click:
  Exit Sub
Err_保存记录_Click:
  MsgBox Err.Description
  Resume Exit_保存记录_Click

[em23][em23][em23][em23][em23][em23][em23][em23][em23][em23][em23][em23][em23][em23]

[此贴子已经被作者于2007-2-3 10:27:20编辑过]


作者: 一点通    时间: 2007-2-3 19:53
这个字段不要管它,由系统自动完成,用窗体增加数据也会自动完成的,看下这个例子

http://www.office-cn.net/forum.php?mod=viewthread&tid=52001&replyID=&skin=1




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3