我是ms-access的新手,我已经开始查看有效的代码了.不幸的是,它完全没有注释.
Private Sub OKbut_Click()
Dim dt As Date
dt = Now()
Set rstOrder = New ADODB.Recordset
rstOrder.Open "tblUsers", CurrentProject.Connection, adOpenStatic, adLockOptimistic
If rstOrder.Supports(adAddNew) Then
With rstOrder
.AddNew
.Fields("title") = title
.Fields("first") = first
.Fields("last") = last
.Fields("gender") = gender
.Fields("date_submitted") = dt
.Update
End With
End If
rstOrder.Close
Set rstOrder = Nothing
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT id FROM tblUsers WHERE date_submitted=#" & dt & "#")
duser = rs.Fields("id")
rs.Close
Set rs = Nothing
Do While Not user_defined(duser)
DoCmd.OpenForm "define_user_frm", , , , , acDialog
Loop
'Forms(0).user_lst.RowSource = "select * from users where id=" & duser
Me.SetFocus
DoCmd.Close
End Sub
Run Code Online (Sandbox Code Playgroud)
接近这样的现有代码并不是学习编程的最佳方式.有很多在线教程可以帮助您以线性方式开始和进步.我给出的另一个建议是为自己尝试.编写一个包含"MsgBox Now()"的小方法并运行它以查看会发生什么.然后在几秒钟后运行它.
我不能过度推荐找一个初学者教程.
不过那说...
希望这可以帮助.
Now()返回当前系统的日期和时间
是的 - 更重要的是,它是一种单独迭代数据集记录的好方法.就像SQL Server中的游标一样.你可以做点什么
While not rstOrder.EOF
'a.k.a. while there are still records left to iterate through
'Do something
End While
Run Code Online (Sandbox Code Playgroud)
来自http://www.dotnetspider.com/forum/16958-In-VB-What-difference-between-adopendynamic.aspx
adOpenForwardOnly - 如果未指定其他游标,则这是默认游标.此光标仅允许通过记录集向前移动
adOpenKeyset - 此游标支持前向和后向导航.它还允许您更新记录集,所有更改将反映在其他用户记录集中.光标还支持书签
adOpenDynamic - 此游标支持向前和向后导航,但可能不支持书签(即Access).对数据所做的任何更改都会立即可见,而无需将光标与数据库重新同步
adOpenStatic - 此游标使用数据库中的数据的静态副本,因此不会显示对数据的更改,并支持向前和向后导航
这是编写更强大代码的一种方式 - 即在尝试添加新记录之前,首先检查记录集是否支持添加新记录.
从记忆中释放记录集.不是绝对必要但是再次提供更强大的代码.
检查用户是否存在,如果不存在,则打开一个名为"define_user_frm"的表单,我假设该表单允许创建新用户.
| 归档时间: |
|
| 查看次数: |
389 次 |
| 最近记录: |