Foxtable(狐表)用户栏目专家坐堂 → [求助]字典很卡求助


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

主题:[求助]字典很卡求助

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


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/19 20:11:00 [显示全部帖子]

1、MainTableChanging事件会导致死循环,去掉,如果要打开窗口,到MainTableChanged事件写代码:
If MainTable.Name = "列项设置" Then
    Forms("列项设置").Open()
End If

2、这种数据字典的设置不适合放在prepareedit事件,会导致假死,放到AfterSelChange事件

Dim dr As DataRow
If e.OldRange.RowSel <> e.NewRange.RowSel OrElse e.OldRange.ColSel <> e.NewRange.ColSel Then
Dim c As Col = e.Table.Cols(e.NewRange.ColSel)
    If c.IsString Then
        dr=DataTables("列项设置").find("表名='" & e.Table.name & "' and 列名='" & c.Name & "' and 下拉选项 Is not null and 停用=false")
        If dr IsNot Nothing Then
            If dr("多值字段")=True Then
                DataTables(e.Table.name).DataCols(c.name).ExtendType = ExtendTypeEnum.Values
            ElseIf dr("多值字段")=False Then
                DataTables(e.Table.name).DataCols(c.name).ExtendType = ExtendTypeEnum.none
            End If
            c.AllowDirectType=dr("允许编辑")
            c.combolist=dr("下拉选项")
        Else
            c.combolist=""
        End If
    End If
End If

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


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/20 11:44:00 [显示全部帖子]

代码放到enter事件

e.sender.ReadOnly= BooleanEnum.True  :http://www.foxtable.com/webhelp/topics/0749.htm

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


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/20 13:46:00 [显示全部帖子]

    Dim fdr As DataRow = DataTables("列项设置").Find(filter)
    'If fdr IsNot Nothing Then
    If fdr IsNot Nothing
        If fdr("允许编辑") = True Then
            'e.sender.AllowDirectType= True
            e.sender.ReadOnly = BooleanEnum.False
            e.sender.ComboList = fdr("下拉选项")
        Else
            e.sender.ReadOnly = BooleanEnum.True
            'e.sender.AllowDirectType= False
            'e.sender.ComboList = fdr("下拉选项")
        End If
    End If

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


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/20 14:52:00 [显示全部帖子]

不能编辑,当然也就不能下拉


If e.Sender.Gettype.name = "ComboBox" AndAlso e.Sender.BindingField > "" Then

    Dim ary() As String = e.Sender.BindingField.Split(".")
    Dim filter As String = "表名 = '" & ary(0) & "' and 列名 = '" & ary(1) & "' and 停用 = false"
    Dim fdr As DataRow = DataTables("列项设置").Find(filter)
    If fdr IsNot Nothing
        e.sender.ComboList = fdr("下拉选项")
        e.Sender.AllowEditValue = fdr("允许编辑")
    End If
End If

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


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/20 15:47:00 [显示全部帖子]

没看懂,上传例子说明

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


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/20 16:06:00 [显示全部帖子]

还是没看懂,使用文字描述一下

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


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/20 16:27:00 [显示全部帖子]

Dim dr As DataRow
If e.OldRange.RowSel <> e.NewRange.RowSel OrElse e.OldRange.ColSel <> e.NewRange.ColSel Then
    Dim c As Col = e.Table.Cols(e.NewRange.ColSel)
    If c.IsString Then
        dr=DataTables("列项设置").find("表名='" & e.Table.name & "' and 列名='" & c.Name & "' and 下拉选项 Is not null and 停用=false and ','+条件值+',' like '%," & e.Table.Rows(e.NewRange.RowSel)("列项条件列") & ",%'")
        If dr Is Nothing Then
            dr=DataTables("列项设置").find("表名='" & e.Table.name & "' and 列名='" & c.Name & "' and 下拉选项 Is not null and 停用=false and 条件值='其他'")
        End If
        If dr IsNot Nothing Then
            If dr("多值字段")=True Then
                DataTables(e.Table.name).DataCols(c.name).ExtendType = ExtendTypeEnum.Values
            ElseIf dr("多值字段")=False Then
                DataTables(e.Table.name).DataCols(c.name).ExtendType = ExtendTypeEnum.none
            End If
            c.AllowDirectType=dr("允许编辑")
            c.combolist=dr("下拉选项")
        Else
            c.combolist=""
        End If
    End If
End If

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


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/20 16:57:00 [显示全部帖子]

20楼的代码和enter事件以及窗口有什么关系?自己写的代码自己都看不懂了吗

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


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/20 20:14:00 [显示全部帖子]

看看20楼代码和之前的用法多了些什么,照搬到控件里使用

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


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/21 10:18:00 [显示全部帖子]

写了什么代码,把您改后的代码发上来

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