Foxtable(狐表)用户栏目专家坐堂 → [求助]代码不能正确返回姓名,请指教


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

主题:[求助]代码不能正确返回姓名,请指教

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


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
[求助]代码不能正确返回姓名,请指教  发帖心情 Post By:2011/8/5 14:13:00 [只看该作者]

If e.DataCol.Name = "住院号" Then
    Dim vals() As String = e.NewValue.split(":")
    If vals.length > 2 Then
        e.DataRow("住院号") =vals(2)
    Else
        e.DataRow("住院号") =vals(0)
    End If
    Dim dr As DataRow = DataTables("入院登记").Find("[住院号] = '" & e.NewValue & "'")
    If dr IsNot Nothing Then
        e.DataRow("患者姓名") = dr("患者姓名")
    Else
        MsgBox("项目不存在,请重新输入!",64,"提示")
        e.DataRow("患者姓名") = Nothing
    End If
End If

 

执行后把姓名自动清空了

我的录入步骤:1、从列表项目分离出住院号,2、根据住院号找出匹配的姓名。如果没有匹配的姓名,则如下:
  MsgBox("项目不存在,请重新输入!",64,"提示")
        e.DataRow("患者姓名") = Nothing
[此贴子已经被作者于2011-8-5 14:14:06编辑过]

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


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

Dim dr As DataRow = DataTables("入院登记").Find("[住院号] = '" & e.NewValue & "'")

 

改为:

 

Dim dr As DataRow = DataTables("入院登记").Find("[住院号] = '" & e.DataRow("住院号") & "'")


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


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

以下是引用狐狸爸爸在2011-8-5 14:27:00的发言:

Dim dr As DataRow = DataTables("入院登记"). 

改为:

 

Dim dr As DataRow = DataTables("入院登记").

我也试过,将Find("[住院号] = '" & e.NewValue & "'")改为Find("[住院号] = '" & e.DataRow("住院号") & "'")后可以返回姓名,但将住院号清空后又提示错误,姓名不能自动清空。

我的意思:

如果住院号匹配,找出匹配的姓名,

如果住院号不匹配,进行提示,

如果住院号为空,姓名为空。

[此贴子已经被作者于2011-8-5 15:12:55编辑过]

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


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

If e.DataCol.Name = "住院号" Then
    Dim vals() As String = e.NewValue.split(":")
    If vals.length > 2 Then
        e.DataRow("住院号") =vals(2)
    Else
        e.DataRow("住院号") =vals(0)
    End If
    If e.DataRow.Isnull("住院号") Then
        e.DataRow("患者姓名") = Nothing
    Else
        Dim dr As DataRow = DataTables("入院登记").Find("[住院号] = '" & e.DataRow("住院号") & "'")
        If dr IsNot Nothing Then
            e.DataRow("患者姓名") = dr("患者姓名")
        Else
            MsgBox("项目不存在,请重新输入!",64,"提示")
            e.DataRow("患者姓名") = Nothing
        End If
    End If
End If

 


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/8/5 15:25:00 [只看该作者]

最前面加上一个判断:

If e.NewValue = Nothing Then

Else

    Dim vals() As String = e.NewValue.split(":")
    If vals.length > 2 Then
        e.DataRow("住院号") =vals(2)
    Else
        e.DataRow("住院号") =vals(0)
    End If

..................


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


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

以下是引用狐狸爸爸在2011-8-5 15:18:00的发言:

If e.DataCol.Name = "住院号" Then
    Dim vals() As String = e.NewValue.split(":")
    If vals.length > 2 Then
        e.DataRow("住院号") =vals(2)
    Else
        e.DataRow("住院号") =vals(0)
    End If
    If e.DataRow.Isnull("住院号") Then
        e.DataRow("患者姓名") = Nothing
    Else
        Dim dr As DataRow = DataTables("入院登记").Find("[住院号] = '" & e.DataRow("住院号") & "'")
        If dr IsNot Nothing Then
            e.DataRow("患者姓名") = dr("患者姓名")
        Else
            MsgBox("项目不存在,请重新输入!",64,"提示")
            e.DataRow("患者姓名") = Nothing
        End If
    End If
End If

 

不管 If e.DataRow.Isnull("住院号") Then
        e.DataRow("患者姓名") = Nothing
加在什么地方,都提示错误

是不是语言逻辑错误

清空住院号时好像和这一段有冲突 

Dim vals() As String = e.NewValue.split(":")
    If vals.length > 2 Then
        e.DataRow("住院号") =vals(2)
    Else
        e.DataRow("住院号") =vals(0)
    End If
感觉问题出在此处

[此贴子已经被作者于2011-8-5 16:15:36编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/8/5 16:10:00 [只看该作者]

这样呢:

 

If e.DataCol.Name = "住院号" Then

 

If e.NewValue = Nothing Then

Else

    Dim vals() As String = e.NewValue.split(":")
    If vals.length > 2 Then
        e.DataRow("住院号") =vals(2)
    Else
        e.DataRow("住院号") =vals(0)
    End If
    Dim dr As DataRow = DataTables("入院登记").Find("[住院号] = '" & e.NewValue & "'")
    If dr IsNot Nothing Then
        e.DataRow("患者姓名") = dr("患者姓名")
    Else
        MsgBox("项目不存在,请重新输入!",64,"提示")
        e.DataRow("患者姓名") = Nothing
    End If
End If


End If

 

 

或者把:

If e.NewValue = Nothing Then

Else

换成:

   If e.DataRow.Isnull("住院号") Then

    Else

[此贴子已经被作者于2011-8-5 16:12:43编辑过]

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


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

以下是引用mr725在2011-8-5 16:10:00的发言:

这样呢:

 

If e.DataCol.Name = "住院号" Then

 

If e.NewValue = Nothing Then

Else

    Dim vals() As String = e.NewValue.split(":")
    If vals.length > 2 Then
        e.DataRow("住院号") =vals(2)
    Else
        e.DataRow("住院号") =vals(0)
    End If
    Dim dr As DataRow = DataTables("入院登记").Find("[住院号] = '" & e.NewValue & "'")
    If dr IsNot Nothing Then
        e.DataRow("患者姓名") = dr("患者姓名")
    Else
        MsgBox("项目不存在,请重新输入!",64,"提示")
        e.DataRow("患者姓名") = Nothing
    End If
End If


End If

 

 

或者把:

If e.NewValue = Nothing Then

Else

换成:

   If e.DataRow.Isnull("住院号") Then

    Else

[此贴子已经被作者于2011-8-5 16:12:43编辑过]

谢谢朋友,问题没有解决,清空住院号,错误依旧


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/8/5 17:53:00 [只看该作者]

你发个例子上来吧,这样来回都没有效果,说明你的东东别人没有理解或····  总之原因很多啦···

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/8/5 17:55:00 [只看该作者]

If e.NewValue is Nothing Then

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