我是使用VBA的新手,我正在大力研究以加快速度并成为一名高级MS Access数据库程序员。虽然我理解很多东西,但在我看来,我仍然没有完全掌握一些基础知识。我的问题对于我正在为工作团队设计的数据库有很大帮助,它涉及从对象中捕获值并将其导入(复制)到表中。基本上,简而言之,我需要知道VBA中的哪些命令将允许我从插入表中的表单的当前记录中获得一个(或多个)字段。我想这样做,而不必构建一个字段来1 - 选择记录和2 - 启动复制粘贴字符串。
经过大量的研究,我确实发现有人给了我编写下面代码的方法并且它的工作非常成功。通常,它不是VBA,我想知道是否有更好的,基于VBA的方式写下来。我对所有语言感到困惑,而我正在努力加快速度
我希望很快能听到某人的声音。 安德鲁
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("tblHoldingProjectID", dbOpenTable)
rst.AddNew
rst!ID_Project = Me.txtProjectNumber
rst.Update
rst.Close
Set rst = Nothing
note-'txtProjectNumber'是我在表单上创建的表达式的对象名,用于标识当前所选记录的ID记录号
答案 0 :(得分:1)
我不确定我完全理解这个问题,但是: 要引用表单中的对象,可以使用它们的名称(就像使用txtProjectNumber一样)。要将记录写入数据库,您不能使用“只是VBA”,但您需要使用DAO或ADODB库(上面代码中的DAO),它是数据库的接口(我假设在位之前还有一些代码)上面打开CurrentDb)。
然后你可以通过
引用打开的表中的字段(你的第一个对象) rst!*FieldName=
或
rst.Fields("FieldName").Value=
或rst.Fileds(ID).Value=
ID开始从0到rst.Fields.Count - 1。
如果您在某处有某种映射defind,或者您的控件和数据库字段具有相同的名称,您可以执行一些循环,例如:
Dim c as Control
Dim rst as DAO.Recordset
' do your DB open procedure + open rst'
rst.AddNew
For Each c in Me.Controls
rs.Fields(c.Name).Value = c.Value
Next c
rst.Update
rst.Close
您可以在循环中添加一些If条件,以确定应该存储哪些字段等。