各位老师好:
我想实现从数据库里的一个表的一个列复制到新建的一个表的一个同名列里,试了以下几种方式:
1.filler填充,
dim f As New Filler
f.SourceTable = DataTables("订单") '指定数据来源
f.SourceCols = "产品,客户" '指定数据来源列
f.DataTable = DataTables("统计") '指定数据接收表
f.DataCols = "产品,客户" '指定数据接收列
f.Fill() '填充数据
发现 只能填充已经加载了的数据,数据库里的数据没有加载
2.直接编码:
dim r as row = Tables("订单").Current
dim dr As DataRow = DataTables("统计表").Addnew
dr("产品") = r("产品")
dr("客户") = r("客户")
也是只有加载了的数据。
3.
假定有一个产品表和一个库存表,两个表都有产品编号、产品名称、产品规格三列,但是没有建立关联,我们希望:
1、在产品表增加一个产品,库存表对应也增加此产品。
2、在产品表删除一个产品,库存表对应也删除此产品。
3、在产品表更改某产品的产品编号、产品名称或产品规格后,库存表也能同步修改。
设计步骤
1、将产品表的DataColChanged事件代码设置为
也是只有加载了的数据
4.
Dim
Vals As List(of String())
Vals = DataTables("来源表").GetValues("产品|客户")
For i As Integer = 0 To Vals.Count - 1
Dim dr As DataRow = DataTables("接收表").AddNew()
dr("产品") = Vals(i)(0)
dr("客户") = Vals(i)(1)
Next
GetValues("产品|客户")
可以用SQLGetValues("产品|客户")可以实现数据库里的数据填充
但是却不能排除已有内容!
想过 如果加上不能输入重复值,也许有效:
Select Case e.DataCol.name
Case "型号","规格"
Dim dr As DataRow = e.DataRow
If dr.IsNull("型号") = False AndAlso dr.IsNull("规格") = False Then
If e.DataTable.Compute("Count([_Identify])","型号 = '" & dr("型号") & "' And 规格 = '" & dr("规格") & "'") > 1 Then
MessageBox.Show("已经存在相同型号和规格的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
e.DataRow(e.DataCol.Name) = e.OldValue '取消输入
End If
End If
End Select
但是执行填充的计划管理却报错。
哎,有木有什么办法可以实现呢?