以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  垂直表和水平表的转换  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=121988)

--  作者:yetle
--  发布时间:2018/7/17 9:00:00
--  垂直表和水平表的转换

Dim dtb As New DataTableBuilder("B")
dtb.AddDef(
"姓名", Gettype(String), 32)
For Each
v As String In DataTables("A").GetValues("课程")
   
dtb.AddDef(v, Gettype(Double))
Next

dtb.Build()

For Each
v As String In DataTables("A").GetValues("姓名")
   
Dim dr1 As DataRow = DataTables("B").AddNew()
    dr1(
"姓名") = v
   
For Each dr2 As DataRow In DataTables("A").Select("姓名 = \'" & v & "\'")
       dr1(dr2("课程")) = dr2("分数")
   
Next
Next
MainTable = Tables(
"表B")


请问老师,这里的表B,转换后还是临时表,表B数据内容编辑后,如何存储表B到外部数据源的sql数据库。好比下面的统计表,要编辑后再存储到外部数据源怎么做?




Dim tbl As Table = Tables("选择款_Table1")
Dim pd As WinForm.ComboBox = Forms("窗口").Controls("ComboBox1")
If tbl.Current IsNot Nothing Then
    pd.text = tbl.Current("款号")
End If

\'用SQL语句生成临时表
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "Select * F ROM {款号登记} left JOIN {款式颜色} ON {款号登记}.款号 = {款式颜色}.款号 left join {款式尺码} on {款号登记}.{款号}= {款式尺码}.{款号} "
dt = cmd.ExecuteReader()
\'对临时进行分组统计
Dim b As New CrossTableBuilder("大货用量颜色尺码",dt)
b.HGroups.AddDef("物料基本信息_序号")
b.HGroups.AddDef("物料基本信息_物料大类")
b.HGroups.AddDef("物料基本信息_客供")
b.HGroups.AddDef("物料基本信息_物料名称")
b.HGroups.AddDef("物料基本信息_物料辅助说明")
b.HGroups.AddDef("物料基本信息_部位及用途")
b.HGroups.AddDef("物料基本信息_布封")
b.HGroups.AddDef("物料基本信息_克重")
b.HGroups.AddDef("物料基本信息_单位")
b.HGroups.AddDef("物料基本信息_版规格配色要求")
b.HGroups.AddDef("物料基本信息_不分色")
b.HGroups.AddDef("物料基本信息_适用颜色")
b.HGroups.AddDef("物料基本信息_同色")
b.HGroups.AddDef("物料基本信息_同量")
b.HGroups.AddDef("物料基本信息_分码")
b.HGroups.AddDef("物料基本信息_适用尺码")
b.HGroups.AddDef("物料基本信息_物料编码")
b.HGroups.AddDef("用量信息_待定")
b.HGroups.AddDef("用量信息_上级")
b.HGroups.AddDef("用量信息_领料部门")
b.HGroups.AddDef("用量信息_变更日期")
b.HGroups.AddDef("用量信息_下级")
b.HGroups.AddDef("供应商属性_供应商名称")
b.HGroups.AddDef("供应商属性_转换率")
b.HGroups.AddDef("供应商属性_采购单位")
b.HGroups.AddDef("供应商属性_成份")



b.VGroups.AddDef("颜色名称")
b.VGroups.AddDef("尺码名称")



b.HorizontalTotal = True
b.VerticalTotal = True
b.Build()
\' MainTable = Tables("横向出货计划1")
Tables("窗口_Table2").DataSource = b.BuildDataSource()

DataTables("窗口_Table2").load()





Forms("选择款").Close()

[此贴子已经被作者于2018/7/17 9:22:58编辑过]

--  作者:有点甜
--  发布时间:2018/7/17 10:03:00
--  

1、加入一列临时列,编写datacolchanged事件,如果修改了列值,记录为修改;如果是新增行,记录为新增;

 

2、做一个保存按钮,循环表格的每一行,根据临时列知道是否新增或修改,然后查找各个表的数据find修改值,或者addnew新增值


--  作者:yetle
--  发布时间:2018/7/17 10:11:00
--  
存储到外部数据源怎么写?
--  作者:有点甜
--  发布时间:2018/7/17 11:02:00
--  
以下是引用yetle在2018/7/17 10:11:00的发言:
存储到外部数据源怎么写?

 

sqlfind或者find查找到对应的行(根据主键列查找)


--  作者:yetle
--  发布时间:2018/7/18 13:54:00
--  
这个比较复杂,不知道怎么写,何从下手
--  作者:有点甜
--  发布时间:2018/7/18 15:37:00
--  

1、会开启datacolchanged事件了没有?
 
http://www.foxtable.com/webhelp/scr/0671.htm

 
2、编写查询表的datacolchanged事件,查找原始表的行,赋值过去。
 
http://www.foxtable.com/webhelp/scr/1451.htm