以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71145)

--  作者:seopain
--  发布时间:2015/7/6 11:09:00
--  [求助]
在员工表里 添加了新的人员 部门是编辑部 
则在编辑信息表里添加多层表头  姓名_上传,姓名_采用
另外 如果状态是离职 则删除编辑信息表里的表头
求教老师
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1_201507061103.zip

[此贴子已经被作者于2015/7/6 11:11:24编辑过]

--  作者:大红袍
--  发布时间:2015/7/6 11:31:00
--  

DataColChanged事件

 

Select Case e.DataCol.Name
    Case "姓名", "部门"
        If e.DataRow.IsNull("姓名") = False AndAlso e.DataRow.IsNull("部门") = False Then
            If e.DataRow("部门") = "编辑部" Then
                If DataTables("编辑信息表").DataCols.Contains(e.DataRow("姓名") & "_上传") = False Then
                    Dim Builder As New ADOXBuilder
                    Builder.Open() \'打开ADOXBuilder
                    With Builder.Tables("编辑信息表")
                        .AddColumn(e.DataRow("姓名") & "_上传",ADOXType.String, 12)
                        .AddColumn(e.DataRow("姓名") & "_采用",ADOXType.String, 12)
                    End With
                    Builder.Close() \'关闭ADOXBuilder
                    DataTables.Unload("编辑信息表")
                    DataTables.Load("编辑信息表")
                End If
            End If
        End If
End Select


--  作者:seopain
--  发布时间:2015/7/6 12:02:00
--  

老师  那我如果再加上这个 是不是就可以在表“员工”的“状态”列=“离职”的时候 删除编辑信息表里的多层表头?
Select Case e.DataCol.Name
    Case "状态"
        If e.datarow("状态") = "离职"
        with datatables("编辑信息表")
        .DataRows.Delete(e.DataRow("姓名") & "_上传")
        .DataRows.Delete(e.DataRow("姓名") & "_采用")
        End If
End Select
[此贴子已经被作者于2015/7/6 12:03:46编辑过]

--  作者:大红袍
--  发布时间:2015/7/6 12:10:00
--  

 

[此贴子已经被作者于2015/7/6 12:12:28编辑过]

--  作者:大红袍
--  发布时间:2015/7/6 12:13:00
--  

参考代码

 

http://www.foxtable.com/help/topics/2122.htm

 


--  作者:seopain
--  发布时间:2015/7/6 14:56:00
--  
老师 我把内部数据表定向到数据库就出现错误 该怎么调试呢
--  作者:大红袍
--  发布时间:2015/7/6 15:05:00
--  

使用外部数据源

前面的代码都是针对内部数据源的,如果要为外部数据源动态创建表和列,只需在定义ADOXBuilder的时候,指定数据源名称即可:

Dim Builder As New ADOXBuilder("数据源名称")

例如在名为nwnd的外部数据源中创建一个订单表:

Dim Builder As New ADOXBuilder("nwnd") \'要指定数据源名称
Dim tbl As ADOXTable
Builder.Open()
tbl = Builder.NewTable("订单") \'创建表
With tbl
    .AddColumn("日期" ,ADOXType.DateTime)
    .AddColumn("产品" ,ADOXType.String, 12)
    .AddColumn("客户" ,ADOXType.String, 20)
    .AddColumn("数量" ,ADOXType.Integer)
    .AddColumn("备注" ,ADOXType.Text)
End With
Builder.AddTable(tbl) \'增加表
Builder.Close()

 


--  作者:seopain
--  发布时间:2015/7/6 15:16:00
--  
明白了 谢谢老师
--  作者:seopain
--  发布时间:2015/7/7 9:05:00
--  
老师  我现在做了一个“编辑信息表”的录入功能的窗口 但现在表里的列是根据“员工”表生产的,
那么我的窗口label控件和textbox控件都需要动态生产  这该怎么写呢
类似于这样

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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1_201507070901.zip

[此贴子已经被作者于2015/7/7 9:09:10编辑过]

--  作者:大红袍
--  发布时间:2015/7/7 9:26:00
--  
  那你就不要用文本控件,你可以放一个table或者放记录窗口