Foxtable(狐表)用户栏目专家坐堂 → [求助] 临时表


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

主题:[求助] 临时表

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


加好友 发短信
等级:七尾狐 帖子:1634 积分:14438 威望:0 精华:0 注册:2014/6/6 8:42:00
[求助] 临时表  发帖心情 Post By:2019/9/11 7:01:00 [只看该作者]

老师,下面的代码在按钮中,第一次点击没问题,但是第二次点击是会出现(不存在名称为血常规一的datatables) 的提示
如果 在第一行加上 tables(“窗口一”).DataSource = 其它固定表 没问题。谢谢!


在之前的版本 好像没这个问题

If Tables("主检窗口_table2").Current Is Nothing Then
    MessageBox.Show("您查询的对象不存在,请核对后查询!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
Else
    Dim dtb As New DataTableBuilder("血常规一")
    dtb.AddDef("日期", Gettype(Date))
    dtb.AddDef("序号", Gettype(Double))
    dtb.AddDef("标本号", Gettype(Double))
    dtb.AddDef("检验时间", Gettype(Date))
    dtb.AddDef("类型", Gettype(String), 25)
    dtb.AddDef("姓名", Gettype(String), 25)
    dtb.AddDef("性别", Gettype(String), 5)
    dtb.AddDef("年龄", Gettype(String), 25)
    dtb.AddDef("年龄单位", Gettype(String), 5)
    dtb.AddDef("病历号", Gettype(String), 25)
    dtb.AddDef("床号", Gettype(String), 25)
    dtb.AddDef("检验者", Gettype(String), 25)
    dtb.AddDef("审核者", Gettype(String), 25)
    dtb.AddDef("仪器", Gettype(String), 25)
    dtb.AddDef("检验项目", Gettype(String), 255)
    dtb.AddDef("检验结果", Gettype(Double))
    dtb.AddDef("单位", Gettype(String), 25)
    dtb.AddDef("参考低值", Gettype(String), 25)
    dtb.AddDef("参考高值", Gettype(String), 25)
    dtb.AddDef("结果提示", Gettype(String), 25)
    dtb.Build()

    Dim dr1 As DataRow = DataTables("血常规结果").Find("病历号 = '" & Filter & "'")
    If dr1 IsNot Nothing Then
        Dim nms() As String =  {"白细胞数目(WBC)" ,"嗜碱性粒细胞数目(BaS#)","中性粒细胞数目(NEU#)","嗜酸性粒细胞数目(Eos#)","淋巴细胞数目(LYM#)","单核细胞数目(Mon#)","ALY# 10^9/L","LIC# 10^9/L","嗜碱性粒细胞百分比(Bas%)","中性粒细胞百分比(Neu%)","嗜酸性粒细胞百分比(EOS%)","淋巴细胞百分比(LYMph%)","单核细胞百分比(Mon%)","ALY% %","LIC% %","红细胞数目(RBC)","血红蛋白浓度(HGB)","平均红细胞体积(MCV)","平均红细胞血红蛋白含量(MCH)","平均红细胞血红蛋白浓度(MCHC)","红细胞分布宽度变异系数(RDW-CV)","红细胞分布宽度标准差(RDW-SD)","红细胞压积(HCT)","血小板数目(PLT)","平均血小板体积(MPV)","血小板分布宽度(PDW)","血小板压积(PCT%)","P-LCC 10^9/L","P-LCR %"}
        Dim kms() As String = {"WBC 10^9/L","Bas# 10^9/L","Neu# 10^9/L","Eos# 10^9/L","Lymph# 10^9/L","Mon# 10^9/L","ALY# 10^9/L","LIC# 10^9/L","Bas% %","Neu% %","Eos% %","Lymph% %","Mon% %","ALY% %","LIC% %","RBC 10^12/L","HGB g/L","MCV fL","MCH pg","MCHC g/L","RDW-CV %","RDW-SD fL","HCT %","PLT 10^9/L","MPV fL","PDW","PCT %","P-LCC 10^9/L","P-LCR %"}
        ' For Each km As String In kms
        For i As Integer = 0 To nms.Length - 1
            If dr1.IsNull(kms(i)) = False Then
                Dim dr2 As DataRow = DataTables("血常规一").AddNew()
                dr2("日期") = dr1("检验时间")
                dr2("序号") = dr1("序号")
                dr2("标本号") = dr1("标本号")
                DataTables("血常规一").DataCols("检验时间").SetDateTimeFormat(DateTimeFormatEnum.DateLongTime)
                Dim dr As DataRow = DataTables("职业健康检查表").SQLFind("编号 = '" & "ZYTJ-20" & dr1("姓名") & "'")
                If dr IsNot Nothing Then
                    dr2("姓名") = dr("姓名")
                    dr2("性别") = dr("性别")
                    dr2("年龄") = dr("年龄")
                End If
                dr2("检验时间") = dr1("检验时间")
                dr2("类型") = dr1("类型")
                dr2("年龄单位") = dr1("年龄单位")
                dr2("病历号") = dr1("病历号")
                dr2("床号") = dr1("床号")
                dr2("检验者") = dr1("检验者")
                dr2("审核者") = dr1("审核者")
                dr2("仪器") = dr1("仪器")
                dr2("检验项目") = nms(i)
                dr2("检验结果") = dr1(kms(i))
                Dim r As DataRow = DataTables("职业健康体检项目设置").SQLFind("项目名称 = '" & nms(i) & "'")
                If r IsNot Nothing Then
                    dr2("单位") = r("单位")
                    dr2("参考低值") = r("参考低值")
                    dr2("参考高值") = r("参考高值")
                End If
                
                If dr2("检验结果") < Val(dr2("参考低值")) Then
                    dr2("结果提示") = "↓"
                ElseIf dr2("检验结果") > Val(dr2("参考高值")) Then
                    dr2("结果提示") = "↑"
                ElseIf dr2("检验结果") <= Val(dr2("参考高值")) AndAlso dr2("检验结果") >= Val(dr2("参考低值")) Then
                    dr2("结果提示") = Nothing
                ElseIf dr2.IsNull("参考高值") AndAlso dr2.IsNull("参考低值") Then
                    dr2("结果提示") = Nothing
                End If
                If dr2.IsNull("参考高值") AndAlso dr2.IsNull("参考低值") Then
                    dr2("结果提示") = Nothing
                End If
                If dr2.IsNull("检验结果") Then
                    dr2("结果提示") = ""
                End If
            End If
        Next
        Tables("主检窗口_table1").DataSource = DataTables("血常规一")
        Tables("主检窗口_table1").SetColVisibleWidth("日期|60|姓名|60|性别|40|年龄|60|检验项目|100|检验结果|60|单位|60|参考低值|60|参考高值|60|结果提示|60")
        Tables("主检窗口_table1").DefaultRowHeight = 40
        Tables("主检窗口_table1").AllowEdit = False
        For Each c As Col In Tables("主检窗口_table1").Cols
            C.TextAlign  =TextAlignEnum.Center
        Next
        Tables("主检窗口_table1").DataTable.GlobalHandler.DrawCell = True
        DataTables("血常规一").AddUserStyle("a", Color.Red, Color.White)
    End If
[此贴子已经被作者于2019/9/11 7:04:45编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107035 积分:544406 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/11 9:19:00 [只看该作者]

应该先绑定窗口表,然后再继续后续操作

If Tables("主检窗口_table2").Current Is Nothing Then
    MessageBox.Show("您查询的对象不存在,请核对后查询!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
Else
    Dim dtb As New DataTableBuilder("血常规一")
    dtb.AddDef("日期", Gettype(Date))
    dtb.AddDef("序号", Gettype(Double))
    dtb.AddDef("标本号", Gettype(Double))
    dtb.AddDef("检验时间", Gettype(Date))
    dtb.AddDef("类型", Gettype(String), 25)
    dtb.AddDef("姓名", Gettype(String), 25)
    dtb.AddDef("性别", Gettype(String), 5)
    dtb.AddDef("年龄", Gettype(String), 25)
    dtb.AddDef("年龄单位", Gettype(String), 5)
    dtb.AddDef("病历号", Gettype(String), 25)
    dtb.AddDef("床号", Gettype(String), 25)
    dtb.AddDef("检验者", Gettype(String), 25)
    dtb.AddDef("审核者", Gettype(String), 25)
    dtb.AddDef("仪器", Gettype(String), 25)
    dtb.AddDef("检验项目", Gettype(String), 255)
    dtb.AddDef("检验结果", Gettype(Double))
    dtb.AddDef("单位", Gettype(String), 25)
    dtb.AddDef("参考低值", Gettype(String), 25)
    dtb.AddDef("参考高值", Gettype(String), 25)
    dtb.AddDef("结果提示", Gettype(String), 25)
    
    Tables("主检窗口_table1").DataSource = dtb.BuildDataSource
    Dim t As Table = Tables("主检窗口_table1")
    t.SetColVisibleWidth("日期|60|姓名|60|性别|40|年龄|60|检验项目|100|检验结果|60|单位|60|参考低值|60|参考高值|60|结果提示|60")
    t.DefaultRowHeight = 40
    t.AllowEdit = False
    For Each c As Col In t.Cols
        C.TextAlign  =TextAlignEnum.Center
    Next
    Dim dt As DataTable = DataTables("主检窗口_table1")
    dt.DataCols("检验时间").SetDateTimeFormat(DateTimeFormatEnum.DateLongTime)
    dt.AddUserStyle("a", Color.Red, Color.White)
    dt.GlobalHandler.DrawCell = True
    Dim dr1 As DataRow = DataTables("血常规结果").Find("病历号 = '" & Filter & "'")
    If dr1 IsNot Nothing Then
        Dim nms() As String =  {"白细胞数目(WBC)" ,"嗜碱性粒细胞数目(BaS#)","中性粒细胞数目(NEU#)","嗜酸性粒细胞数目(Eos#)","淋巴细胞数目(LYM#)","单核细胞数目(Mon#)","ALY# 10^9/L","LIC# 10^9/L","嗜碱性粒细胞百分比(Bas%)","中性粒细胞百分比(Neu%)","嗜酸性粒细胞百分比(EOS%)","淋巴细胞百分比(LYMph%)","单核细胞百分比(Mon%)","ALY% %","LIC% %","红细胞数目(RBC)","血红蛋白浓度(HGB)","平均红细胞体积(MCV)","平均红细胞血红蛋白含量(MCH)","平均红细胞血红蛋白浓度(MCHC)","红细胞分布宽度变异系数(RDW-CV)","红细胞分布宽度标准差(RDW-SD)","红细胞压积(HCT)","血小板数目(PLT)","平均血小板体积(MPV)","血小板分布宽度(PDW)","血小板压积(PCT%)","P-LCC 10^9/L","P-LCR %"}
        Dim kms() As String = {"WBC 10^9/L","Bas# 10^9/L","Neu# 10^9/L","Eos# 10^9/L","Lymph# 10^9/L","Mon# 10^9/L","ALY# 10^9/L","LIC# 10^9/L","Bas% %","Neu% %","Eos% %","Lymph% %","Mon% %","ALY% %","LIC% %","RBC 10^12/L","HGB g/L","MCV fL","MCH pg","MCHC g/L","RDW-CV %","RDW-SD fL","HCT %","PLT 10^9/L","MPV fL","PDW","PCT %","P-LCC 10^9/L","P-LCR %"}
        ' For Each km As String In kms
        For i As Integer = 0 To nms.Length - 1
            If dr1.IsNull(kms(i)) = False Then
                Dim dr2 As DataRow = dt.AddNew()
                dr2("日期") = dr1("检验时间")
                dr2("序号") = dr1("序号")
                dr2("标本号") = dr1("标本号")
                Dim dr As DataRow = DataTables("职业健康检查表").SQLFind("编号 = '" & "ZYTJ-20" & dr1("姓名") & "'")
                If dr IsNot Nothing Then
                    dr2("姓名") = dr("姓名")
                    dr2("性别") = dr("性别")
                    dr2("年龄") = dr("年龄")
                End If
                dr2("检验时间") = dr1("检验时间")
                dr2("类型") = dr1("类型")
                dr2("年龄单位") = dr1("年龄单位")
                dr2("病历号") = dr1("病历号")
                dr2("床号") = dr1("床号")
                dr2("检验者") = dr1("检验者")
                dr2("审核者") = dr1("审核者")
                dr2("仪器") = dr1("仪器")
                dr2("检验项目") = nms(i)
                dr2("检验结果") = dr1(kms(i))
                Dim r As DataRow = DataTables("职业健康体检项目设置").SQLFind("项目名称 = '" & nms(i) & "'")
                If r IsNot Nothing Then
                    dr2("单位") = r("单位")
                    dr2("参考低值") = r("参考低值")
                    dr2("参考高值") = r("参考高值")
                End If
                
                If dr2("检验结果") < Val(dr2("参考低值")) Then
                    dr2("结果提示") = "↓"
                ElseIf dr2("检验结果") > Val(dr2("参考高值")) Then
                    dr2("结果提示") = "↑"
                ElseIf dr2("检验结果") <= Val(dr2("参考高值")) AndAlso dr2("检验结果") >= Val(dr2("参考低值")) Then
                    dr2("结果提示") = Nothing
                ElseIf dr2.IsNull("参考高值") AndAlso dr2.IsNull("参考低值") Then
                    dr2("结果提示") = Nothing
                End If
                If dr2.IsNull("参考高值") AndAlso dr2.IsNull("参考低值") Then
                    dr2("结果提示") = Nothing
                End If
                If dr2.IsNull("检验结果") Then
                    dr2("结果提示") = ""
                End If
            End If
        Next
    End If

 回到顶部