以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  表A部分数据转到表B的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=28827)

--  作者:aygp
--  发布时间:2013/2/20 1:23:00
--  表A部分数据转到表B的问题

表A部分数据转到表B的问题

有一“学生基本信息”表,此表中学生信息不可重复。有一“奖助表”,此表中学生信息可以多次重复,因为某一名学生在校期间可以多次获得奖学金。我在项目中建了一个“奖助学金评定”窗体,在“学生基本信息”表中筛选了4条数据,想通过“批量转换”按钮将筛选出的4条数据复制到“奖助表”中对应的列中。请问“批量转换”按钮的代码如何写?见附件

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


--  作者:小猪鑫鑫
--  发布时间:2013/2/20 8:41:00
--  
楼主:您的数据源好像没有上传上来,没法打开您的数据库啊!
--  作者:lsy
--  发布时间:2013/2/20 8:51:00
--  

Dim nma() As String = {"A1","A2","A3"}  \'学生基本信息表数据来源列
Dim nmb() As String = {"B1","B2","B3"}  \'奖助表数据接收列
Dim dr As DataRow = DataTables("奖助表").AddNew
For i As Integer = 0 To nma.Length - 1
    dr(nmb(i)) =  DataTables("学生基本信息").DataRow(nma(i))   
Next

 

如果是所有列都复制,代码如下:


Dim dr As DataRow = DataTables("奖助表").AddNew
For Each dc As DataCol In DataTables("奖助表").DataCols
    dr(dc.Name) = DataTables("学生基本信息").DataRow(dc.Name)
Next


--  作者:lin_hailun
--  发布时间:2013/2/20 9:10:00
--  
 楼主你的数据表打不开。

可以用3楼的代码,或者考虑用数据填充器。

Dim f As New Filler
f.SourceTable = DataTables("订单") \'指定数据来源
f.SourceCols = "产品,客户" \'指定数据来源列
f.Filter = Tables("订单").Filter
f.DataTable = DataTables("统计") \'指定数据接收表
f.DataCols = "产品,客户" \'指定数据接收列
f.Fill() \'填充数据

http://www.foxtable.com/help/topics/0680.htm

--  作者:aygp
--  发布时间:2013/2/20 9:41:00
--  

不好意思,疏忽了。3楼的代码出现问题,请帮忙改一下:

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:用户.rar


图片点击可在新窗口打开查看此主题相关图片如下:截图00.jpg
图片点击可在新窗口打开查看

--  作者:lin_hailun
--  发布时间:2013/2/20 9:44:00
--  
 代码这样改。

Dim nma() As String = {"A1","A2","A3"}  \'学生基本信息表数据来源列
Dim nmb() As String = {"B1","B2","B3"}  \'奖助表数据接收列
For Each r As Row In Tables("学生基本信息").rows
    Dim dr As DataRow = DataTables("奖助表").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) =  r(nma(i))
    Next
Nex


--  作者:lin_hailun
--  发布时间:2013/2/20 9:45:00
--  
 或者这样改。

Dim f As New Filler
f.SourceTable = DataTables("学生基本信息") \'指定数据来源
f.SourceCols = "A1,A2,A3" \'指定数据来源列
f.Filter = Tables("学生基本信息").Filter
f.DataTable = DataTables("奖助表") \'指定数据接收表
f.DataCols = "B1,B2,B3" \'指定数据接收列
f.Fill() \'填充数据

--  作者:aygp
--  发布时间:2013/2/20 9:49:00
--  
林老师的代码通过。谢谢!
--  作者:aygp
--  发布时间:2013/2/20 10:50:00
--  

现在对 "管理项目1"进行了修改,增加了一个“录入窗体”,在“学生基本信息”表中筛选的若干条数据是在同一个年月获得同一个等级的助学金,因此想把同一个年月、同一个等级的助学金信息填入到“录入窗体”中,点击确认按钮后,就一次把相关数据都批量填入到“奖助表”的对应列中。请问以下林老师的“确认”按钮的代码应该如何修改?"管理项目2"见附件

Dim f As New Filler
f.SourceTable = DataTables("学生基本信息") \'指定数据来源
f.SourceCols = "系部,年级,班级,姓名,贫困生,辅导员" \'指定数据来源列
f.Filter = Tables("学生基本信息").Filter
f.DataTable = DataTables("奖助表") \'指定数据接收表
f.DataCols = "系部,年级,班级,姓名,贫困生,辅导员" \'指定数据接收列
f.Fill() \'填充数据

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:相关管理项目2.rar


--  作者:lin_hailun
--  发布时间:2013/2/20 11:17:00
--  
 看看是否这样?

Dim d As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
Dim l As WinForm.TextBox = e.Form.Controls("TextBox1")
Dim m As WinForm.TextBox = e.Form.Controls("TextBox2")

Dim nma() As String = {"院系","年级","班级","专业","姓名","贫困生","辅导员"}  \'学生基本信息表数据来源列
Dim nmb() As String = {"院系","年级","班级","专业","姓名","贫困生","辅导员"}  \'奖助表数据接收列
For Each r As Row In Tables("学生基本信息").rows
    Dim dr As DataRow = DataTables("奖助表").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) =  r(nma(i))
    Next
    dr("奖助年月") = d.Value
    dr("奖助等级") = l.Text
    dr("奖助金额") = m.Text
Next