以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]数据列转表达式列  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=159011)

--  作者:huangjiacai
--  发布时间:2020/12/10 15:54:00
--  [求助]数据列转表达式列
我在项目开发这边将某一列数据列转为表达式列以后,已发布的项目那里打开项目会提示错误,这个有什么办法避免吗,因为已发布的项目是在用的,我就想做个简简单单的升级。
--  作者:有点蓝
--  发布时间:2020/12/10 16:42:00
--  
参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=103041
--  作者:有点蓝
--  发布时间:2020/12/10 16:43:00
--  
目前临时的解决方法只能是手工复制升级一下了
--  作者:huangjiacai
--  发布时间:2020/12/11 9:18:00
--  

是不是可以遍历A表的所有行,从B表中查找关联列“列1”相匹配的行,将“列2”、“列3”的数据赋值过来呢?表A跟表B的表结构高度相似


--  作者:有点蓝
--  发布时间:2020/12/11 9:30:00
--  
参考:http://www.foxtable.com/webhelp/topics/1533.htm
--  作者:huangjiacai
--  发布时间:2020/12/11 10:27:00
--  
我这个不是复制,是修改,这么写代码应该不可以吧,主要是因为行号不一致,行的顺序有点错乱,如果是用表达式就可以完美解决,现在就是不能转换成表达式格式,有什么代码可以实现“一次性表达式”这样的功能。
--  作者:有点蓝
--  发布时间:2020/12/11 10:37:00
--  
差不多的,改为查询即可

Dim Cols1() As String = {"来源列一","来源列二","来源列三"}
Dim 
Cols2() As String = {"接收列一","接收列二","接收列三"}
Dim dr2 As DataRow
For Each 
dr1 As DataRow In DataTables("表A").datarows
    
dr2 = DataTables("表B").find("列1=\'" &  dr1("列1")& "\'")
if dr2 is nothing then dr2 = DataTables("表B").AddNew()
    For i As Integer = 0 To Cols1.Length -1
        
dr2(Cols2(i)) = dr1(Cols1(i
))
    Next
Next

--  作者:huangjiacai
--  发布时间:2020/12/11 11:16:00
--  
可以了,谢谢。