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


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

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

帅哥哟,离线,有人找我吗?
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编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/30 21:29:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
yanzhen2010
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/30 22:13:00 [只看该作者]

呵呵,既然已经得到全部的值,那么要取得其中第二个值,不是很简单吗?

 回到顶部
帅哥哟,离线,有人找我吗?
yanzhen2010
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2011/8/30 22:40:00 [只看该作者]

你2011-8-26 的记录有四个,要那一个呢。

 


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


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

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

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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2011/8/30 23:00:00 [只看该作者]

以下是引用yanzhen2010在2011-8-30 22:44:00的发言:
要的是第一次出现 2病区的记

2011-8-26 的记录有四个都有可能排在第一次出现的位置呀。其实你是想要最后的2病区的记录,只是它没有排在可看到的位置而已,建议你按开嘱日期排序。


 回到顶部
帅哥哟,离线,有人找我吗?
yanzhen2010
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
总数 16 1 2 下一页