Foxtable(狐表)用户栏目专家坐堂 → 请老师指导:取销售出库日期作为应收表的列名,谢谢!


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

主题:请老师指导:取销售出库日期作为应收表的列名,谢谢!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/28 15:04:00 [显示全部帖子]

Dim ds As List(Of String)
ds = DataTables("销售出库单_基本信息_T_SAL_OUTSTOCK").GetValues("FDATE")   '取销售出库主表日期列的不重复的值


For Each d As Date In ds
    Dim y As String = d.Year
    Dim m As String = d.Month
    Dim liename As String = "月份_" & y & m
    MessageBox.Show(1)
    If DataTables("应收表").DataCols.Contains(liename) = False Then
        MessageBox.Show(2)
        Dim Builder As New ADOXBuilder
        Builder.Open() '打开ADOXBuilder
        With Builder.Tables("应收表")
           
            .AddColumn(liename ,ADOXType.Double) '增加双精度型列
           
            MessageBox.Show(3)
        End With
        Builder.Close() '关闭ADOXBuilder              
    End If
Next


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/28 16:22:00 [显示全部帖子]

1、代码没问题;

 

2、需要关闭重新打开项目才能看懂新增的列;或者卸载表重新加载表后才能看到

 

Dim ds As List(Of String)
ds = DataTables("销售出库单_基本信息_T_SAL_OUTSTOCK").GetValues("FDATE")   '取销售出库主表日期列的不重复的值

For Each d As Date In ds
    Dim y As String = d.Year
    Dim m As String = d.Month
    Dim liename As String = "月份_" & y & m
    MessageBox.Show(1)
    If DataTables("应收表").DataCols.Contains(liename) = False Then
        MessageBox.Show(2)
        Dim Builder As New ADOXBuilder
        Builder.Open() '打开ADOXBuilder
        With Builder.Tables("应收表")
           
            .AddColumn(liename ,ADOXType.Double) '增加双精度型列
           
            MessageBox.Show(3)
        End With
        Builder.Close() '关闭ADOXBuilder
       
    End If
Next

DataTables.unload("应收表")
DataTables.load("应收表")


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/28 22:21:00 [显示全部帖子]

1、不要写到afterEdit事件。

 

2、单独做一个按钮测试,用上传的实例测试。如果出错,把实例发上来。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/3 12:38:00 [显示全部帖子]

上传具体实例测试。说明测试步骤。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/3 15:22:00 [显示全部帖子]

''根据新增日期,自动增加月份数据列

Dim ds As List(Of String)
ds = DataTables("销售出库单_基本信息_T_SAL_OUTSTOCK").GetValues("FDATE")   '取销售出库主表日期列的不重复的值
Dim ls As new List(Of String)
For Each d As Date In ds
    Dim y As String = d.Year
    Dim m As String = Format(d.Month,"00")
   
    Dim liename As String = "月份_" & y & m
    ''MessageBox.Show(1)
    If DataTables("应收表").DataCols.Contains(liename) = False And ls.contains(liename) = False Then
        '' MessageBox.Show(2)
        Dim Builder As New ADOXBuilder
        Builder.Open() '打开ADOXBuilder
        With Builder.Tables("应收表")
            '' MessageBox.Show(3)
            .AddColumn(liename ,ADOXType.Double) '增加双精度型列
            ls.add(liename)
            '' MessageBox.Show(4)
        End With
        Builder.Close() '关闭ADOXBuilder
       
    End If
Next

DataTables.unload("应收表")
DataTables.load("应收表")
DataTables("应收表").Save()

'追加客户'
Dim vals As List(Of String)
vals = DataTables("销售出库单_基本信息_T_SAL_OUTSTOCK").GetValues("FCUSTOMERID")
For Each val As String In vals
    For i As Integer = 0 To Vals.Count - 1
        Dim dr As DataRow = DataTables("应收表").Find("客户ID='" & Vals(i) & "' ")    'And 客户='" & Vals(i)(1) & "' '
        If dr Is Nothing Then  '如果没有找到
            dr = DataTables("应收表").AddNew()   '新增一行'
           
            dr("客户ID") = Vals(i)
        End If
    Next
Next

DataTables("应收表").Save()


 回到顶部