以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请老师指导:取销售出库日期作为应收表的列名,谢谢! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132725) |
||||
-- 作者:sbfqpidt -- 发布时间: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 -- 发布时间:2019/3/28 14:55:00 -- "FDATE"是否存在空值或者其他不合规的数据 最好上例子
|
||||
-- 作者:有点甜 -- 发布时间:2019/3/28 15:04:00 -- Dim ds As List(Of String)
|
||||
-- 作者:客人 -- 发布时间:2019/3/28 15:49:00 -- 老师,还是不能
行. |
||||
-- 作者:有点甜 -- 发布时间:2019/3/28 16:22:00 -- 1、代码没问题;
2、需要关闭重新打开项目才能看懂新增的列;或者卸载表重新加载表后才能看到
Dim ds As List(Of String) For Each d As Date In ds DataTables.unload("应收表") |
||||
-- 作者:sbfqpidt -- 发布时间:2019/3/28 19:22:00 -- 也可能是数据量大吧,总是出问题. 也可能与其他功能结合起来了,相抵触吧。
|
||||
-- 作者:sbfqpidt -- 发布时间:2019/3/28 19:23:00 -- 补附件, |
||||
-- 作者:有点甜 -- 发布时间:2019/3/28 22:21:00 -- 1、不要写到afterEdit事件。
2、单独做一个按钮测试,用上传的实例测试。如果出错,把实例发上来。 |
||||
-- 作者:sbfqpidt -- 发布时间:2019/4/2 8:15:00 -- 不好意思!这两天在外出差。 老师:经验丰富,指导得很细心! 我:羡慕!嫉妒!恨呀!
谢谢老师! [此贴子已经被作者于2019/4/2 8:17:33编辑过]
|
||||
-- 作者:sbfqpidt -- 发布时间: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编辑过]
|