Foxtable(狐表)用户栏目专家坐堂 → 请教狐爸高速合并与加载两个问题


  共有9010人关注过本帖树形打印复制链接

主题:请教狐爸高速合并与加载两个问题

帅哥哟,离线,有人找我吗?
blackzhu
  11楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57596 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/7/18 11:37:00 [只看该作者]

Dim mg As New Merger
mg
.SourcePath = "c:\data\" '指定数据文件所在目录
mg.Format =
"Delimited" '指定格式
mg
.SourceTableName = "订单" '指定要合并的文件,无需扩展名
mg
.DataTableName = "订单" '指定接收数据的表
mg
.Merge() '开始合并

合并文本文件的时候,最好配合有schema.ini文件。  应该是这个问题


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  12楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57596 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/7/18 11:44:00 [只看该作者]

如果是 schema.ini  的问题 我也不知道怎么用了?

代码就是这样的,但是合并没有任何数据.

Dim mg As New Merger
mg.SourcePath = ProjectPath & "打卡数据"
mg.Format = "Delimited" '指定格式
Dim rq As Date = e.Form.Controls("rq").Value
If e.Form.Controls("rq").Value IsNot Nothing  Then
    mg.SourceTableName = "Time" & Format(rq,"yyyyMMdd")
End If
mg.DataTableName = "KQ原始数据表" '指定接收数据的表
mg.Merge()

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  13楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57596 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/7/18 11:45:00 [只看该作者]

你可以 导出到excel里面  这样处理简单些!

 回到顶部
帅哥哟,离线,有人找我吗?
小猪鑫鑫
  14楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
  发帖心情 Post By:2012/7/18 12:08:00 [只看该作者]

首先非常谢谢您对我的回复,您已努力了,再次感谢!但导出EXCEL表又比较麻烦,再等等狐爸看看,如再不行再说吧,谢谢您!


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/7/18 12:33:00 [只看该作者]

自己写一段,简单高效:

 

Dim dlg As new OpenFileDialog
dlg.Filter = "文本文件|*.txt"
Tables("KQ原始数据表").StopRedraw
If dlg.ShowDialog = DialogResult.OK Then
    Dim strs As String = FileSys.ReadAllText(dlg.FileName)
    strs = strs.Replace(vblf,"")
    Dim rs() As String = strs.Split(vbcr)
    For Each r As String In rs
        Dim cs() As String = r.Split(vbtab)
        If cs.Length = 4 Then
            Dim dr As DataRow = DataTables("KQ原始数据表").Addnew()
            dr("卡机号") = cs(0)
            dr("原始数据") = cs(1)
            dr("卡标") = cs(2)
        End If
    Next
End If
Tables("KQ原始数据表").ResumeRedraw


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  16楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57596 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/7/18 12:44:00 [只看该作者]

真是高效.

 回到顶部
帅哥哟,离线,有人找我吗?
小猪鑫鑫
  17楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
  发帖心情 Post By:2012/7/18 13:21:00 [只看该作者]

狐爸:真是非常感谢您,我在您的代码的基础上修改了一下,因为我是不希望出现文件路径对话框的,我是在日期框中选定日期后,自动合并数据,代码如下:

Dim rq As WinForm.DateTimePicker = Forms("窗口2").Controls("rq")
Dim rqt As String =rq.text
rqt =rqt.Replace("-","")
Dim wjm As String ="Time" & rqt & ".txt"
Tables("KQ原始数据表").StopRedraw
Dim strs As String = FileSys.ReadAllText("d:\测试\打卡数据\" & wjm)
strs = strs.Replace(vblf,"")
Dim rs() As String = strs.Split(vbcr)
For Each r As String In rs
    Dim cs() As String = r.Split(vbtab)
    If cs.Length = 4 Then
        Dim dr As DataRow = DataTables("KQ原始数据表").Addnew()
        dr("卡机号") = cs(0)
        dr("原始数据") = cs(1)
        dr("卡标") = cs(2)
        dr("卡号") =cs(3)
    End If
Next

效果很好,但又出现了一个问题,如果所选日期代表的文本文件不存在的话,系统就报错,并很难解决,比如说我选了2012-07-15这个日期,产生的文本文件名为Time20120715.txt,但这个文本文件,文件夹中并不存在,它就报错,请狐爸再帮我看看,谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2012/7/18 13:45:00 [只看该作者]

判断呀

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/7/18 13:46:00 [只看该作者]

Dim rq As WinForm.DateTimePicker = Forms("窗口2").Controls("rq")
Dim rqt As String =rq.text
rqt =rqt.Replace("-","")
Dim wjm As String ="Time" & rqt & ".txt"
wjm = "d:\测试\打卡数据\" & wjm
If FileSys.FileExists(wjm) Then
    Tables("KQ原始数据表").StopRedraw
    Dim strs As String = FileSys.ReadAllText(wjm)
    strs = strs.Replace(vblf,"")
    Dim rs() As String = strs.Split(vbcr)
    For Each r As String In rs
        Dim cs() As String = r.Split(vbtab)
        If cs.Length = 4 Then
            Dim dr As DataRow = DataTables("KQ原始数据表").Addnew()
            dr("卡机号") = cs(0)
            dr("原始数据") = cs(1)
            dr("卡标") = cs(2)
            dr("卡号") =cs(3)
        End If
    Next
Else
    messagebox.show("文件不存在")
End If

 回到顶部
帅哥哟,离线,有人找我吗?
小猪鑫鑫
  20楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
  发帖心情 Post By:2012/7/18 14:28:00 [只看该作者]

狐爸:现在有个问题不知怎么回事,我的数据源是ACCESS时,您的代码效果非常好,但我一转到SQL SERVER时,系统好像能运作,合并数据后,状态栏显示新合并的行数,但就是不显示数据,随便点几下以后,整个界面变白了,点击其它的主表,其它表没问题,就是这个表,一合并数据就不显示了,请问那里出了问题,我没动什么东西啊,并且我重新删除了SQL SERVER中的数据表,重做了一个,也不行,请狐爸看看,谢谢

 回到顶部
总数 22 上一页 1 2 3 下一页