Foxtable(狐表)用户栏目专家坐堂 → [求助]字符串求助(已解决)


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

主题:[求助]字符串求助(已解决)

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


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
[求助]字符串求助(已解决)  发帖心情 Post By:2013/9/18 18:47:00 [只看该作者]

如项目所示,如果表中字段patientsID 为空,则提示请录入姓名及出生日期,在录入姓名及出生日期后生成PatientsID(由姓名及出生日期组成,如张山20120303);如果字段PatientsID不为空,则根据上述规则自动填充姓名及出生日期。前面部分没什么问题,后面的内容总是不对。看看我的代码出了什么问题。谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:项目.table

[此贴子已经被作者于2013-9-19 23:32:09编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/9/18 19:31:00 [只看该作者]

 改成下面的代码

Dim dr As DataRow=e.DataRow
If e.DataCol.Name = "姓名" OrElse e.DataCol.Name = "出生日期" Then
    If dr.IsNull("姓名") OrElse dr.IsNull("出生日期") Then
        dr("patientsID") = Nothing
    Else
        Dim s1 As Date=dr("出生日期")
        dr("patientsID")=dr("姓名") & format(s1,"yyyyMMdd")
    End If
Else If e.DataCol.Name="patientsID" Then
    If e.NewValue.Length > 6 Then
        Dim s As String = e.NewValue
        Dim s1 As Integer =s.Length
        Dim s2 As String = s.SubString(0, s1-8)
        Dim s3 As String = s.SubString(s1-8)
        dr("姓名") = s2
        dr("出生日期") = new Date(s3.SubString(0,4), s3.SubString(4,2), s.SubString(6,2))
    End If
End If

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


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2013/9/18 21:05:00 [只看该作者]

谢谢!

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


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2013/9/19 21:31:00 [只看该作者]

上述代码遇到了问题。1. 在PatientsID输入值后出现如截图所示的问题;2. 出生日期中的不能改变。帮我看看。谢谢!
图片点击可在新窗口打开查看此主题相关图片如下:360软件小助手截图20130919213158.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2013-9-19 21:32:39编辑过]

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


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

第一段代码是你自己的····

第二段改为: 

If e.DataCol.Name="patientsID" Then

    If dr("patientsID")>"" Then

        Dim s As String = dr("patientsID")       

        Dim s1 As Integer =s.Length

        Dim s2 As String = left(s,s1-8)   

        Dim s3 As Date = CDate(left(right(s,8),4) & "-" & _

        left(right(s,4),2) & "-" & right(s,2))

        dr("姓名")=s2

        dr("出生日期")=s3

    End If

End If

[此贴子已经被作者于2013-9-19 22:48:05编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2013/9/19 23:30:00 [只看该作者]

改成下面的代码

Dim dr As DataRow=e.DataRow
If e.DataCol.Name = "姓名" OrElse e.DataCol.Name = "出生日期" Then
    If dr.IsNull("姓名") OrElse dr.IsNull("出生日期") Then
        dr("patientsID") = Nothing
    Else
        Dim s1 As Date=dr("出生日期")
        dr("patientsID")=dr("姓名") & format(s1,"yyyyMMdd")
    End If
If e.DataCol.Name="patientsID" Then
    If e.NewValue.Length > 8 Then
        Dim s As String = e.NewValue
        Dim s1 As Integer =s.Length
        Dim s2 As String = s.SubString(0, s1-8)
        Dim s3 As String = s.SubString(s1-8)
        dr("姓名") = s2
        dr("出生日期") = new Date(s3.SubString(0,4), s3.SubString(4,2), s3.SubString(6,2))
    End If
End If
有点甜兄弟的代码最后一个有点问题,应该是s3,他变成了s,就错了。还有后一段和前一段是独立的事件。搞定。谢谢有点甜和e-png!

[此贴子已经被作者于2013-9-19 23:30:34编辑过]

 回到顶部