Foxtable(狐表)用户栏目专家坐堂 → [分享]万能数据字典自定义模块


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

主题:[分享]万能数据字典自定义模块

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


加好友 发短信
等级:小狐 帖子:360 积分:2794 威望:0 精华:0 注册:2010/4/30 18:38:00
[分享]万能数据字典自定义模块  发帖心情 Post By:2013/11/12 9:24:00 [只看该作者]

万能数据字典自定义模块, 

针对项目内所有表可以自定义相关字段下拉列表内容、是否允许编辑、是否为多值字段。

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:万能数据字典.foxdb

 

 

 

试用版和商业版用户先建设表,然后设置以下代码即可使用。如果觉得好用,请回复多点贴子,让更多的人使用这个扩展列表功能!

  

一、建表:列项设置

停用() ----> 逻辑型

表名() ----> 字符型(20)

列名() ----> 字符型(20)

下拉选项() ----> 字符型(536870910)

多值字段() ----> 逻辑型

允许编辑() ----> 逻辑型

 

二、代码

全局表事件代码:

1、PrepareEdit

==========================

Dim dr As DataRow
If e.Isfocuscell Then
    If e.col.IsString Then
        dr=DataTables("列项设置").find("表名='" & CurrentTable.name & "' and 列名='" & e.col.name & "' and 下拉选项 Is not null and 停用=false")
        If dr IsNot Nothing Then
            If dr("多值字段")=True Then
                DataTables(CurrentTable.name).DataCols(e.col.name).ExtendType = ExtendTypeEnum.Values
            ElseIf dr("多值字段")=False Then
                DataTables(CurrentTable.name).DataCols(e.col.name).ExtendType = ExtendTypeEnum.none
            End If
            e.col.AllowDirectType=dr("允许编辑")
            e.col.combolist=dr("下拉选项")
        Else
            e.col.combolist=""
        End If
    End If
End If
Select Case e.Table.name
    Case "列项设置"
        Select Case e.col.name
            Case "表名"
                Dim s As String
                For Each tb As Table In Tables
                    If s="" Then
                        s=tb.name
                    Else
                        s=s & "|" & tb.name
                    End If
                Next
                e.col.AllowDirectType=False
                e.col.combolist=s
            Case "列名"
                Dim s As String
                If e.Row.Isnull("表名")=False Then
                    For Each c As col In Tables(e.Row("表名")).cols
                        If DataTables(e.Row("表名")).datacols(c.name).IsString Then
                            If s="" Then
                                s=c.name
                            Else
                                s=s & "|" & c.name
                            End If
                        End If
                    Next
                    e.col.AllowDirectType=False
                    e.col.combolist=s
                End If
            Case "下拉选项"
                If e.Row.Isnull("表名") OrElse e.Row.Isnull("列名") Then
                    e.cancel=True
                End If
        End Select
End Select

 

 

2、DataColChanged

==========================

Dim dr As DataRow=e.DataRow
Select Case e.DataTable.name
    Case "列项设置"
        If e.DataCol.name="表名" Then
            If dr.Isnull("表名") OrElse e.NewValue<>e.OldValue Then
                dr("列名")=Nothing
            End If
        End If
End Select

 

 

3、Initialize (项目事件)

==========================

For Each dt As DataTable In DataTables
    dt.GlobalHandler.DataColChanged = True
    dt.GlobalHandler.PrepareEdit = True
Next


 

[此贴子已经被作者于2013-11-14 13:12:42编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/11/12 9:29:00 [只看该作者]

谢分享。

 


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/11/12 9:32:00 [只看该作者]

顶一下.

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


加好友 发短信
等级:童狐 帖子:256 积分:3685 威望:0 精华:0 注册:2012/8/11 15:00:00
  发帖心情 Post By:2013/11/12 18:47:00 [只看该作者]

支持支持


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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2013/11/12 18:52:00 [只看该作者]

foxdb暂时看不了,帮顶··············

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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2013/11/14 11:34:00 [只看该作者]

能否公开代码,让我们看看,我的狐表开发办已经过了更新期

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


加好友 发短信
等级:小狐 帖子:360 积分:2794 威望:0 精华:0 注册:2010/4/30 18:38:00
  发帖心情 Post By:2013/11/14 13:07:00 [只看该作者]

全局表事件代码:

1、PrepareEdit

==========================

Dim dr As DataRow
If e.Isfocuscell Then
    If e.col.IsString Then
        dr=DataTables("列项设置").find("表名='" & CurrentTable.name & "' and 列名='" & e.col.name & "' and 下拉选项 Is not null and 停用=false")
        If dr IsNot Nothing Then
            If dr("多值字段")=True Then
                DataTables(CurrentTable.name).DataCols(e.col.name).ExtendType = ExtendTypeEnum.Values
            ElseIf dr("多值字段")=False Then
                DataTables(CurrentTable.name).DataCols(e.col.name).ExtendType = ExtendTypeEnum.none
            End If
            e.col.AllowDirectType=dr("允许编辑")
            e.col.combolist=dr("下拉选项")
        Else
            e.col.combolist=""
        End If
    End If
End If
Select Case e.Table.name
    Case "列项设置"
        Select Case e.col.name
            Case "表名"
                Dim s As String
                For Each tb As Table In Tables
                    If s="" Then
                        s=tb.name
                    Else
                        s=s & "|" & tb.name
                    End If
                Next
                e.col.AllowDirectType=False
                e.col.combolist=s
            Case "列名"
                Dim s As String
                If e.Row.Isnull("表名")=False Then
                    For Each c As col In Tables(e.Row("表名")).cols
                        If DataTables(e.Row("表名")).datacols(c.name).IsString Then
                            If s="" Then
                                s=c.name
                            Else
                                s=s & "|" & c.name
                            End If
                        End If
                    Next
                    e.col.AllowDirectType=False
                    e.col.combolist=s
                End If
            Case "下拉选项"
                If e.Row.Isnull("表名") OrElse e.Row.Isnull("列名") Then
                    e.cancel=True
                End If
        End Select
End Select

 

 

2、DataColChanged

==========================

Dim dr As DataRow=e.DataRow
Select Case e.DataTable.name
    Case "列项设置"
        If e.DataCol.name="表名" Then
            If dr.Isnull("表名") OrElse e.NewValue<>e.OldValue Then
                dr("列名")=Nothing
            End If
        End If
End Select

 

 

3、Initialize (项目事件)

==========================

For Each dt As DataTable In DataTables
    dt.GlobalHandler.DataColChanged = True
    dt.GlobalHandler.PrepareEdit = True
Next


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


加好友 发短信
等级:六尾狐 帖子:1433 积分:10763 威望:0 精华:0 注册:2013/3/29 10:23:00
  发帖心情 Post By:2013/11/14 14:22:00 [只看该作者]

[此贴子已经被作者于2013-11-14 14:28:36编辑过]

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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2013/11/18 15:08:00 [只看该作者]

谢谢公开

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


加好友 发短信
等级:五尾狐 帖子:1100 积分:8985 威望:0 精华:0 注册:2014/3/15 14:36:00
  发帖心情 Post By:2014/4/3 8:33:00 [只看该作者]

介绍介绍用法!

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