以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  重算当前表代码  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=7852)

--  作者:wqc360
--  发布时间:2010/8/11 23:48:00
--  重算当前表代码

如题,重置当前表所有列代码,谢谢

 

 


--  作者:mr725
--  发布时间:2010/8/12
--  
复制并粘贴全表............     图片点击可在新窗口打开查看      或 RaiseDataColChanged
--  作者:czy
--  发布时间:2010/8/12 0:02:00
--  

有必要吗?

 

For Each dc As DataCol In DataTables("表A").DataCols
    DataTables("表A").DataCols(dc.Name).RaiseDataColChanged()
Next


--  作者:wqc360
--  发布时间:2010/8/12 0:24:00
--  

C版,3楼也是要指定表名的,能不能不指定表名,重算当前表所有列。

或者如以下要求,如果当前表名=表A,则执行1条,如果当前表名=表B,则执行2条,如果当前表名=表C,则执行3条。。。。。我要把这个按钮放在菜单上,点击则重算当前表指定列,谢谢

 

1.DataTables("表A").DataCols("第一列").RaiseDataColChanged()

   DataTables("表A").DataCols("第二列").RaiseDataColChanged()

2.DataTables("表B").DataCols("第一列").RaiseDataColChanged()

3.DataTables("表C").DataCols("第一列").RaiseDataColChanged()

4.DataTables("表D").DataCols("第一列").RaiseDataColChanged()

   DataTables("表D").DataCols("第三列").RaiseDataColChanged()


--  作者:czy
--  发布时间:2010/8/12 0:28:00
--  
以下是引用wqc360在2010-8-12 0:24:00的发言:

C版,3楼也是要指定表名的,能不能不指定表名,重算当前表所有列。

 

 

呵呵,这个也能难倒你吗?

 

For Each dc As DataCol In DataTables("表A").DataCols
    DataTables(CurrentTable.Name).DataCols(dc.Name).RaiseDataColChanged()
Next

 

[此贴子已经被作者于2010-8-12 0:28:18编辑过]

--  作者:czy
--  发布时间:2010/8/12 0:30:00
--  
以下是引用wqc360在2010-8-12 0:24:00的发言:

 

或者如以下要求,如果当前表名=表A,则执行1条,如果当前表名=表B,则执行2条,如果当前表名=表C,则执行3条。。。。。我要把这个按钮放在菜单上,点击则重算当前表指定列,谢谢

 

 

那就不要用遍历所有列,事先写好代码加上判断就可以了。


--  作者:mr725
--  发布时间:2010/8/12 0:35:00
--  
以下是引用wqc360在2010-8-12 0:24:00的发言:

C版,3楼也是要指定表名的,能不能不指定表名,重算当前表所有列。

或者如以下要求,如果当前表名=表A,则执行1条,如果当前表名=表B,则执行2条,如果当前表名=表C,则执行3条。。。。。我要把这个按钮放在菜单上,点击则重算当前表指定列,谢谢

 

1.DataTables("表A").DataCols("第一列").RaiseDataColChanged()

   DataTables("表A").DataCols("第二列").RaiseDataColChanged()

2.DataTables("表B").DataCols("第一列").RaiseDataColChanged()

3.DataTables("表C").DataCols("第一列").RaiseDataColChanged()

4.DataTables("表D").DataCols("第一列").RaiseDataColChanged()

   DataTables("表D").DataCols("第三列").RaiseDataColChanged()

For Each dc As DataCol In CurrentTable.datatable.DataCols
    DataTables(CurrentTable.Name).DataCols(dc.Name).RaiseDataColChanged()
Next


--  作者:czy
--  发布时间:2010/8/12 0:40:00
--  
以下是引用mr725在2010-8-12 0:35:00的发言:

For Each dc As DataCol In CurrentTable.datatable.DataCols
    DataTables(CurrentTable.Name).DataCols(dc.Name).RaiseDataColChanged()
Next

 

谢谢,没注意到这个。


--  作者:wqc360
--  发布时间:2010/8/12 1:19:00
--  

谢谢2位老师!

终于搞定,并测试了效率,知道遍历所有列的效率很低的。以前主要是判断当前表的表名代码不知怎么写:If CurrentTable.Name = "日报表" Then

 

For Each dt As datatable In DataTables

    dt.Save()\'保存所有数据

Next

Syscmd.Table.Load() \'同步当前表

If CurrentTable.Name = "日报表" Then
    DataTables("日报表").DataCols("图号").RaiseDataColChanged()\'重算表
    DataTables("日报表").DataCols("工序_序号").RaiseDataColChanged()\'重算表
    DataTables("日报表").DataCols("工艺_序号").RaiseDataColChanged()\'重算表
    DataTables("日报表").DataCols("派工单号").RaiseDataColChanged()\'重算表
Elseif CurrentTable.Name = "产品目录" Then
    DataTables("产品目录").DataCols("图号").RaiseDataColChanged()\'重算表
    DataTables("产品目录").DataCols("材料_重量Kg").RaiseDataColChanged()\'重算表
    DataTables("产品目录").DataCols("材料_材质").RaiseDataColChanged()\'重算表
    DataTables("产品目录").DataCols("批量").RaiseDataColChanged()\'重算表
    DataTables("产品目录").DataCols("确定").RaiseDataColChanged()\'重算表
Elseif CurrentTable.Name = "产品工序" Then
    DataTables("产品工序").DataCols("图号").RaiseDataColChanged()\'重算表
    DataTables("产品工序").DataCols("工序_序号").RaiseDataColChanged()\'重算表
    DataTables("产品工序").DataCols("确定").RaiseDataColChanged()\'重算表   
Else
    Messagebox.Show("没有要重算的表!","提示")
End If

For Each dt As datatable In DataTables

    dt.Save()\'保存所有数据

Next

 

 

[此贴子已经被作者于2010-8-12 1:20:02编辑过]