Foxtable(狐表)用户栏目专家坐堂 → [求助]批量导入TXT文件


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

主题:[求助]批量导入TXT文件

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109728 积分:558356 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/5 11:37:00 [显示全部帖子]

MainTable = Tables("股piao信息明细表")
'e.Sender.Enabled = False
Tables("股piao信息明细表").StopRedraw()

Dim dlg As New OpenFileDialog
dlg.Filter = "TXT文件|*.TXT"
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.Ok Then
    Dim dt As DataTable = DataTables("股piao信息明细表")
    For Each file As String In dlg.FileNames
        Dim strs As String = FileSys.ReadAllText(file)
        strs = strs.Trim().Replace(" ", ",").Replace(vblf,"")
        Dim name As String = FileSys.GetName(file.SubString(0, file.length - 4))
        Dim rs() As String = strs.Split(vbcr)
        Dim flag As Boolean
        For i As Integer = 0 To rs.Length - 1
            Dim cs() As String = rs(i).Split(",")
            If cs(0).trim() = "" Then Continue For
            Dim dr As DataRow = dt.Find("代码 = '" & name & "' and 时间 = '" & cs(0) & "'")
            
            If dr IsNot Nothing Then
                Dim Result = MessageBox.Show("有重复,是否覆盖导入?"& vbcrlf &"是---覆盖导入(将更新原有数据)"& vbcrlf &"否---新增导入(仅增加新数据)", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                If Result = DialogResult.Yes Then
                    flag = True
                Else
                    flag = False
                End If
                Exit For
            End If
        Next
        For i As Integer = 0 To rs.Length - 1
            Dim cs() As String = rs(i).Split(",")
            If cs(0).trim() = "" Then Continue For
            Dim dr As DataRow = dt.Find("代码 = '" & name & "' and 时间 = '" & cs(0) & "'")
            
            If dr IsNot Nothing
                If flag = False Then Continue For
            Else
                dr = DataTables("股piao信息明细表").Addnew()
            End If
            
            dr("代码") = name
            dr("时间") = cs(0)
            dr("开盘价") = cs(1)
            dr("最高价") = cs(2)
            dr("最低价") = cs(3)
            dr("收盘价") = cs(4)
            dr("成交量") = cs(5)
            dr("金额") = cs(6)
        Next
    Next
    
    dt.DeleteFor("时间 Is Null")
End If

Tables("股piao信息明细表").ResumeRedraw()
'e.Form.Close()
msgbox("导入结束")

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


加好友 发短信
等级:超级版主 帖子:109728 积分:558356 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/6 17:10:00 [显示全部帖子]

没有办法,要增加判断,就多了一次循环和查找遍历。每一行都要查询是否有旧数据以覆盖。

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


加好友 发短信
等级:超级版主 帖子:109728 积分:558356 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/6 17:11:00 [显示全部帖子]

可以参考这里自己改进一下

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


加好友 发短信
等级:超级版主 帖子:109728 积分:558356 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/12 13:36:00 [显示全部帖子]

SH600008里面的数据是按tab键分隔的,不是空格

strs = strs.Trim().Replace(" ", ",").Replace(vblf,"")
改为
strs = strs.Trim().Replace(" ", ",").Replace(vbtab, ",").Replace(vblf,"")



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


加好友 发短信
等级:超级版主 帖子:109728 积分:558356 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/14 15:12:00 [显示全部帖子]

1/2、类似流水账的用法,参考:http://www.foxtable.com/webhelp/topics/2136.htm

3、应该是可以的,自行学习一下存储过程的用法。

 回到顶部