Foxtable(狐表)用户栏目专家坐堂 → DataMap 为什么取不到值?


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

主题:DataMap 为什么取不到值?

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


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
DataMap 为什么取不到值?  发帖心情 Post By:2017/6/30 1:09:00 [显示全部帖子]

给某表 的某列 加了 一个 DataMap , 在界面上 能够正确显示, 但是 我想通过 这个 DataMap ,取相对应的值,为什么取不到呢?  代码如下

If Tables(TableName).Cols(ColName).DataMap IsNot Nothing  Then
    Dim dm As DataMap = Tables(TableName).Cols(ColName).DataMap
'msgbox(dm.ToString)
'msgbox( ColValue)
    Dim displayColValue As String = dm(ColValue)                ' 运行到这一步时, DataMap  和  ColValue  都对, 但就是取不到值
    If displayColValue IsNot Nothing AndAlso displayColValue.trim.Length > 0 Then
        Return displayColValue 
    End If
End If

应该怎么办呢?

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2017/6/30 9:55:00 [显示全部帖子]

并不是 反向获取 呀, 和表的显示是一样的, 假如  1  在表中显示 a, 现在仍然是想 通过 1 来获得 a 呀, 并不是 想通过  a 来获得  1

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2017/6/30 11:28:00 [显示全部帖子]

可是我需要这么做,该怎么办呢?

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2017/6/30 12:48:00 [显示全部帖子]

我是想做一个通用的, 判断一列是否有 dataMap, 有的话 就取值,没有就显示原值, 和 表 的原理一样

可是我搞不明白, 为什么 表可以从 DataMap 里面取值, 别的程序就不行呢?

百思不得其姐

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2017/6/30 15:48:00 [显示全部帖子]

我现在 就是 通过 map(key) 取不到值呀

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2017/6/30 20:00:00 [显示全部帖子]

再次实验证明,  map(key) 取不到值, 这可怎么办呢?

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2017/6/30 20:03:00 [显示全部帖子]

Dim dmpPsn As New TableDataMap
    dmpPsn.DataTable = "员工" '指定数据来源表
    dmpPsn.ValueCol = "_Identify" '指定取值列
    dmpPsn.DisplayCol = "姓名" '指定显示列
    '指定下拉列表时显示哪些列的数据
    'dmp.ListCols = "_Identify,部门名称"
    'dmpPsn.Sort = "_Identify" '指定排序方式
    
    
    Tables("员工").Cols("直接上级主键").DataMap = dmpPsn.CreateDataMap() '生成并设置DataMap


通过这种方式设置的  DataMap

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2017/7/1 0:35:00 [显示全部帖子]

我找到问题的原因了

之所以取不到值 是因为 我把   map(key) 转换成  String 了, 可能是因为 转换失败, 所以没要取得值, 但是也没有报错

那么请问  map(key)  是个什么类型 的数据呢, 从打出来的 结果看, 是一个 表的一列, 也就是  DataRow, 

请问 是  DataRow 型的吗?  或者 怎么样判断   map(key) 的类型呢?

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2017/7/1 11:47:00 [显示全部帖子]

这简直是没有天理了, 我的代码如下:  


Dim TableName As String = args(0)
Dim ColName As String = args(1)
Dim ColValue As String = args(2)

If ColValue Is Nothing OrElse ColValue.trim.Length < 1 Then
    Return ""
End If


If Tables(TableName).Cols(ColName).DataMap IsNot Nothing  Then
    Dim dm As DataMap = Tables(TableName).Cols(ColName).DataMap
    
    For Each key As Integer In dm.keys
        'MessageBox.show(key & " : " & dm(key))
        If key = ColValue Then
            MessageBox.show("find:         " & ColValue & " : " & dm(ColValue))               // 请注意这里, 到这一步, 说明   key = ColValue ,datamap 里面 有值 ,但是 dm(ColValue) 取不到值   下图1
            MessageBox.show("find:         " & key & " : " & dm(key))      //  这里  dm(key) 能取到值, 这不科学呀   key = ColValue  呀   下图 2
        End If
    Next
    
    Dim displayColValue As String = dm(ColValue)
    
    If displayColValue Is Nothing OrElse displayColValue.trim.Length > 0 Then
        Dim i_ColValue As Integer = Integer.TryParse(ColValue, -1)
        displayColValue = dm(i_ColValue)
    End If
    
    msgbox(TableName & "               " & ColName & "              " & ColValue & "                         " & displayColValue )   // 这里显示  displayColValue 是空值, 下图 3
    If displayColValue IsNot Nothing AndAlso displayColValue.trim.Length > 0 Then
        Return displayColValue
    End If
End If

Return ColValue


图 1

图片点击可在新窗口打开查看此主题相关图片如下:1abc.jpg
图片点击可在新窗口打开查看

图 2

图片点击可在新窗口打开查看此主题相关图片如下:2abc.png
图片点击可在新窗口打开查看

图 3

图片点击可在新窗口打开查看此主题相关图片如下:3abc.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2017/7/1 11:48:26编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2017/7/1 13:00:00 [显示全部帖子]

上面的就是完整的代码呀,还需要把整个程序都给你?

去实际做一下就行

 回到顶部
总数 12 1 2 下一页