从表单复制对象值并将其粘贴到表中

时间:2013-12-27 23:48:32

标签: sql vba

我是使用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记录号

1 个答案:

答案 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条件,以确定应该存储哪些字段等。