0

我试图弄清楚如何使用组合框创建一个表单,该组合框使用主表,而组合框使用查询。我想要做的是让组合框在更改后更新。它们是 65 个组合框,每个组合框都有自己的默认值 (1 - 65)。主表有一个名为“Recall_Position”的列,查询从中提取“Lastname”和“Firstname”。打开表单时,每个组合框都会自动填充“Recall_Position”等于组合框默认值的行中的姓氏。

示例 1:在“Recall_position”中包含数字 1 的行在“Lastname”下的同一行中的名称为 Smith,当打开表单时,默认设置为“1”的组合框将打开,并且 Smith 已经在组合框。这已经设置并且没有问题。

我想要得到的是,当在组合框中选择了不同的“姓氏”时,它将清除“姓氏”中的数字,并使用该组合框的默认数字设置新的“姓氏”。

Example2:使用Example1,当combobox从Smith变为Woods时,会在“Lastname”中找到Smith,并到“Recall_position”下的同一行并清除Smith的号码,然后找到Woods并将“Recall_position”设置为“1”。

如果我必须在更改时为每个组合框添加 VBA,它不会打扰我。这背后的原因是我正在创建一个报告,该报告将根据“Recall_position”提取信息以创建姓名和电话号码名册。

组合框

4

1 回答 1

0

尝试使用此示例 2:

Dim dbs As New ADODB.Connection
Dim rst As New ADODB.Recordset

Set dbs = CurrentProject.Connection
  With rst
       Set .ActiveConnection = CurrentProject.Connection
       .Source = "TheTableYouHave"
       .CursorLocation = adUseClient
       .CursorType = adOpenKeyset
       .LockType = adLockOptimistic
       .Open
   End With
rst.MoveFirst

rst.Find "[Recall Position] "27"" ' Will go to line number that hold 27
OldLastName = rst!LastName ' Save the old last name
rst!LastName = NewLastName ' Replace lastname in line 27 with new last name

set dbs = Nothing
set rst = Nothing

等等等等

您也可以将第一个![Recall Position] 替换为另一个数字。这只是为了让您了解如何执行此操作。当您使用rst.某物时,您告诉记录集要移动到什么、搜索什么等,当它是rst!某物时,您进入记录集以读取一个单元格或替换一个单元格。它不像excel。你不能做一个细胞(2,5)。在这种情况下,它将是:

rst.move 5
rst![Column 2 Name] = NewValue

对应于

cells(2,5) = NewValue 

在 excel 中(对不起,如果我混淆了行和列)。我希望你明白。尝试Debug.Print rst!WhateverYouLike在 VBA 中使用并了解代码。

最好的问候,埃米尔。

于 2015-03-18T12:04:51.457 回答