以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]对数值的查询筛选 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=86460) |
||||
-- 作者:hzcaqjf -- 发布时间:2016/6/17 17:15:00 -- [求助]对数值的查询筛选 Dim t As Table = Tables("窗口1_table1") Dim sql As String Dim st As String = e.Form.Controls("TextBox1").text If st > "" Then sql = "select * fro m {订单} where CStr(IIf(单价 is null ,0,单价)) = \'" & st & "\' or CStr(IIf(数量 is null ,0,数量)) = \'" & st & "\'" t.fill(sql,"yy",True) t.AutoSizeCols() End If 对-1和1之间数值(不包括-1和1)比如-0.2,0.5等数值都不能筛选,而其它数值都可以筛选.求解?
[此贴子已经被作者于2016/6/17 17:18:37编辑过]
|
||||
-- 作者:大红袍 -- 发布时间:2016/6/17 19:05:00 -- Dim t As Table = Tables("窗口1_table1") Dim sql As String Dim st As String = e.Form.Controls("TextBox1").text If st > "" Then sql = "select * fr om {订单} where IIf(单价 is null ,0,单价) >= " & st-0.000001 & " and IIf(单价 is null ,0,单价) <= " & st + 0.000001 & " or IIf(数量 is null ,0,数量) >= " & st-0.000001 & " and IIf(数量 is null ,0,数量) <= " & st+0.000001 & "" t.fill(sql,"yy",True) t.AutoSizeCols() End If |
||||
-- 作者:hzcaqjf -- 发布时间:2016/6/17 19:29:00 -- 测试通过! 难道输入数值0.5,在数据库中实际值会变为0.4999999999...? 但大于1的小数值又能精确查询?数据库真是太深奥了. 要不是老师指点,就是想破脑袋也不知如何解决.
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2016/6/18 8:29:00 -- 0.5= 0.499999
这样的问题,通常不会发生,你的数据应该是从其他地方导入的,之前是其他软件处理的。
你在SQL执行窗口,执行一遍:
upda te {订单} Set [折扣] = Round(cint([折扣] * 100)/ 100,2) |
||||
-- 作者:hzcaqjf -- 发布时间:2016/6/18 15:56:00 -- 狐爸: upda te 后还是不能查询大于-1 且 小于 1 的小数值(原代码). 而大红袍老师的代码能够查询. 换成新的数据库(foxtable安装系统的"订单.mdb")还是一样.
|
||||
-- 作者:hzcaqjf -- 发布时间:2016/6/18 16:12:00 -- 问题已解决,去掉Cstr 和 \' \' 就也能查询. |