Foxtable(狐表)用户栏目专家坐堂 → [求助]请教如何查找第二个或最后一个不重复的字符串


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

主题:[求助]请教如何查找第二个或最后一个不重复的字符串

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


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
[求助]请教如何查找第二个或最后一个不重复的字符串  发帖心情 Post By:2011/8/30 21:09:00 [显示全部帖子]

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

图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看


问题如图
如:查找住院号为750的病人所在的科室。排除重复后找出第二个或最后一个不重复的科室名称。
有点想自动列表项目的排除。
诚望指点

如:第一次出现的不重复科室为“1病区”,第二次出现得不重复科室为“2病区”。

我的代码是:  
 Dim zk As  DataRow = DataTables("长期医嘱").Find("[住院号] = '" & e.DataRow("住院号") & "'","科室",1)
不能找出第二次出现得不重复科室,而是第二行。
[此贴子已经被作者于2011-8-30 21:19:28编辑过]

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


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
  发帖心情 Post By:2011/8/30 22:11:00 [显示全部帖子]

谢谢老总,但是老总没有明白我的意图,我并不是要提取全部不重复的值作为集合或列表项目,而是在不重复的值中找出第二个不重复的值填入到其他表。

我修改的代码如下:

 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编辑过]

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


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
  发帖心情 Post By:2011/8/30 22:44:00 [显示全部帖子]

要的是第一次出现2病区的记录

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


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
  发帖心情 Post By:2011/8/30 23:20:00 [显示全部帖子]

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编辑过]

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


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
  发帖心情 Post By:2011/8/31 19:59:00 [显示全部帖子]

Dim vals As List(of String()) = DataTables("长期医嘱").GetUniqueValues("[住院号] = '" & e.DataRow("住院号") & "'", "科室","开嘱日期","医生")


老总给的这段代码有误,提示不合法。问题在Dim vals As List(of String()) ,但不知如何改正?

问题已解决,谢谢老总、版主和各位狐友的帮助指点。
[此贴子已经被作者于2011-8-31 20:52:24编辑过]

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


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
  发帖心情 Post By:2011/8/31 20:54:00 [显示全部帖子]

是多了个符号,去掉了,现在没问题。

 回到顶部