以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]内部函数问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=78813)

--  作者:cqlwsam
--  发布时间:2015/12/17 16:10:00
--  [求助]内部函数问题
因为项目多次使用患者ID号(姓名+出生日期)和访问日期间的比较,我想做一个内部函数,每次调用即可。但过不了。提示:datarow 不是 datatable的成员。代码如下:

Dim dt As DataTable=DataTables(args(0))
Dim dr As DataRow= dt.DataRow
If dt.DataCol.Name="访问日期" Then
    If dr("patientsID")>"" Then
        Dim s As String = dr("patientsID")
        Dim s1 As Date = CDate(left(right(s,8),4) & "-" & _
        left(right(s,4),2) & "-" & right(s,2))
        Dim s2 As Date=dr("访问日期")
        If s2 IsNot Nothing Then
            If s1>s2 Then
                MessageBox.Show("访问日期不可能早于出生日期,请仔细核对访问日期","提示" )
            End If
        End If
    End If
End If

--  作者:Hyphen
--  发布时间:2015/12/17 16:48:00
--  
Dim dr As DataRow= dt.DataRows(0)\'具体要指定某行,这里是第一行

--  作者:Hyphen
--  发布时间:2015/12/17 16:50:00
--  
还不如直接传入一个datarow
--  作者:cqlwsam
--  发布时间:2015/12/17 16:55:00
--  
实际上就是想把某一个表中的datacolchanged的代码变成通用代码,改了半天搞不定。代码:

Dim dr As DataRow= e.DataRow
If e.DataCol.Name="访问日期" Then
    If dr("patientsID")>"" Then
        Dim s As String = dr("patientsID")
        Dim s1 As Date = CDate(left(right(s,8),4) & "-" & _
        left(right(s,4),2) & "-" & right(s,2))
        Dim s2 As Date=dr("访问日期")
        If s2 IsNot Nothing Then
            If s1>s2 Then
                MessageBox.Show("访问日期不可能早于出生日期,请仔细核对访问日期","提示" )
            End If
        End If
    End If
End If

--  作者:cqlwsam
--  发布时间:2015/12/17 16:56:00
--  
因为在每个表中字段都是一样的,都是patientsID 和访问日期,不同的就是每个表不同。所以我想传表名。
--  作者:Hyphen
--  发布时间:2015/12/17 16:59:00
--  


函数
Dim dr As DataRow= args(0)

If dr("patientsID")>"" Then
    Dim s As String = dr("patientsID")
    Dim s1 As Date = CDate(left(right(s,8),4) & "-" & _
    left(right(s,4),2) & "-" & right(s,2))
    Dim s2 As Date=dr("访问日期")
    If s2 IsNot Nothing Then
        If s1>s2 Then
            MessageBox.Show("访问日期不可能早于出生日期,请仔细核对访问日期","提示" )
        End If
    End If
End If

 

调用
Functions.Execute("函数名",e.DataRow)