使用VBA从Excel写入以访问多列组合框字段

使用VBA从Excel写入以访问多列组合框字段,excel,vba,ms-access,Excel,Vba,Ms Access,我有一个带有两个表的Access文件:用户和产品。用户保留可以写入访问文件的用户列表(userID、systemID、name等字段)。Products保留一个产品属性列表,包括谁对记录进行了上次更新。最后一个更新字段是一个组合框,有两列:userID(绑定到此字段)、name(由于列宽为0;“2”,因此显示此字段) 我还有一个Excel文件,名为模拟器。使用VBA,模拟器从products表中读取数据,使用各种预测算法模拟产品的未来,然后将预测写回Access 当Excel写回产品记录时,我想

我有一个带有两个表的Access文件:用户和产品。用户保留可以写入访问文件的用户列表(userID、systemID、name等字段)。Products保留一个产品属性列表,包括谁对记录进行了上次更新。最后一个更新字段是一个组合框,有两列:userID(绑定到此字段)、name(由于列宽为0;“2”,因此显示此字段)

我还有一个Excel文件,名为模拟器。使用VBA,模拟器从products表中读取数据,使用各种预测算法模拟产品的未来,然后将预测写回Access

当Excel写回产品记录时,我想记录最后一个更新作者。假设这个用户存在(userID=100,name=Simulator,比方说),我该怎么做

我现在有

' Open Access database, get products table, get product record
connection.Open ...
products.Open "Products", connection, ...
products.Filter = "ProductID = " & productNumber

' Update record
products("LastUpdateAuthor") = "100; Simulator"
products.Update
products.Close

这会将“100;模拟器”写入正确的字段。如何让它识别100是绑定列,Simulator是第二列?

应该只将用户ID保存到LastUpdateAuthor字段中。然后,多列组合框RowSource应该是Users表的SQL语句,以便检索和查看相关的用户名。因此,在UserID为100和name Simulator的用户中有一个记录,然后仍然保存UserID


只要RowSourceType是Table/Query,它就会看到
100;Simulator
值作为LastUpdateAuthor字段中的单个字符串。可以将combobox RowSourceType设置为ValueList,然后使用代码操作记录集和Add方法将LastUpdateAuthor数据加载到RowSource,分号将被识别为列分隔符。但是,如果您按照第一段中的描述进行操作,则不需要这样做。

我认为需要对表格设计有更多的了解。请给出Product表中记录的示例,包括字段名。尚不清楚
userID
字段是如何链接的……假设它设计正确,那么您是绝对正确的。这是我几小时前尝试的第一件事,但我保存了UserID,我的SQL语句使用了SystemID。一旦我保存了SystemID,它就按照我的预期和您描述的那样工作了。我犯了一个小错误,做了很多额外的工作。典型的调试叹息。