请教如何查找第二个或最后一个不重复的字符串

此主题相关图片如下:未命名.jpg

问题如图
如:查找住院号为750的病人所在的科室。排除重复后找出第二个或最后一个不重复的科室名称。
有点想自动列表项目的排除。
诚望指点
如:第一次出现的不重复科室为“1病区”,第二次出现得不重复科室为“2病区”。
我的代码是:
Dim zk As DataRow = DataTables("长期医嘱").Find("[住院号] = '" & e.DataRow("住院号") & "'","科室",1)
不能找出第二次出现得不重复科室,而是第二行。
[此贴子已经被作者于2011-8-30 21:19:28编辑过]
谢谢老总,但是老总没有明白我的意图,我并不是要提取全部不重复的值作为集合或列表项目,而是在不重复的值中找出第二个不重复的值填入到其他表。
我修改的代码如下:
Dim zk As DataRow = DataTables("长期医嘱").Find("[住院号] = '" & e.DataRow("住院号") & "'","科室 Desc")
此代码用”科室“排序后,找出不是最后一次的记录,也不是不重复科室出现的第一次记录,而是不重复科室出现的第二次记录。

此主题相关图片如下:未命名.jpg

如图:代码找出的不是2011-08-11的记录,也不是2011-8-20 的记录,而是2011-8-26 的记录
[此贴子已经被作者于2011-8-30 22:19:23编辑过]
呵呵,既然已经得到全部的值,那么要取得其中第二个值,不是很简单吗?
对老总来说很简单,对我来说不容易,没有经验。
以我的理解,如果使用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编辑过]
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
以下是引用yanzhen2010在2011-8-30 22:44:00的发言:
要的是第一次出现
2病区的记
2011-8-26 的记录有四个都有可能排在第一次出现的位置呀。其实你是想要最后的2病区的记录,只是它没有排在可看到的位置而已,建议你按开嘱日期排序。
If e.DataCol.Name = "住院号" Then
If e.DataRow("住院号") IsNot Nothing Then
Dim vals As List(of String) = DataTables("长期医嘱").GetUniqueValues(("[住院号] = '" & e.DataRow("住院号") & "'", "科室") |
If vals 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
Dim vals As List(of String) = DataTables("长期医嘱").GetUniqueValues(("[住院号] = '" & e.DataRow("住院号") & "'", "科室") |
If vals IsNot Nothing and vals.count>1 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编辑过]