以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  SQLFind  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=130913)

--  作者:无限5180
--  发布时间:2019/2/11 16:51:00
--  SQLFind
Dim bh As String = forms(args(0)).controls("编号").text
Dim dr As DataRow = DataTables("全表").sqlfind("编号 = \'" & bh & "\' and 代码 = \'CGFK\' And ID = \'" & _xtyhid & "\'")
If dr IsNot Nothing Then
    msgbox("找到")
Else
    msgbox("未找到")
End If

出现一个很奇怪的现象,采用SQLFind 显示“未找到”,但采用find 显示“找到”,请问老师这是什么原因。

--  作者:有点甜
--  发布时间:2019/2/11 19:38:00
--  
1、sqlfind,是查找已经保存的数据,请确保你的数据已经保存;

2、sqlfind的条件比较严格,如果是数值列,不能加引号

Dim dr As DataRow = DataTables("全表").sqlfind("编号 = " & bh & " and 代码 = \'CGFK\' And ID = " & _xtyhid & "")

--  作者:无限5180
--  发布时间:2019/2/11 20:07:00
--  

老师,我筛选的条件都不是数值,是字符串。

Dim dr As DataRow = datatables("全表").SQLFind("编号 = \'CGFK190211-0048\'") 
If dr IsNot Nothing Then
    msgbox("找到")
Else
    msgbox("未找到")
End If

我即使按这个条件查找,也还是SQLFind 显示“未找到”,而Find 显示“找到”


图片点击可在新窗口打开查看此主题相关图片如下:采用find显示找到.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:用sqlfind显示未找到.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2019/2/11 20:27:07编辑过]

--  作者:有点蓝
--  发布时间:2019/2/11 20:26:00
--  
确保这个编号的数据已经保存。数据库里的编号列是什么类型的列?char?varchar?
--  作者:无限5180
--  发布时间:2019/2/11 20:30:00
--  
数据是旧数据已经保存了,这个列的数据类型是“nvarchar”,长度150
[此贴子已经被作者于2019/2/11 20:31:44编辑过]

--  作者:有点蓝
--  发布时间:2019/2/11 20:44:00
--  
看看数据库这个编号的数据是不是有多余的空格
--  作者:无限5180
--  发布时间:2019/2/11 20:46:00
--  
比较邪门,也找过,没有
--  作者:有点蓝
--  发布时间:2019/2/11 20:49:00
--  
导出数据库和项目实例发上来测试
--  作者:无限5180
--  发布时间:2019/2/11 22:29:00
--  
老师,我怀疑编号前缀为:“CGFK” 的行我是直接后台写入的
Dim max As String = DataTables("全表").SQLCompute("Max(编号)","编号 Like \'CGFK%\'")
Dim s1 As String = "CGFK190211-0051" 
output.show("max :" & max)  
output.show("s1 :" & s1)  
output.show("max 长度:" & max.length)                                                    
output.show("s1 长度:" & s1.length)
output.show("s1.substring(s1.length-4) :" & s1.substring(s1.length-4)) 
这是我从命令窗口执行的程序,从后台调取的值的长度与从新写入的长度,虽然名称一样但显示长度不一样

图片点击可在新窗口打开查看此主题相关图片如下:后台写入的编号与非后台写入的编号长度不一致.png
图片点击可在新窗口打开查看

执行:
max = max.trim()
后长度变一致了,不知道怎么会有那么多空格,未trim之前的长度正好是列宽,现在正常了

[此贴子已经被作者于2019/2/11 22:37:56编辑过]

--  作者:有点蓝
--  发布时间:2019/2/11 22:38:00
--  
说明数据有多余的空格!

确定这个列的数据类型是“nvarchar”?