2015-03-02 107 views
0

我想弄清楚如何使用组合框使用组合框来创建窗体,同时组合框使用查询。我试图做的是让组合框在更改后更新。他们有65个组合框,每个组合框都有自己的默认值(1-65)。主表有一个名为“Recall_Position”的列,并且查询从此处以及“姓氏”和“名字”拉取。当窗体打开时,每个组合框都会自动填充“Recall_Position”等于组合框默认行的行的最后一个名称。基于表单组合框更改数据表单元格

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

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

示例2:使用示例1当组合框从史密斯更改为伍兹时,它将在“姓氏”中找到史密斯,然后转到“召回位置”下的同一行并清除史密斯的编号,然后找到伍兹并将“召回位置” “1”。

如果我必须通过并添加一个VBA来回更改每个组合框,它不会打扰我。其原因是我创建的报告将根据“Recall_position”提取信息来创建名称和电话号码的名单。

combo boxes

+0

不知道我明白 - 你可以把上传的截图?你想改变什么组合框?全部50? – 2015-03-02 13:37:22

+0

该程序很难从单词中理解。试着用一些图片和一步一步的描述来更新你的问题。我认为其他人也觉得很难,因为目前还没有人回复。 – 2015-03-05 08:15:48

+0

更新了问题。 – user2002716 2015-03-11 18:14:26

回答

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 

等等,等等

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

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

相当于

cells(2,5) = NewValue 

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

此致敬礼,埃米尔。

+0

这种感觉很接近。我不想更改任何信息,除了Recall_position中的数字。我试图找到或得到的帮助是说,设置为“1”的组合框的默认值是combo1。因此,以Private Sub Combo1_Change()开头的代码在表(“Userdata”)列“Recall_Position”中找到“1”并将其清除。然后找到组合框被更改为的姓氏,并在“Recall_position”下的同一行中输入数字1 – user2002716 2015-03-18 15:44:31

+0

或者我在考虑Private Sub Combo1_AfterUpdate() – user2002716 2015-03-18 15:50:03

+0

我仍然会说你需要我提供的代码。如果你想在表格中移动数字,你需要上面的代码。除非进行查询并与之相关,否则不能这样做......如果要交换f.x.编号1和5,所以5行1和1行5,你需要使用上面的书面代码。 – 2015-03-18 20:04:40

相关问题