| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1087 人关注过本帖
标题:把*.txt文件导入到grid中调试总是出错死机。
只看楼主 加入收藏
mohan123
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-9-10
收藏
 问题点数:0 回复次数:8 
把*.txt文件导入到grid中调试总是出错死机。

我要导入的文本文件里面的数据格式是(每个文件大概要几百条这样的数据):

10003`0157`JF7013528042`2102112321N078000305``2102120291N078000361`
10003`0157`JF7013528042`2102112321N078000305``2102100053N078000145`
10003`0157`JF7013528042`2102112321N078000305``2102350768N078000540`
10003`0157`JF7013528042`2102112321N078000305``21210109956T78000226`
10003`0157`JF7013528041`2102300535N078000568``028892R078000306`
10003`0157`JF7013528041`2102350768N078000283``2102120289N078000495`
10003`0157`JF7013528041`2102350768N078000283``2102300535N078000568`
10003`0157`JF7013528041`2102350768N078000283``2102120289N078000496`
10003`0157`JF7013528041`2102350768N078000283``0355651078000724`
下面代码就是实现文本文件导入到grid,但在测试时总是死机,无法通过,大概几分钟后跳到err处:
Private Sub Command1_Click()
On Error GoTo err
Text1.Text = ""
Dim a() As Integer
Dim i As Integer
Dim j As Integer
Dim n As String
Dim line As String
With CommonDialog1
.Filter = "全部文件(*.*)|*.*|文本文件(*.txt)|*.txt"
.FilterIndex = 2
.CancelError = True
.InitDir = App.Path
.ShowOpen
End With
If CommonDialog1.FileName <> "" Then
Open CommonDialog1.FileName For Input As #1
Do While Not EOF(1)
'Line Input #1, line
Line Input #1, n
Text1.Text = Text1.Text & n & vbCrLf
Loop
Close #1
End If
Dim lineCount As Integer
lineCount = SendMessage(Text1.hwnd, _
EM_GETLINECOUNT, 0&, 0&)
'MsgBox lineCount - 1

Dim x() As String
x = Split(Text1.Text, vbCrLf, -1)
Dim y() As String
y = Split(x(0), "'", -1)

ReDim a(lineCount - 1, UBound(y) + 1) As Integer
Open CommonDialog1.FileName For Input As #1
For i = 1 To lineCount - 1
For j = 1 To UBound(y) + 1
Input #1, a(i, j)
Next
Next
Close #1

MSFlexGrid1.Rows = lineCount - 1
MSFlexGrid1.Cols = UBound(y) + 1
For i = 0 To lineCount - 2
MSFlexGrid1.Row = i
For j = 0 To UBound(y)
MSFlexGrid1.Col = j
MSFlexGrid1.Text = a(i + 1, j + 1)
Next
Next
Exit Sub
err:
MsgBox "错误终止了,请重新选择"
Exit Sub
End Sub


我感觉可能是我定义的数据类型有问题,请大家指教一下!~~

搜索更多相关主题的帖子: grid txt 文件 调试 
2007-09-12 23:30
mohan123
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-9-10
收藏
得分:0 

我用F8逐句调试的时候总是执行到这段代码时无法向下执行,跳不出来。请大家帮忙看看是什么原因?我这段代码的问题是什么?
Do While Not EOF(1)
'Line Input #1, line
Line Input #1, n
Text1.Text = Text1.Text & n & vbCrLf
Loop

2007-09-13 10:38
taihongbo
Rank: 1
来 自:山东临沂
等 级:新手上路
帖 子:127
专家分:0
注 册:2004-11-15
收藏
得分:0 

我用F8逐句调试的时候总是执行到这段代码时无法向下执行,跳不出来。请大家帮忙看看是什么原因?我这段代码的问题是什么?


Do While Not EOF(1)
'Line Input #1, line
Line Input #1, n
Text1.Text = Text1.Text & n & vbCrLf
Loop


--------------------------EOF(1) ,使用打开的句柄

Open cTxtFile For Input As #intFile
sTmp = ""
Dim AA As Long

Do While Not EOF(intFile)


淘宝 毛绒玩具 熊
jstbobo.taobao. com
久顺通啵啵玩具店
2007-09-13 11:02
taihongbo
Rank: 1
来 自:山东临沂
等 级:新手上路
帖 子:127
专家分:0
注 册:2004-11-15
收藏
得分:0 
Line Input #1, n ------------------n 变量是不是没有定义。
Line Input # 语句一次只从文件中读出一个字符,直到遇到回车符 (Chr(13)) 或回车–换行符 (Chr(13) + Chr(10)) 为止。回车–换行符将被跳过,而不会被附加到字符串上。

[此贴子已经被作者于2007-9-13 11:07:16编辑过]


淘宝 毛绒玩具 熊
jstbobo.taobao. com
久顺通啵啵玩具店
2007-09-13 11:05
taihongbo
Rank: 1
来 自:山东临沂
等 级:新手上路
帖 子:127
专家分:0
注 册:2004-11-15
收藏
得分:0 

我用F8逐句调试的时候总是执行到这段代码时无法向下执行,跳不出来。请大家帮忙看看是什么原因?我这段代码的问题是什么?
Do While Not EOF(1)
'Line Input #1, line
Line Input #1, n
Text1.Text = Text1.Text & n & vbCrLf
Loop

没有语法的错误,是不是数据多速度慢 呀


淘宝 毛绒玩具 熊
jstbobo.taobao. com
久顺通啵啵玩具店
2007-09-13 11:22
mohan123
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-9-10
收藏
得分:0 

每个文件也就是有几百条这样的数据,也不算多了。后来我把程序改了下,可以导入,但是只能把每行作为一条导入,不能分成若干列:
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const EM_GETLINECOUNT = &HBA

Private Sub Command1_Click()
On Error GoTo err
Text1.Text = ""
Dim a() As String
Dim i As Integer
Dim j As Integer
Dim n As String
Dim line As String
With CommonDialog1
.Filter = "全部文件(*.*)|*.*|文本文件(*.txt)|*.txt"
.FilterIndex = 2
.CancelError = True
.InitDir = App.Path
.ShowOpen
End With
If CommonDialog1.FileName <> "" Then
Open CommonDialog1.FileName For Input As #1
Do While Not EOF(1)
'Line Input #1, line
Line Input #1, n
Text1.Text = Text1.Text & n & vbCrLf
Loop
Close #1
End If

Dim lineCount As Integer
lineCount = SendMessage(Text1.hwnd, _
EM_GETLINECOUNT, 0&, 0&)
'MsgBox lineCount - 1

Dim x() As String
x = Split(Text1.Text, vbCrLf, -1)
Dim y() As String
y = Split(x(0), vbCrLf, -1)
'y = Split(x(0), "`", -1)

ReDim a(lineCount - 1, UBound(y) + 1) As String
Open CommonDialog1.FileName For Input As #1

Dim xx As Integer
For i = 1 To lineCount - 1
For j = 1 To UBound(y) + 1
Line Input #1, a(i, j)

Next

Next
Close #1

MSFlexGrid1.Rows = lineCount - 1
MSFlexGrid1.Cols = UBound(y) + 1
MSFlexGrid1.ColWidth(0) = 8 * 20 * 20

For i = 0 To lineCount - 2
MSFlexGrid1.Row = i
For j = 0 To UBound(y)
MSFlexGrid1.Col = j
MSFlexGrid1.Text = a(i + 1, j + 1)
Next
Next
Exit Sub
err:
MsgBox "错误终止了,请重新选择"
Exit Sub
End Sub

请大家帮忙看看,怎么修改才能实现导入并按分隔符"`"分成若干列。

2007-09-13 13:07
mohan123
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-9-10
收藏
得分:0 
回复:(taihongbo)Line Input #1, n --------------...
变量n定义了,Dim n As String
2007-09-13 13:08
mohan123
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-9-10
收藏
得分:0 
我现在遇到一个问题,我不知道如何将导入到MSFlexGrid1的数据进行一定的规则筛选再导入到sql数据库中。
eg:
10003`0157`JF7013528042`2102112321N078000305``2102120291N078000361`
10003`0157`JF7013528042`2102112321N078000305``2102100053N078000145`
10003`0157`JF7013528042`2102112321N078000305``2102350768N078000540`
10003`0157`JF7013528042`2102112321N078000305``21210109956T78000226`
10003`0157`JF7013528041`2102300535N078000568``028892R078000306`
10003`0157`JF7013528041`2102350768N078000283``2102120289N078000495`
我现在已经实现把这些文本文件中的数据放入MSFlexGrid1中,每一条(eg:10003`0157`JF7013528042`2102112321N078000305``2102120291N078000361`)都单独放在MSFlexGrid1的单元格中,我先要按照条件(第二个"`"后的前两位等于"JF"并且第三个"`"后的前6位不等于"210211"的所有数据)导入到sql中,并且不能有重复的数据,发现重复的数据也不上传到sql数据库则保存到本地的access中。
请大家指点一下。
2007-09-13 17:39
mohan123
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-9-10
收藏
得分:0 
我在MSFlexGrid1中新加了一列作为标记,已经将MSFlexGrid1的数据进行一定的规则筛选出来。经过筛选后只要是标记为JF的我都要上传到sql数据。
现在的问题,便于我到时候导出成excel表,我想在导入的时候就只导入我需要的两个字段节,并判断是否重复。重复的话就不导入并提示。eg:10003`0157`JF7013528042`2102112321N078000305``2102120291N078000361`我只需要字段节JF7013528042和2102112321N078000305,这个如何实现。
最主要的问题是怎么截取字段并判断是否重复,请大家指点下把。
2007-09-14 15:26
快速回复:把*.txt文件导入到grid中调试总是出错死机。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017037 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved