Private Sub Command1_Click()
Dim dm$, bzb$, dzb$, gc$, lx$, dq$
Dim sjk As String
Open Text2.Text For Input As #2
Do While Not EOF(2)
Input #2, dm, bzb, dzb, gc, lx, dq
sjk = "insert into kzd values ('" & Trim(dm) & "','" & Trim(bzb) & "','" & Trim(dzb) & "','" & Trim(gc) & "','" & Trim(lx) & "','" & Trim(dq) & "')"
cnn.Execute (sjk)
Loop
Close #2
cnn.CommitTrans
MsgBox "完成导入"
End Sub
这是一个从TXT导入到access的代码,但是在(Input #2, dm, bzb, dzb, gc, lx, dq
)出问题了。输入超出文件尾。。求大侠解释,,谢谢
您这个也有问题,比如txt是这个样子的:
1,1,1,1,1,1
1, ,1,1,1,1
1,1,1,1,1,
这种类型,只能有1,1,1,1,1,1
这一行被导入,其他导不进去。。。怎么办呢
你试了没有啊?只要该行有5个逗号就行,逗号之间有没有数据都可以的,比如
,,,,,
不过导入的字段就都是空的
谢谢啦,现在可以了,我还想请问一个问题,就是它为什么不能连续导入呢,就是导入一个TXT,有导入第二个TXT。。只能关了程序重新才可以导入
追答可能是你的程序的其他代码有问题。它的出错提示是什么?
另外我更正一下我代码中的这行:
s=split(input(lof(1),#1),vbcrlf)
改为
s=split(input(lof(2),#2),vbcrlf)
恩恩,提示是“试着不先使用,begintrans而提交过退回事务
追答把下面这行删掉即可:
cnn.CommitTrans
就是不使用事务处理方式。
如果一定要用,就要在前面
Dim sjk As String
的下面插入一行:
cnn.begintrans
On Error Resume Next
Input #2, dm, bzb, dzb, gc, lx, dq
sjk = "insert into kzd values ('" & Trim(dm) & "','" & Trim(bzb) & "','" & Trim(dzb) & "','" & Trim(gc) & "','" & Trim(lx) & "','" & Trim(dq) & "')"
cnn.Execute (sjk)
Err.Clear
Loop
按照您的这个方法原文本是
? 这个问题还没好? 我有点晕了
直接用以下代码吧
-----------------------------
Private Sub Command1_Click()
' 异常捕捉
On Error GoTo HasError
' 变量声明
Dim strInput As String ' 读取的字符串行
Dim Items() As String ' 读取的项目
Dim Line As Long ' 读取的行数
Dim strSQL As String ' 组合后的SQL指令
' 初始化
Line = 0
' 从文件中获取数据
Open Text2.Text For Input As #2
Do While Not EOF(2)
' 行读取
Line = Line + 1
Line Input #2, strInput
If Len(strInput) > 0 Then
' 行元素检查
Items = Split(strInput, ",")
If UBound(Items) 5 Then
Call MsgBox("第" & Line & "行数据符合要求,此行已被忽略")
Exit Do
End If
' 写入数据库
strSQL = "INSERT INTO [kzd] VALUES " & _
"('" & Trim(Items(0)) & "'" & _
",'" & Trim(Items(1)) & "'" & _
",'" & Trim(Items(2)) & "'" & _
",'" & Trim(Items(3)) & "'" & _
",'" & Trim(Items(4)) & "'" & _
")"
Call cnn.Execute(strSQL)
End If
Loop
Close #2
Call cnn.CommitTrans
Call MsgBox("完成导入")
Exit Sub
' 异常处理段
HasError:
Call MsgBox(Err.Description)
Call Err.Clear
End Sub
Input #2, TempStr,dm, bzb, dzb, gc, lx, dq
这个样子??
不是
要 Input #2, TempStr
然后看你的数据是用什么分割的,
将TempStr分割成几个部分,再分别赋值给 dm, bzb, dzb, gc, lx, dq
Dim RefS As Variant
如果用“|”键分割:
RefS = Split(TempStr, “|”)
dm=RefS(0)
bzb=RefS(1)
dzb=RefS(2)
gc=Refs(3)
lx=RefS(4)
dq=RefS(5)
不好意思呀。还是不得行。。。我的数据是这个样子的
比如:
1,2,3,4,5,6
1,2,3,4,5,6
1, ,2,2,2,2,
1,2,3,2, ,
每行六个,用逗号隔开,但是有的地方没有数据就是空格键。。