我正在尝试使查询工作从表单控件获取值(有时只是字符串的第一部分)。我的问题是,仅在键入完整字符串时它才返回记录。
即在姓氏框中,我应该能够键入gr,它会弹出
绿灰色格雷厄姆
但是目前,除非使用完整的搜索字符串,否则它不会显示任何内容。
所涉及的表单上有4个搜索控件,并且仅当填写该框时才在查询中使用它们。
查询是:
SELECT TabCustomers.*,
TabCustomers.CustomerForname AS NameSearch,
TabCustomers.CustomerSurname AS SurnameSearch,
TabCustomers.CustomerDOB AS DOBSearch,
TabCustomers.CustomerID AS MemberSearch
FROM TabCustomers
WHERE IIf([Forms]![FrmSearchCustomer]![SearchMember] Is Null
,True
,[Forms]![FrmSearchCustomer]![SearchMember]=[customerid])=True
AND IIf([Forms]![FrmSearchCustomer].[SearchFore] Is Null
,True
,[Forms]![FrmSearchCustomer]![SearchFore] Like [customerforname] & "*")=True
AND IIf([Forms]![FrmSearchCustomer]![SearchLast] Is Null
,True
,[Forms]![FrmSearchCustomer]![SearchLast] Like [customersurname] & "*")=True
AND IIf([Forms]![FrmSearchCustomer]![Searchdate] Is Null
,True
,[Forms]![FrmSearchCustomer]![Searchdate] Like [customerDOB] & "*")=True;
如果您在表单上具有“过滤器”控件,那么为什么不使用Application.buildCriteria方法,该方法将允许您将过滤条件添加到字符串中,然后从该字符串中进行过滤,并构建WHERE条款在飞行中?
selectClause = "SELECT TabCustomers.* FROM TabCustomers"
if not isnull(Forms!FrmSearchCustomer!SearchMember) then
whereClause = whereClause & application.buildCriteria(your field name, your field type, your control value) & " AND "
endif
if not isnull(Forms!FrmSearchCustomer!SearchFore) then
whereClause = whereClause & application.buildCriteria(...) & " AND "
endif
if not isnull(Forms!FrmSearchCustomer!SearchLast) then
whereClause = whereClause & application.buildCriteria(...) & " AND "
endif
if not isnull(Forms!FrmSearchCustomer!SearchDate) then
whereClause = whereClause & application.buildCriteria(...) & " AND "
endif
--get rid of the last "AND"
if len(whereClause) > 0 then
whereClause = left(whereClause,len(whereClause)-5)
selectClause = selectClause & " WHERE " & whereClause
endif
-- your SELECT instruction is ready ...
编辑:buildCriteria将返回(例如):
'field1 = "GR"'
当您在控件中键入“ GR”时'field1 LIKE "GR*"'
当您键入"GR*"
控件时'field1 LIKE "GR*" or field1 like "BR*"'
如果您键入'LIKE "GR*" OR LIKE "BR*"'
控件PS:如果表单上的“过滤器”控件始终具有相同的语法(比如说“ search_fieldName”,其中“
fieldName”对应于基础记录集中的字段)并且始终位于同一区域(比如说formHeader),然后可以编写一个函数,该函数将自动为当前表单生成一个过滤器。然后可以将此过滤器设置为表单过滤器,或用于其他用途:
For each ctl in myForm.section(acHeader).controls
if ctl.name like "search_"
fld = myForm.recordset.fields(mid(ctl.name,8))
if not isnull(ctl.value) then
whereClause = whereClause & buildCriteria(fld.name ,fld.type, ctl.value) & " AND "
endif
endif
next ctl
if len(whereClause)> 0 then ...
问题内容: 在索引中,我有一个IP字段。字段的类型为“ ip”。 我想搜索所有以“ 192.168”开头的IP 我所有的尝试都失败了,并显示以下消息: 无法解析IP [192.168],不是有效的IP地址 有没有办法做到这一点,还是应该将字段的类型更改为“字符串”? 谢谢。 问题答案: 您可以使用范围查询,例如:
我不明白为什么所有这些空字符串之间。
我正在尝试用Java编写一个函数,它接受两个数组,并对数组1中的索引值求和,其中的值与数组2匹配,例如。 数组1={15、6、99、12、35} 数组2={1,12,7,99,35} 匹配“Array1[索引]”值=2(99)、3(12)、4(35) 因此,返回9(2 3 4) 我建议使用以下方法进行此操作: 但是如果Array2中有一个不匹配的值,我也想返回-1。所以在上面的情况下,1和7不在A
如果某个特定日期没有记录,我需要上面的查询返回计数0。这似乎没有发生。 我尝试了NVL,解码。发现这个问题是由于分组的子句,但不知道如何解决这个问题。 请帮忙!!
问题内容: 我正在用于在运行时更新json配置文件。有时,当模式在json文件中不匹配时,仍然会以返回码0退出。 返回0表示成功完成,但是如果找不到正确的模式并更新文件,为什么返回0?有没有解决方法? 谢谢! 问题答案: 如@cnicutar所评论,命令的返回码表示命令是否成功执行。与您在代码/脚本中实现的逻辑无关。 因此,如果您有: sed将返回,但是如果您编写一些语法/表达式错误,或者输入/文
问题内容: 我需要等到javascript的结果匹配字符串或布尔值。 使用此javascript: 我得到一个“假” /“真”值,我需要等到该值是“假”,所以我确定视频不是在寻找视频,而是找到了一种等待javascript命令值的方法而不是检查值是否与某些文本匹配的方法。 因为在某些情况下,我得到的不是布尔型字符串,而是需要比较那些字符串。 我已经找到了如何在Ruby中而不是在Java中做到这一点