使用组合框在Access中自动填充表单

时间:2016-08-15 11:04:29

标签: vba ms-access access-vba

当我想在Microsoft Access中自动填充表单时,我遇到了问题。我的想法是我使用组合框来选择名称。然后我的Combobox的onChange代码自动将所有其他数据插入到正确的字段中。我在组合框上使用此代码。

let stringURLSearchPostCode = "http://maps.apple.com/?q=" + self.textFieldPostcode.text
UIApplication.sharedApplication().openURL(NSURL(string: stringURLSearchPostCode)!)

这种方法适用于个人号码和电子邮件地址。但它不适用于生日日期,它返回一个空值,但当我检查我的表时,在适当的字段中有一个日期。

我错过了什么吗?我尝试了一切,但它不会工作。 我当时认为问题与生日列是表中的最后一列有关。或者有日期类型。

提前感谢您的时间和efford!

编辑;缺少.Column(1),因为这是已经使用ComboBox插入的名称。

2 个答案:

答案 0 :(得分:1)

问题的措辞引起了一些混乱,我会试着说明我的解释方式,如果我说得对,它可能会引导你回答。

您有一个名为cmdName的组合框,它预先填充了表中的数据。组合框的内容可能如下所示(您可能已将列宽设置为零以隐藏数据)

0001|Gary Evans|gary@email.com|01/Jan/1970
0002|J Rommers |JR@email.com  |02/Jan/1970

当用户选择J Rommers Me.tbPersonalNumber填充Me.cmbName.Column(0)(0002)且Me.tbEmailadress填充Me.cmbName.Column(2)(JR@email.com)但Me.tbBirthday({1}}(02 / Jan / 1970)没有填充Me.cmbName.Column(3)

假设Me.tbBirthday是一个没有代码可以清除它的文本框,我怀疑问题是在组合框内。我不确定您的组合框是如何设置的,我会建议以下检查: -

  • 在组合框属性中,Column Count是否等于4?
  • 在调试中,Me.tbBirthday = Me.cmbName.Column(3)上有一个断点,它会显示您所追踪的日期吗?
    • 如果不是,那么填充组合框的查询是否包含在其中?

根据评论进行编辑以进一步提供帮助: -

  • 将查询更改为SELECT Personel.PersonalNumber, Personel.Emailadress, Personel.Birthday, Personel.Name FROM Personel ORDER BY Personel.Name;,这会将您想隐藏的所有字段隐藏在前面。
  • cmbName的列宽属性更改为0,0,0,这首先是您想要隐藏的属性,并留下最后一个来填充组合框的宽度。
  • 根据答案
  • 确保列计数属性仍为4
  • 按照以下更改代码并Gustav回答

更换代码: -

Me.tbPersonalNumber = Me.cmbName.Column(0)
Me.tbEmailadress = Me.cmbName.Column(1)
Me.tbBirthday = DateValue(Me.cmbName.Column(2))

这会考虑在查询中移动的字段,并确保日期显示为您想要的日期。

答案 1 :(得分:1)

组合框(和列表框)总是返回一个字符串,因此将其转换为日期值:

def func(a, b=10):
    print([a, b])