Foxtable(狐表)用户栏目专家坐堂 → 取字符检索问题求教


  共有2805人关注过本帖树形打印复制链接

主题:取字符检索问题求教

帅哥哟,离线,有人找我吗?
hitzfeld
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:515 积分:5051 威望:0 精华:0 注册:2017/9/1 23:28:00
取字符检索问题求教  发帖心情 Post By:2021/2/2 14:12:00 [显示全部帖子]

我有个需求是这样,取A表的单号查找B表对应记录,但是由于B表首字符存在多种可能性,所以需要把首字符去除再查找。我写了下面的代码报错,求指点
For Each dr As DataRow In DataTables("供应商对账表").DataRows
    Dim drs As String = dr("单号")
Dim  gdh As String = drs.SubString(2,7)
Dim sq As DataRow
sq = DataTables("WH_STOCK").SQLFind("SUBSTRING('number',2,7) = '"& gdh &"'") 
next
其中错误就在SQLFind("SUBSTRING('workbillno',2,7)  = '"& gdh &"'") ,个人觉得应该是SQLFIND不支持取字符的表达式?如果都不取字符,则代码能正常运行。但是加了取字符的表达式就报错“未将对象引用设置到对象的实例”。
[此贴子已经被作者于2021/2/2 14:19:11编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
hitzfeld
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:515 积分:5051 威望:0 精华:0 注册:2017/9/1 23:28:00
  发帖心情 Post By:2021/2/2 14:18:00 [显示全部帖子]

SQL server 2005

 回到顶部
帅哥哟,离线,有人找我吗?
hitzfeld
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:515 积分:5051 威望:0 精华:0 注册:2017/9/1 23:28:00
  发帖心情 Post By:2021/2/2 14:20:00 [显示全部帖子]

抱歉,代码简化的有点乱了,实际应该是SQLFind("SUBSTRING('number',2,7) = '"& gdh &"'") 

 回到顶部
帅哥哟,离线,有人找我吗?
hitzfeld
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:515 积分:5051 威望:0 精华:0 注册:2017/9/1 23:28:00
  发帖心情 Post By:2021/2/2 14:30:00 [显示全部帖子]

蓝老师,仍然报错.........首字符后面的字符串长度是固定的,不需要len([number]) - 1,我用了len([number]) - 1和固定数值都报同样错误

 回到顶部
帅哥哟,离线,有人找我吗?
hitzfeld
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:515 积分:5051 威望:0 精华:0 注册:2017/9/1 23:28:00
  发帖心情 Post By:2021/2/2 14:34:00 [显示全部帖子]

For Each dr As DataRow In DataTables("供应商对账表").DataRows
    Dim drs As String = dr("G单号")
Dim  gdh As String = drs.SubString(1,8)
Dim sq As DataRow
sq = DataTables("WH_STOCK").SQLFind("SubString([workbillno],1,8) = '"& gdh &"' and warehouse = '内仓' and inorout= 'in' AND orderdate is not null") 
dr("workbillno") = sq("workbillno")
dr("SupplierName") = sq("SupplierName")
dr("CardBoard_l") = sq("CardBoard_l")
dr("CardBoard_w") = sq("CardBoard_w")
dr("material") = sq("material")
dr("sort") = sq("sort")
dr("planNumber") = sq("planNumber")
dr("InNumber") = sq("InNumber")
dr("orderdate") = sq("orderdate")
dr("issuedate") = sq("issuedate")
dr("Customerno") = sq("Customerno")
dr("Itemname") = sq("Itemname")
Next

 回到顶部
帅哥哟,离线,有人找我吗?
hitzfeld
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:515 积分:5051 威望:0 精华:0 注册:2017/9/1 23:28:00
  发帖心情 Post By:2021/2/2 14:43:00 [显示全部帖子]

蓝老师,加上判断虽然不报错,但是无法返回任何结果,且界面会卡住大约15秒。
实际上库数据量不大,如果不加取字符的SubString,运行时间不超过1秒。

即使我在sqlfind语句下面加上msgbox(sq(“workbillno”)),也不会返回结果。说明一直都是错误的
[此贴子已经被作者于2021/2/2 14:50:39编辑过]

 回到顶部