以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]请教如何查找第二个或最后一个不重复的字符串 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=12354) |
||
-- 作者:yanzhen2010 -- 发布时间:2011/8/30 21:09:00 -- [求助]请教如何查找第二个或最后一个不重复的字符串 请教如何查找第二个或最后一个不重复的字符串 问题如图 如:查找住院号为750的病人所在的科室。排除重复后找出第二个或最后一个不重复的科室名称。 有点想自动列表项目的排除。 诚望指点 如:第一次出现的不重复科室为“1病区”,第二次出现得不重复科室为“2病区”。 我的代码是: Dim zk As DataRow = DataTables("长期医嘱").Find("[住院号] = \'" & e.DataRow("住院号") & "\'","科室",1) 不能找出第二次出现得不重复科室,而是第二行。
[此贴子已经被作者于2011-8-30 21:19:28编辑过]
|
||
-- 作者:狐狸爸爸 -- 发布时间:2011/8/30 21:29:00 -- http://www.foxtable.com/help/topics/0392.htm http://www.foxtable.com/help/topics/1435.htm
|
||
-- 作者:yanzhen2010 -- 发布时间:2011/8/30 22:11:00 -- 谢谢老总,但是老总没有明白我的意图,我并不是要提取全部不重复的值作为集合或列表项目,而是在不重复的值中找出第二个不重复的值填入到其他表。 我修改的代码如下: Dim zk As DataRow = DataTables("长期医嘱").Find("[住院号] = \'" & e.DataRow("住院号") & "\'","科室 Desc") 此代码用”科室“排序后,找出不是最后一次的记录,也不是不重复科室出现的第一次记录,而是不重复科室出现的第二次记录。 如图:代码找出的不是2011-08-11的记录,也不是2011-8-20 的记录,而是2011-8-26 的记录
[此贴子已经被作者于2011-8-30 22:19:23编辑过]
|
||
-- 作者:狐狸爸爸 -- 发布时间:2011/8/30 22:13:00 -- 呵呵,既然已经得到全部的值,那么要取得其中第二个值,不是很简单吗? |
||
-- 作者:yanzhen2010 -- 发布时间:2011/8/30 22:29:00 -- 对老总来说很简单,对我来说不容易,没有经验。 以我的理解,如果使用GetUniqueValues函数,那么后面的代码将需要更多的判断, 首先要判断科室数是不是大于2个;第二还要使用分割函数进行分割才能得到第二个不重复的值。 我喜欢简单。 我的完整代码如下: If e.DataCol.Name = "住院号" Then If e.DataRow("住院号") IsNot Nothing Then Dim zk As DataRow = DataTables("长期医嘱").Find("[住院号] = \'" & e.DataRow("住院号") & "\'","科室 Desc") If zk IsNot Nothing Then e.DataRow("转入日期") =zk("开嘱日期") e.DataRow("转入科室") =zk("科室") e.DataRow("接管医生") =zk("医生") Else e.DataRow("转入日期") =Nothing e.DataRow("转入科室") =Nothing e.DataRow("接管医生") =Nothing End If End If End If [此贴子已经被作者于2011-8-30 22:41:51编辑过]
|
||
-- 作者:狐狸爸爸 -- 发布时间:2011/8/30 22:35:00 -- Dim vals As List(of String) = DataTables("长期医嘱").GetUniqueValues(("[住院号] = \'" & e.DataRow("住院号") & "\'", "科室") if vals.Count > 0 then messagebox.show("第一个值:" & vals(0)) end if if vals.Count > 1 then messagebox.show("第二个值:" & vals(1)) end if |
||
-- 作者:e-png -- 发布时间:2011/8/30 22:40:00 -- 你2011-8-26 的记录有四个,要那一个呢。
|
||
-- 作者:yanzhen2010 -- 发布时间:2011/8/30 22:44:00 -- 要的是第一次出现2病区的记录 |
||
-- 作者:e-png -- 发布时间:2011/8/30 23:00:00 -- 以下是引用yanzhen2010在2011-8-30 22:44:00的发言:
要的是第一次出现 2病区的记 2011-8-26 的记录有四个都有可能排在第一次出现的位置呀。其实你是想要最后的2病区的记录,只是它没有排在可看到的位置而已,建议你按开嘱日期排序。 |
||
-- 作者:yanzhen2010 -- 发布时间:2011/8/30 23:20:00 -- If e.DataCol.Name = "住院号" Then If e.DataRow("住院号") IsNot Nothing Then
e.DataRow("转入日期") =vals("开嘱日期") e.DataRow("转入科室") =vals(1) e.DataRow("接管医生") =vals("医生") Else e.DataRow("转入日期") =Nothing e.DataRow("转入科室") =Nothing e.DataRow("接管医生") =Nothing End If End If End If 经过老总指点,写出了如上代码,虽然能够通过vals(1)得到“科室”名称,但是如何得到对应的"开嘱日期"和“医生”呢?反复试验也没成功。 f e.DataCol.Name = "住院号" Then If e.DataRow("住院号") IsNot Nothing Then
e.DataRow("转入日期") =vals("开嘱日期") e.DataRow("转入科室") =vals(1) e.DataRow("接管医生") =vals("医生") Else e.DataRow("转入日期") =Nothing e.DataRow("转入科室") =Nothing e.DataRow("接管医生") =Nothing End If End If End If 经过老总指点,写出了如上代码,虽然能够通过vals(1)得到“科室”名称,但是如何得到对应的"开嘱日期"和“医生”呢?反复试验也没成功。 [此贴子已经被作者于2011-8-30 23:28:13编辑过]
|