以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]字符串求助(已解决)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40426)

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

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

--  作者:有点甜
--  发布时间: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
--  发布时间:2013/9/18 21:05:00
--  
谢谢!
--  作者:cqlwsam
--  发布时间:2013/9/19 21:31:00
--  
上述代码遇到了问题。1. 在PatientsID输入值后出现如截图所示的问题;2. 出生日期中的不能改变。帮我看看。谢谢!
图片点击可在新窗口打开查看此主题相关图片如下:360软件小助手截图20130919213158.jpg
图片点击可在新窗口打开查看

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

--  作者:e-png
--  发布时间: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
--  发布时间: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编辑过]