以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 保存外部数据的小问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=75295) |
-- 作者:zhangchi96 -- 发布时间:2015/10/3 23:01:00 -- 保存外部数据的小问题 有两个表:外部数据表、内部数据表,表结构相同,其中有两列是【姓名】【台帐年月】 其外部数据源为: Provider=SQLOLEDB.1;Password=******;Persist Security Info=True;User ID=sa;Initial Catalog=***;Data Source=***.***.**.** 在窗体中有三个按钮
第一按钮:【加载外部数据】 Dim Filter As String Filter = " 台帐年月 = 201509 " DataTables("外部数据表").LoadFilter = Filter \'设置加载条件 DataTables("外部数据表").Load() 第二按钮:【内部数据表复制到外部数据表】
For Each r1 As DataRow In DataTables("外部数据表").Select(" 台帐年月 = 201509 ") r1.delete \'删除【表】中符合减少条件的行 Next For Each dr1 As DataRow In DataTables("内部数据表").Select(" 台帐年月 = 201509 ") Dim dr2 As DataRow = DataTables("外部数据表").AddNew() For Each dc As DataCol In DataTables("内部数据表").DataCols dr2(dc.Name) = dr1(dc.name) Next Next 第三按钮:【保存外部数据表】 DataTables("外部数据表").save() 请教:第三个按钮保存数据的时候,由于数据量较大,需要比较长的时间才能把数据保存到服务器 1、能否有针对时间较长的解决方法 2、在保存外部数据表的时候,能否出现一个窗口,窗口滚动显示已经保存的当前行的【姓名】、行数以及保存结束时总记录的条数,这样就知道保存的进度了。 |
-- 作者:大红袍 -- 发布时间:2015/10/4 10:44:00 -- 1、直接用sql语句删除和新增。类似
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=52855&skin=0
2、如果用你原来的方法,就在beforeSaveDataRow事件写代码显示即可;如果用1的方法,直接循环每一行时,就显示出来。 |
-- 作者:zhangchi96 -- 发布时间:2015/10/7 18:33:00 -- 我还是想用我自己原来的思路,只是想得到原先提到的效果:
在保存外部数据表的时候,能否出现一个窗口,窗口滚动显示已经保存的当前行的【姓名】、行数以及保存结束时总记录的条数,这样就知道保存的进度了
可惜说明书没有相关的例子,恳请 超版主【大红袍】帮我写个大体的代码,好吗? |
-- 作者:大红袍 -- 发布时间:2015/10/7 19:15:00 -- 去编写beforeSaveDataRow事件,在里面弹出当前行的姓名即可。 |
-- 作者:zhangchi96 -- 发布时间:2015/10/7 20:43:00 -- 编写beforeSaveDataRow事件,我是这样写的:
Dim RowQty As Integer
但这样的结果是,每个姓名就弹出一个对话框,要点击【确定】,我想要的是出现一个窗口然后有姓名的滚动,请教【大红袍】老师,这样的代码从来没有写过,麻烦你指导一下!谢谢了! |
-- 作者:大红袍 -- 发布时间:2015/10/7 20:45:00 -- 不是这样写,就两行代码。保存之前,把提示窗口打开,save之后,把提示窗口关闭。
If Forms("提示").Opened Then Forms("提示").Controls("Label1").Text = e.DataRow("姓名") Application.DoEvents() End If |
-- 作者:zhangchi96 -- 发布时间:2015/10/7 22:23:00 -- 谢谢大红袍老师,我又建了一个窗体“提示”,在此窗体中增加了标签Label1,然后就有用了, 感觉就是姓名更换太快了。我原先设想是和电影的片尾滚动字幕一样的(如果又能调节滚动的速度的话),不知道需要如何改进。 恳请【大红袍】老师有空指点一下! 设想效果图示: 开始时 __________________________________________ | 下面开始保存数据到服务器。。。。。 | | 姓名01 | | 姓名02 | | 姓名03 | | 姓名04 | | | |_________________________________________| [此贴子已经被作者于2015/10/7 22:24:55编辑过]
|
-- 作者:zhangchi96 -- 发布时间:2015/10/7 22:23:00 -- 结束时 __________________________________________ | 下面开始保存数据到服务器。。。。。 | | 姓名95 | | 姓名96 | | 姓名97 | | 姓名98 | | 保存完备,一共有98条记录 | |_______________ _________________________| [此贴子已经被作者于2015/10/7 22:24:23编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/10/7 22:48:00 -- 你还是用循环每一行,然后每一行单独save才行,不然,foxtable是一起保存,也控制不了提示。如
For Each dr As DataRow In DataTables("表A").DataRows
------------------------------------------
static ls As new List(of String) |
-- 作者:zhangchi96 -- 发布时间:2015/10/8 14:44:00 -- 谢谢大红袍老师的悉心指导! 代码都已经成功运行,我把最后的代码整理如下:
1、一楼中提到的:第三按钮:【保存外部数据表】 DataTables("外部数据表").save() 修改为: For Each dr As DataRow In DataTables("外部数据表").DataRows 2、【外部数据表】的表属性中beforeSaveDataRow事件: 注:窗口【提示】中必须插有标签控件【Label1】和文本框控件【TextBox1】
Dim RowQty As Integer,i As Integer static ls As new List(of String)
|