以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 如何写“包含”查询语句? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=46979) |
||||
-- 作者:gzdw -- 发布时间:2014/3/2 21:22:00 -- 如何写“包含”查询语句? 目的:只要“到会人员”的姓名,已登记在“联系人”,则查询出“电话”。 以下语句只能查询“相同”姓名的“电话” For Each dr1 As DataRow In DataTables("到会人员").DataRows Dim dr2 As DataRow = DataTables("联系人").Find("姓名=\'" & dr1("姓名") & "\'") If dr2 Is Nothing Then Dim Result As DialogResult Result = MessageBox.Show(dr1("姓名") & "在联系人中没找到,中止查询吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If Result = DialogResult.Yes Then Return Nothing Else dr1("电话")= "没有找到电话号码" End If Else dr1("电话")= dr2("电话") End If Next
|
||||
-- 作者:y2287958 -- 发布时间:2014/3/2 21:25:00 -- Dim dr2 As DataRow = DataTables("联系人").Find("姓名 like \'%" & dr1("姓名") & "%\'") [此贴子已经被作者于2014-3-2 21:28:59编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2014/3/2 21:28:00 -- 如下,如果要再精确一些,就这样 "姓名 = \'bb\' or 姓名 like \'bb,*\' or 姓名 like \'*,bb,*\' or 姓名 like \'*,bb\' " For Each dr1 As DataRow In DataTables("到会人员").DataRows Dim dr2 As DataRow = DataTables("联系人").Find("姓名 like \'*" & dr1("姓名") & "*\'") If dr2 Is Nothing Then Dim Result As DialogResult Result = MessageBox.Show(dr1("姓名") & "在联系人中没找到,中止查询吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If Result = DialogResult.Yes Then Return Nothing Else dr1("电话")= "没有找到电话号码" End If Else dr1("电话")= dr2("电话") End If Next |
||||
-- 作者:gzdw -- 发布时间:2014/3/2 21:31:00 -- 执行不正确。变成所有到会人员都找不到“电话”了 查帮助,“包含”是这样用的: Contains 判断字符串是否包含一个给定的子字符串。 语法: Contains(Value) Value:给定的子字符串。 例如: Dim Str1 As String = "I like foxtable" 不知道要达到我的目的,需要如何改? [此贴子已经被作者于2014-3-2 21:36:14编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2014/3/2 21:32:00 -- 不可能,你是复制我的代码吗?我测试是可以的 [此贴子已经被作者于2014-3-2 21:31:54编辑过]
|
||||
-- 作者:gzdw -- 发布时间:2014/3/2 21:39:00 -- 纠正,刚才我测试的是二楼语句,“有点甜”的语句的正确的。 谢谢二位。
|