在vba access 2007中使用.edit更新多行
我希望我能问得对。 我在表单(access 2007)上有一个列表框,并将其设置为“简单”,以便我可以进行多选。 我试图根据列表框中的选择更新表中的多个列。我有几个文本框,我想用它们作为更新表的信息。 我有一个循环,它只更新表中的第一条记录,不管选择了多少项。 我想我理解为什么它只更新我循环中的第一条记录,但我不确定在vba access 2007中使用.edit更新多行,vba,ms-access,Vba,Ms Access,我希望我能问得对。 我在表单(access 2007)上有一个列表框,并将其设置为“简单”,以便我可以进行多选。 我试图根据列表框中的选择更新表中的多个列。我有几个文本框,我想用它们作为更新表的信息。 我有一个循环,它只更新表中的第一条记录,不管选择了多少项。 我想我理解为什么它只更新我循环中的第一条记录,但我不确定 Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb() Set rs = db.OpenRec
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("Table1", dbOpenDynaset)
Dim i As Variant
For Each i In Listbox.ItemsSelected
With rs
.Edit
!Col1 = Me.Textbox1
!Col2 = Me.Textbox2
!Col3 = Me.Textbox3
.Update
End With
Next
我假设这是因为我没有在循环中指定要更新表的“where”,但我不知道如何在这个循环中执行此操作。我将在列表框中有3列(位置1、3和4),所有这些列都需要包含进来,以指定需要更新表中的哪些记录。我也尝试过使用带有DoCmd.RunSql的sql查询,但似乎无法更改ListIndex mid查询的焦点。对于我知识的缺乏,我对VisualBasic是相当陌生的。请帮助简化示例,如果我理解正确,我将如何尝试:
Sub MultiSelect_Listbox()
Dim lCnt as Long
dim lID as long
dim sSQL_Update as string
dim sText_1 as String
dim sText_2 as String
dim sText_3 as String
dim bSuccess as Boolean
sText_1 = me.txt_Textbox_1
sText_2 = me.txt_Textbox_2
sText_3 = me.txt_Textbox_3
With Me.lst_Listbox
For lCnt = 1 To .ListCount
If .Selected(lCnt) Then
lID = .Column(0, lCnt - 1)
'Example update for 1 column
sSQL_Update = "UPDATE T_TABLE SET COL_TEXT_1 = '" & sText_1 & "' WHERE ID = " & lID & ";"
bSuccess = Update_Statement(sSQL_Update)
End If
Next
End With
End Sub
Public Function Update_Statement(sUpdate_Stmt) As Boolean
Dim db As Database
Set db = CurrentDb
db.Execute (sUpdate_Stmt)
Update_Statement = True
End Function
我会的,但我完全不明白文本框有什么用。您不想在表中更新多列列表框选择吗?据我所知,您不需要.edit/.update,只需要执行INSERT或update SQL语句……Hiya Kim,我正在使用列表框选择表中需要更改的行。我使用文本框将信息放入这些行的列中。我遇到的问题是,列表框中有3列指示表中哪些记录需要更改,而我似乎无法更改listindex mid查询的焦点,这就是为什么我认为使用.edit/.update更容易的原因。谢谢回复:-)所以你选择的每一行都有相同的(文本框)信息?您好,您可以使用代码按钮
{}
格式化代码。是的,基本上我正在用日期、培训师、评论更新培训数据库。。。诸如此类。我希望能够选择多个人,并为所有人添加相同的信息。。!我要试着利用这个,谢谢。我需要一点时间才能完全理解它。只是解释一下。我从列表框中选择例如3行。我输入文本,并勾选复选框等。。这是我在表单中创建的。然后我点击一个按钮和文本,复选框信息等。。更新我的表中的相关行。列表框中的Coulmns 1、3和4是我需要更新表的组合键。它正在工作,但它只更新表中的第一行,而不是我选择的三行。你的帖子让我思考了很多:)顺便说一句,谢谢remou,我不知道你的意思,但我知道你已经帮我修好了;-)嗨,Kim,不高兴,我收到一个错误,说update语句不明确,如果我没有正确理解,很抱歉:-/I做了Kim所做的一切是的,我没有更改的唯一变量是“bSuccess=update\u statement(sSQL\u update)”,“update\u statement(sUpdate\u Stmt)”,“db.Execute(sUpdate\u Stmt)”和Update_Statement=True。抱歉,我昨天在您回复时离开了工作。我现在在想,如果我改变列表框的焦点并保存这些变量,然后在sql语句中使用它们,这可能会起作用。这里希望…!:-“嗨,Kim,让你知道我终于让它起作用了。我需要使用上面示例中的.Column来更改列表框中的索引。非常感谢你花时间帮我一把,阻止一个爱尔兰人崩溃:-)。。。红色