combobox.column属性返回在vba中无效使用null



我是一个数据库//访问noob,请耐心等待。我有一个数据库,用于跟踪技术咨询公司的顾问及其供应商。有些顾问是他们自己的供应商,有些则有第三方供应商来处理他们的合同。如果顾问也是他们自己的供应商,则两者的联系信息相同。联系人信息存储在一个单独的表中,其中包含ConsultantID(ConsultantT中的主键)和VendorID(VendorT中的私钥)的主键ContactID和外键字段。

在其中一个表格上已经输入了相关的联系信息的情况下,我希望能够选择已经存在的联系信息记录,并告诉数据库根据主表格上的记录将另一个外键ID字段添加到现有记录中。因此,例如,如果我已经通过顾问表格输入了顾问A的联系信息,当我打开供应商表格添加顾问A的供应商时,我希望从组合框中选择"顾问A",并将其信息填充供应商F的联系信息表格,同时将供应商ID添加到顾问A的现有联系信息记录中。

我想我几乎已经解决了,但还有最后一件事要做。现在我有一个弹出表单(ChooseConsultantInfoF),用于选择现有的ContactInfo记录。在该表单上,我有一个搜索组合框(SelectConsultantCombo)来选择现有记录,还有一个命令按钮(SaveConsultantbtn),我试图对其进行编码,以更新ContactInfoT,并将VendorID从VendorF上的当前记录添加到ContactInfoT中的现有记录。以下是弹出表单的所有代码:

Option Compare Database
Option Explicit
Private Sub SaveConsultantbtn_Click()
Dim stupid As Long
stupid = SelectConsultantCombo.Column(0)
DoCmd.RunSQL "UPDATE ContactInfoT SET VendorID = (Forms!VendorsF!VendorID) Where ContactInfoID = " & stupid & ";"
End Sub
Private Sub SelectConsultantCombo_AfterUpdate()
Dim rst As DAO.Recordset
Set rst = Me.RecordsetClone
rst.FindFirst "ContactInfoID = " & Me!SelectConsultantCombo
Me.Bookmark = rst.Bookmark
leave:
Me!SelectConsultantCombo = Null
If Not rst Is Nothing Then Set rst = Nothing
Exit Sub
End Sub

当我尝试将其付诸行动时,我会得到错误94:无效使用Null,它会拉起

stupid = SelectConsultantCombo.Column(0)

我知道代码块的工作原理与此不同——我尝试过一次使用数值而不是变量的Click事件:

Private Sub SaveConsultantbtn_Click()
DoCmd.RunSQL "UPDATE ContactInfoT SET VendorID = (Forms!VendorsF!VendorID) Where ContactInfoID = 1 ;"
End Sub

没有任何麻烦,所以问题一定出在调用combobox的列上。

我还尝试用Nz定义变量以允许Null:

stupid = Nz(Me.SelectConsultantCombo.Column(0), 0)

这样代码也能正常工作,但仍然不会将我的VendorID保存到ContactInfoT中的记录中。组合框中没有一列包含Null值(无论如何,我都找不到)。如果这有用的话,不知道,但组合框的行源是:

SELECT ContactInfoT.ContactInfoID, ConsultantT.ConsultantID, ConsultantT.FirstName, ConsultantT.LastName FROM ConsultantT INNER JOIN ContactInfoT ON ConsultantT.ConsultantID = ContactInfoT.ConsultantID ORDER BY ConsultantT.[LastName], ConsultantT.[FirstName];

有人知道Access为什么不识别我的combox.column属性吗?或者有其他方法可以在VBA中编写此内容以避免此错误吗?

首先尝试stupid = Me.SelectConsultantCombo.Column(0)(您缺少Me.部分)。

但您真正应该做的是确保组合框上的绑定列设置正确,并且只使用stupid = Me.SelectConsultantCombo

我从组合的后更新中删除了Me!SelectConsultantCombo = Null,现在它运行得很好!当然,如果我在代码中的某个地方将combo设置为null,它会在其他地方出现null,d!

相关内容

  • 没有找到相关文章

最新更新