以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]读取列属性中的标准数据字典  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=173244)

--  作者:chnfo
--  发布时间:2021/11/20 19:29:00
--  [求助]读取列属性中的标准数据字典
表X中的A列,在列属性的基本属性-字典-数据字典中设为标准,然后在数据字典中设置数据=1、2、3、4、5、……,显示值分别为甲、乙、丙、丁、戊、……

能不能通过代码把它读出来?

[此贴子已经被作者于2021/11/20 19:29:37编辑过]

--  作者:有点蓝
--  发布时间:2021/11/21 20:08:00
--  
Dim dmp As DataMap = Tables("表X").Cols("A列").DataMap
For Each key As String In dmp.keys
    Output.Show(key & "=" & dmp(key))
Next

--  作者:chnfo
--  发布时间:2021/11/22 9:47:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:字典读不出来.png
图片点击可在新窗口打开查看
执行的时候,为什么键可以读出来,值读不出来哟
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


--  作者:有点蓝
--  发布时间:2021/11/22 10:05:00
--  
列类型的问题,这个列是微整形

For Each key As Byte In dmp.keys
    Output.Show(key & "=" & dmp(key))
Next

--  作者:chnfo
--  发布时间:2021/11/23 17:12:00
--  
Dim ct As String = "Kind"
Dim ck As String = DataTables("CS").DataCols(ct).datatype.Name   \'得到ct列的数据类型

Dim dmp As DataMap = Tables("CS").Cols(ct).DataMap
Output.Show(ct & "列有数据字典=" &(dmp IsNot Nothing))
If dmp IsNot Nothing Then
    Dim dicx As new Dictionary(of object ,String)     ’Dim dicx As new Dictionary(of ck,String)  ,这里使用ck就会报错,本意是想精确引用数据类型,后来发现有错误,只能用了object,不报错了
    For Each key As object In dmp.keys      ’For Each key As ck In dmp.keys,这里使用ck就会报错,本意是想精确引用数据类型,后来发现有错误,只能用了object,不报错了
        dicx.Add(key,dmp(key))
    Next
    
    For Each k As object In dicx.Keys       For Each key As ck In dicx.Keys,这里使用ck就会报错,本意是想精确引用数据类型,后来发现有错误,只能用了object,不报错了
        Output.Show(k & "----" & dicx(k))
    Next 
End If


用object可以执行,不过可能效率上会低一些。如果要精确引用数据列类型,该怎么用?

--  作者:有点蓝
--  发布时间:2021/11/23 17:14:00
--  
只能用object
--  作者:chnfo
--  发布时间:2021/11/23 17:39:00
--  
啊,误打误撞,居然撞对了图片点击可在新窗口打开查看