Foxtable(狐表)用户栏目专家坐堂 → 查询某列的值为某个字符串的开头字符串的行


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

主题:查询某列的值为某个字符串的开头字符串的行

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/31 11:42:00 [显示全部帖子]

打不开你的文件,因为没有数据源。

 

我蒙一下,你是要查找货号列以当前行的产品条码开始的行吧,如果这样,代码应该是:

 

Dim dr As DataRow
Dim dt As DataTable
Dim s,sh,s1,s2,s3 As String
Dim cmd As new SQLCommand
cmd.C
cmd.CommandText = "select 产品名称,季别 from {货号名称单价} where 货号 Like '?" &   e.DataRow("产品条码") & "'"
dt = cmd.ExecuteReader
If dt.DataRows.count > 0 Then
    dr = dt.DataRows(0)
    s = e.NewValue
    e.DataRow("货号") = sh = dr("货号")
    e.DataRow("色号1")=s1 = s.SubString(sh.length - 1,2)
    e.DataRow("色号2")=s2 = s.SubString(sh.length + 1,2)
    e.DataRow("尺码号")=s3 = s.SubString(sh.length + 3)
   
Else
    Dim sp As New DotNetSpeech.SpVoice()
    sp.Speak("I am from china.", DotNetSpeech.SpeechVoiceSpeakFlags.SVSFDefault)
    e.Cancel = True
    MainTable = Tables("货号名称单价")
End If

 

SQL的语法和函数,请参考:

http://www.foxtable.com/help/topics/0688.htm

http://www.foxtable.com/help/topics/0692.htm

http://www.foxtable.com/help/topics/1827.htm


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/31 15:26:00 [显示全部帖子]

那就将这一行:

cmd.CommandText = "select 产品名称,季别 from {货号名称单价} where 货号 Like '?" &   e.DataRow("产品条码") & "'"

 

改为:

cmd.CommandText = "select 产品名称,季别 from {货号名称单价} where 产品条码 Like '?" &   e.DataRow("货号") & "'"


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/31 16:04:00 [显示全部帖子]

这个我也没有办法,建议要么统一货号长度,要么规范产品条码,在货号和后续内容之间用一个符号隔开,以便根据输入的条码获取货号进行查询。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/31 16:47:00 [显示全部帖子]

这个简单:

 

Dim s As String = e.NewValue
Dim sh As String
For Each dr As DataRow In DataTables("货号名称单价").DataRows
    If dr.isnull("货号") = False andalso s.startswith(dr("货号"))  Then
        sh = dr("货号")

        exit for
    End If
Next
e.DataRow("货号") = sh

[此贴子已经被作者于2013-7-31 16:55:16编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/31 16:55:00 [显示全部帖子]

呵呵,看上一页的10楼啊。


 回到顶部