以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  数据转换问题?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=51622)

--  作者:hjcslr
--  发布时间:2014/5/30 0:05:00
--  数据转换问题?
我想从化验检查表里的数据转到 生化表里,如何转换?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb




--  作者:Bin
--  发布时间:2014/5/30 8:54:00
--  
For Each dr As DataRow In DataTables("化验检查").DataRows
    Dim drr As DataRow = DataTables("生化").Find("住院号=\'" & dr("住院号") & "\' and 姓名=\'" & dr("姓名") & "\' and 性别=\'" & dr("性别") & "\' and 年龄=\'" & dr("年龄") & "\' and 检查时间=#" & dr("检验时间") & "#")
    If drr Is Nothing Then
           drr=DataTables("生化").AddNew
           drr("住院号")=dr("住院号")
           drr("姓名")=dr("姓名")
           drr("性别")=dr("性别")
           drr("年龄")=dr("年龄")
           drr("检查时间")=dr("检验时间")
    Else
          drr(dr("检验项目"))=dr("检验结果")
    End If
Next


--  作者:hjcslr
--  发布时间:2014/5/30 14:35:00
--  
经测试通过,但是有2个问题,
1、代码要执行2次数据才能完全,第一次执行后只有部分数据;
2、如果化验检查表中的检验项目有生化中没有的列会出错;
能不能将化验检查表中检验项目的值自动增加列。谢谢

--  作者:Bin
--  发布时间:2014/5/30 14:37:00
--  
动态增加列会需要重启项目,增加临时列并不会保存数据.
所以最好自己设计好表结构.


至于执行2次才能完全,这样改一下

For Each dr As DataRow In DataTables("化验检查").DataRows
    Dim drr As DataRow = DataTables("生化").Find("住院号=\'" & dr("住院号") & "\' and 姓名=\'" & dr("姓名") & "\' and 性别=\'" & dr("性别") & "\' and 年龄=\'" & dr("年龄") & "\' and 检查时间=#" & dr("检验时间") & "#")
    If drr Is Nothing Then
           drr=DataTables("生化").AddNew
           drr("住院号")=dr("住院号")
           drr("姓名")=dr("姓名")
           drr("性别")=dr("性别")
           drr("年龄")=dr("年龄")
           drr("检查时间")=dr("检验时间")
           drr(dr("检验项目"))=dr("检验结果")
    Else
          drr(dr("检验项目"))=dr("检验结果")
    End If
Next