2012-11-23 42 views
1

我需要在Access 2007表单上添加基本记录搜索功能。我设置了两个组合框,第一个提供三种不同的搜索选项:按引用,按日期或按职员姓名搜索。此ComboBox上的AfterUpdate事件将设置第二个ComboBox的RowSource,以向用户显示任何可用的引用,日期或员工姓名,以允许他们选择他们想要的。 Go按钮然后打开与其标准匹配的记录的关联表单。如果我选择通过引用(长)或名称(字符串)搜索它可以正常工作,但如果我选择按日期搜索,虽然可用日期在第二个组合中正确显示,但当我尝试选择一个时,出现错误:输入的值对此字段无效。这是因为控件只能用于单一数据类型,而我试图在不同时间使用三种不同的控件会让事情变得混乱?我没有在控件的属性中设置任何格式。访问2007年使用一个组合框控件的多种数据类型?

Private Sub btnGo_Click() 
    'go clicked so find request being searched for and open form at that request(s) 
    If Not IsNull(Me.cboSearchOption) And Not IsNull(Me.cboSearchFor) Then 
     'search variables entered so go to specified request 
     Select Case [gblOption] 
      Case "Reference" 
        DoCmd.OpenForm "frmRequestForInformation", , , "reference = " & Me.cboSearchFor.Value 
      Case "Request date" 
        DoCmd.OpenForm "frmRequestForInformation", , , "date_request_received = #" & Me.cboSearchFor.Value & "#" 
      Case "Staff" 
        DoCmd.OpenForm "frmRequestForInformation", , , "signed_by = '" & Me.cboSearchFor.Value & "'" 
     End Select 
    Else 
     MsgBox "Please ensure you have entered search values in both fields", vbOKOnly, "Unable to search" 
    End If 

末次

注:gblOption包含cboSearchOption的价值,并与行来源为cboSearchFor沿设置在其更新后事件。

+1

您应该发布Go按钮的代码。 – Fionnuala

+0

也尝试使用变量变量来保存组合框中的值并将其传递给窗体。现在我发现,如果我先传递一个日期,那么它工作正常,但如果我尝试搜索其他类型之一,则会引发相同的错误。 – Chelle

+0

用简单的表单和类似的设置进行测试,我没有遇到任何问题。这与改变组合的数据类型无关,由分隔符处理。你有没有尝试通过代码来获取错误行? – Fionnuala

回答

0

听起来像第二个组合框有一个控制源。 Access试图将该源设置为日期并且不开心。您不应该需要该组合框的控制源。

我重载了组合框,但没有太多问题,其余代码看起来没问题。