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


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

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

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


加好友 发短信
等级:幼狐 帖子:128 积分:1592 威望:0 精华:0 注册:2013/7/8 11:51:00
请老师指导:取销售出库日期作为应收表的列名,谢谢!  发帖心情 Post By:2019/3/28 14:35: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)
    For Each dc As DataCol In DataTables("应收表").DataCols   '找出应收表所有列名
        If liename <> dc.name  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
Next

在这里出了错误 :MessageBox.Show(3),错误提示如下:

.NET Framework 版本:2.0.50727.8937
Foxtable 版本:2018.10.9.1
错误所在事件:表,韩婷应收表, DataColChanged
详细错误信息:
调用的目标发生了异常。
在对应所需名称或序数的集合中,未找到项目。

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


加好友 发短信
等级:狐神 帖子:4760 积分:34608 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/3/28 14:55:00 [只看该作者]

"FDATE"是否存在空值或者其他不合规的数据
最好上例子

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


 回到顶部
客人(113.118.*.*)
  4楼


  发帖心情 Post By:2019/3/28 15:49:00 [只看该作者]

老师,还是不能
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:取销售出库日期不重复值为应收表的列名.zip

行.

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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("应收表")


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


加好友 发短信
等级:幼狐 帖子:128 积分:1592 威望:0 精华:0 注册:2013/7/8 11:51:00
  发帖心情 Post By:2019/3/28 19:22:00 [只看该作者]

也可能是数据量大吧,总是出问题.
也可能与其他功能结合起来了,相抵触吧。
可是,工作确实需要这种作法呀。
图片点击可在新窗口打开查看此主题相关图片如下:错误2.png
图片点击可在新窗口打开查看

谢谢老师帮忙查问题!

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


加好友 发短信
等级:幼狐 帖子:128 积分:1592 威望:0 精华:0 注册:2013/7/8 11:51:00
  发帖心情 Post By:2019/3/28 19:23:00 [只看该作者]

补附件,

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


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

1、不要写到afterEdit事件。

 

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


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


加好友 发短信
等级:幼狐 帖子:128 积分:1592 威望:0 精华:0 注册:2013/7/8 11:51:00
  发帖心情 Post By:2019/4/2 8:15:00 [只看该作者]

不好意思!这两天在外出差。
老师:经验丰富,指导得很细心!
我:羡慕!嫉妒!恨呀!
谢谢老师!
[此贴子已经被作者于2019/4/2 8:17:33编辑过]

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


加好友 发短信
等级:幼狐 帖子:128 积分:1592 威望:0 精华:0 注册:2013/7/8 11:51:00
  发帖心情 Post By:2019/4/3 12:32: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 & Format(m,"00")
    ''MessageBox.Show(1)
    If DataTables("应收表").DataCols.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) '增加双精度型列
            
           '' 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()
[此贴子已经被作者于2019/4/3 12:35:52编辑过]

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