Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 基于表单组合框更改数据表单元格_Ms Access_Combobox_Datasheet - Fatal编程技术网

Ms access 基于表单组合框更改数据表单元格

Ms access 基于表单组合框更改数据表单元格,ms-access,combobox,datasheet,Ms Access,Combobox,Datasheet,我试图弄清楚如何创建一个表单,其中的组合框使用主表,而组合框使用查询。我想做的是让组合框在更改后更新。它们是65个组合框,每个组合框都有自己的默认值1-65。主表有一个名为Recall_Position的列,查询从中提取Lastname和Firstname。当表单打开时,每个组合框都会自动填充来自调用位置等于组合框默认值的行的最后一个名称 示例1:在“回忆”位置包含数字1的行在“姓氏”下的同一行中有名称Smith,当窗体打开时,默认设置为1的组合框将在组合框中已选中Smith的情况下打开。这已经

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

示例1:在“回忆”位置包含数字1的行在“姓氏”下的同一行中有名称Smith,当窗体打开时,默认设置为1的组合框将在组合框中已选中Smith的情况下打开。这已经设置好,并且可以正常工作

我试图得到的是,当在组合框中选择不同的Lastname时,它将清除Lastname中的数字,并使用该组合框的默认数字设置新的Lastname

示例2:使用示例1当组合框从Smith更改为Woods时,它将查找Lastname中的Smith,并转到Recall_position下的同一行,清除Smith的号码,然后查找Woods并将Recall_position设置为1

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


请尝试将其用于示例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
等等等等

您也可以只更换rst![调用位置]使用另一个号码。这只是给你一个如何做到这一点的想法。 当你使用rst时。您告诉记录集要移动到什么位置、搜索什么等,以及何时重新启动!在某些情况下,您进入记录集中读取单元格或替换单元格。它不像excel。你不能做一个细胞2,5。在这种情况下,它将是:

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

cells(2,5) = NewValue 
在excel中,如果我混淆了行和列,很抱歉。我希望你能理解。 尝试使用调试。打印rst!你喜欢VBA中的什么,并了解代码


向你问好,埃米尔。

我不太明白-你能上传一张截图吗?您想更改哪个组合框?全部50?仅从文字上很难理解这个过程。尝试用一些图片和逐步描述更新您的问题。我想其他人也觉得很难,因为到目前为止还没有人回答。更新了问题。正如我理解的示例1,您希望默认值是一个变量。从最新选择的名称设置的变量。如果默认值为=1,则无法更改默认值。你需要通过VBA。让我们看看这个例子,看看例子2听起来有可能。您需要从VBA输入记录集。您知道如何输入吗?。然后,您可以在您谈论的组合框中搜索组合框_1中的值,然后交换数字或您想做的任何事情。你知道记录集是如何工作的吗?有点接近了。我不想改变一行中的任何信息,除了位置上的数字。我试图查找或获取帮助的是,将1设置为默认值的combobox命名为combo1。因此,以私有子组合1\u Change开头的代码在tableUserdata列Recall\u位置中找到1并将其清除。然后找到组合框更改为的姓氏,并在同一行的Recall_position下输入数字1,或者我想Private Sub Combo1_AfterUpdateI仍然会说您需要我提供的代码。如果要在表中移动数字,需要上面的代码。你不能这样做,除非提出一个查询和相关的。。。如果您想交换f.x.编号1和5,使5转到第1行,1转到第5行,则需要使用上述编写的代码。要更改行中的编号,请重新设置![Recal_Position]=5,如果希望为5。