怎能样把.txt文件记录导入到现有的access数据库中一个表中

时间:2022-10-24 07:56:15
txt文件记录导入到现有的数据库中一个表中(数据库我自己已经做好了,表的字段跟.txt文件记录的字段一样)如果.txt文件内容增加了,就把增加的内容同样导入到数据库指定的表中,即表的内容也增加了.如果实现这样的功能难不难呢,要怎样编程?

20 个解决方案

#1


http://expert.csdn.net/Expert/topic/2457/2457457.xml?temp=.4094049

http://expert.csdn.net/Expert/topic/2429/2429510.xml?temp=.6784021

#2


会读入文本文件内容,会写入ACCESS表,就成了。

#3


主要是按分段读入txt文本,然后给数组,再用数组给ACCESS写记录

#4


用个textbox或者richtextbox,与数据库中的指定表相连,然后用DATA控件的UPDATA属性啊
textbox或者richtextbox打开.TXT文件这里就不多说了,用个ComDialg就可以了

#5


yoki(小马哥) ( :
你好,上次问你的问题我已解决,上次的问题是将文本文件导入数据库,但那是程序自己创建数据库和一个表.
现在,我是想把.txt文件导入到现有的数据库,比如roll.mdb中的roll表中,而且是每次把.txt文件的内容增加到roll表中,即roll表的数据内容不断增加,而表名不变.
yoki(小马哥) 能否帮我修改一下上次的代码.不好意思,本人的水平比较菜.谢了.

#6


使用ODBC里数据源直接转换

#7


yoki(小马哥) ( :
你好,上次问你的问题我已解决,上次的问题是将文本文件导入数据库,但那是程序自己创建数据库和一个表.
现在,我是想把.txt文件导入到现有的数据库,比如roll.mdb中的roll表中,而且是每次把.txt文件的内容增加到roll表中,即roll表的数据内容不断增加,而表名不变.
yoki(小马哥) 能否帮我修改一下上次的代码.不好意思,本人的水平比较菜.谢了.

#8


up

#9


你可以先导到一个临时表中然后挑选符合纪录的插入到你最终的表中

#10


Call TxtToMdb("c:\","test.txt","c:\a.mdb","#TempTable")
cn.execute"insert into yourtable select * from #TempTable where......"
cn.execute "drop table #TempTable"

#11


Private Sub TxtToMdb(sTxtPath As String, sTxtFileName As String, sAccessFullFileName As String, sAccessTable As String)
'功能:将文本文件导入到Access中的表
'调用:Call TxtToMdb("c:\","zz.txt","c:\a.mdb","NewTempTable")
'结果:将c:\zz.txt导入到c:\a.mdb中的NewTempTable表中
    Dim db As DAO.Database
    Dim tbl As DAO.TableDef
    On Error Resume Next
    Set db = Workspaces(0).OpenDatabase("c:\out.mdb")    
    Set tbl = db.CreateTableDef("Temp")
    tbl.Connect = "Text;database=c:\"
    tbl.SourceTableName = "zz#txt"
    db.TableDefs.Append tbl
    db.TableDefs.Delete "NewTempTable"
     On Error GoTo err_exit     
     db.Execute "insert into roll select F2 from Temp"
    db.Close
    Set db = Nothing
    Exit Sub
err_exit:
    Set db = Nothing
    MsgBox Err.Description
End Sub
 yoki(小马哥):你好,我在工程里,工程里面只有一个form时,可以插入记录到roll中,但我重建一个工程,把原来工程中的form,挂接到新工程的一个菜单时,运行提示:
找不到可插入的ISAM
是怎么一回事啊,谢了.

#12


Private Sub TxtToMdb(sTxtPath As String, sTxtFileName As String, sAccessFullFileName As String, sAccessTable As String)
'功能:将文本文件导入到Access中的表
'调用:Call TxtToMdb("c:\","zz.txt","c:\a.mdb","NewTempTable")
'结果:将c:\zz.txt导入到c:\a.mdb中的NewTempTable表中
    Dim db As DAO.Database
    Dim tbl As DAO.TableDef
    On Error Resume Next
    Set db = Workspaces(0).OpenDatabase("c:\out.mdb")
    Set tbl = db.CreateTableDef("Temp")
    tbl.Connect = "Text;database=c:\"
    tbl.SourceTableName = "zz#txt"
    db.TableDefs.Append tbl
    db.TableDefs.Delete "NewTempTable"
    On Error GoTo err_exit
    db.Execute "insert into roll select F2 from Temp"
    db.Close
    Set db = Nothing
    Exit Sub
err_exit:
    Set db = Nothing
    MsgBox Err.Description
End Sub

找不到可插入的ISAM,那是因为.我用的数据库是另一个程序运行后生产的临时表"Temp".
我把运行正常的程序代码拷贝到另一程序中,但运行出现没法建立临时表"temp" 在进行插入记录到roll时,提示:"mirosoft Jet 数据引擎找不到表"Temp""
上面的代码不是已经建表了吗?不知为什么????
请教了.谢谢

#13


OK

#14


我来晚了!UP

#15


需判断temp是否已经存在,若存在的话再建立一个temp的昕表就会出错

#16


但运行程序后,我看了out.mdb数据库,并没有temp表啊,程序运行后根本没有建Temp表.不知怎回事,请 yoki(小马哥)或各位再帮我看看代码那里出错了.谢谢

#17


以下是将文本文件导入ACESS数据库的例子,你可将程序稍更改一下,可以先用程序来建立一个ACESS数据库,然后再将文本数据截取后直接导入数据库。
Dim response, mystring, num, cardnum, banknum, carddate, magnum
Dim st As String

'打开打开对话框
On Error GoTo errdisplay
cd1.Flags = cdlOFNHideReadOnly
cd1.Filter = "dat files(*.dat)|*.dat|text files(*.txt)|*.txt|all files(*.*)|*.*"
cd1.FilterIndex = 1
cd1.ShowOpen

'删除数据库中原来的记录
Open cd1.FileName For Input As #1
If Data1.Recordset.RecordCount <> 0 Then
response = MsgBox("是否覆盖原有的数据?", vbYesNo + vbCritical + vbDefaultButton2, "警告!")
If response = vbYes Then
Data1.Recordset.MoveFirst
While Not Data1.Recordset.EOF
Data1.Recordset.Delete
Data1.Recordset.MoveNext
Wend
Else
Exit Sub
End If
End If

'将文本数据导入数据库
Do While Not EOF(1)
Line Input #1, st
num = Mid(st, 1, 6)
cardnum = Mid(st, 7, 23)
banknum = Mid(st, 30, 12)
carddate = Mid(st, 42, 5)
magnum = Trim(Mid(st, 75, 37))
If num <> 0 And cardnum <> 0 And banknum <> 0 _
And carddate <> 0 And magnum <> 0 Then
Data1.Recordset.AddNew
Data1.Recordset!编号 = num
Data1.Recordset!卡号 = cardnum
Data1.Recordset!行号 = banknum
Data1.Recordset!制卡日期 = carddate
Data1.Recordset!磁道 = magnum
Data1.Recordset.Update
Screen.MousePointer = vbHourglass
End If
Loop
Close 1
Screen.MousePointer = vbDefault

#18


out.mdb数据库我重新做了一个了.里面建一个表叫做roll.
但运行程序后,我看了out.mdb数据库,并没有temp表啊,程序运行后根本没有建Temp表.只有我自己建立的roll表,不知怎回事???请 yoki(小马哥)或各位再帮我看看代码那里出错了.谢谢

#19


请教大家啊,谢谢了.

#20


参考:
如何将一个TXT文件转化成Access格式数据库中的表
http://www.china-askpro.com/msg9/qa42.shtml

#1


http://expert.csdn.net/Expert/topic/2457/2457457.xml?temp=.4094049

http://expert.csdn.net/Expert/topic/2429/2429510.xml?temp=.6784021

#2


会读入文本文件内容,会写入ACCESS表,就成了。

#3


主要是按分段读入txt文本,然后给数组,再用数组给ACCESS写记录

#4


用个textbox或者richtextbox,与数据库中的指定表相连,然后用DATA控件的UPDATA属性啊
textbox或者richtextbox打开.TXT文件这里就不多说了,用个ComDialg就可以了

#5


yoki(小马哥) ( :
你好,上次问你的问题我已解决,上次的问题是将文本文件导入数据库,但那是程序自己创建数据库和一个表.
现在,我是想把.txt文件导入到现有的数据库,比如roll.mdb中的roll表中,而且是每次把.txt文件的内容增加到roll表中,即roll表的数据内容不断增加,而表名不变.
yoki(小马哥) 能否帮我修改一下上次的代码.不好意思,本人的水平比较菜.谢了.

#6


使用ODBC里数据源直接转换

#7


yoki(小马哥) ( :
你好,上次问你的问题我已解决,上次的问题是将文本文件导入数据库,但那是程序自己创建数据库和一个表.
现在,我是想把.txt文件导入到现有的数据库,比如roll.mdb中的roll表中,而且是每次把.txt文件的内容增加到roll表中,即roll表的数据内容不断增加,而表名不变.
yoki(小马哥) 能否帮我修改一下上次的代码.不好意思,本人的水平比较菜.谢了.

#8


up

#9


你可以先导到一个临时表中然后挑选符合纪录的插入到你最终的表中

#10


Call TxtToMdb("c:\","test.txt","c:\a.mdb","#TempTable")
cn.execute"insert into yourtable select * from #TempTable where......"
cn.execute "drop table #TempTable"

#11


Private Sub TxtToMdb(sTxtPath As String, sTxtFileName As String, sAccessFullFileName As String, sAccessTable As String)
'功能:将文本文件导入到Access中的表
'调用:Call TxtToMdb("c:\","zz.txt","c:\a.mdb","NewTempTable")
'结果:将c:\zz.txt导入到c:\a.mdb中的NewTempTable表中
    Dim db As DAO.Database
    Dim tbl As DAO.TableDef
    On Error Resume Next
    Set db = Workspaces(0).OpenDatabase("c:\out.mdb")    
    Set tbl = db.CreateTableDef("Temp")
    tbl.Connect = "Text;database=c:\"
    tbl.SourceTableName = "zz#txt"
    db.TableDefs.Append tbl
    db.TableDefs.Delete "NewTempTable"
     On Error GoTo err_exit     
     db.Execute "insert into roll select F2 from Temp"
    db.Close
    Set db = Nothing
    Exit Sub
err_exit:
    Set db = Nothing
    MsgBox Err.Description
End Sub
 yoki(小马哥):你好,我在工程里,工程里面只有一个form时,可以插入记录到roll中,但我重建一个工程,把原来工程中的form,挂接到新工程的一个菜单时,运行提示:
找不到可插入的ISAM
是怎么一回事啊,谢了.

#12


Private Sub TxtToMdb(sTxtPath As String, sTxtFileName As String, sAccessFullFileName As String, sAccessTable As String)
'功能:将文本文件导入到Access中的表
'调用:Call TxtToMdb("c:\","zz.txt","c:\a.mdb","NewTempTable")
'结果:将c:\zz.txt导入到c:\a.mdb中的NewTempTable表中
    Dim db As DAO.Database
    Dim tbl As DAO.TableDef
    On Error Resume Next
    Set db = Workspaces(0).OpenDatabase("c:\out.mdb")
    Set tbl = db.CreateTableDef("Temp")
    tbl.Connect = "Text;database=c:\"
    tbl.SourceTableName = "zz#txt"
    db.TableDefs.Append tbl
    db.TableDefs.Delete "NewTempTable"
    On Error GoTo err_exit
    db.Execute "insert into roll select F2 from Temp"
    db.Close
    Set db = Nothing
    Exit Sub
err_exit:
    Set db = Nothing
    MsgBox Err.Description
End Sub

找不到可插入的ISAM,那是因为.我用的数据库是另一个程序运行后生产的临时表"Temp".
我把运行正常的程序代码拷贝到另一程序中,但运行出现没法建立临时表"temp" 在进行插入记录到roll时,提示:"mirosoft Jet 数据引擎找不到表"Temp""
上面的代码不是已经建表了吗?不知为什么????
请教了.谢谢

#13


OK

#14


我来晚了!UP

#15


需判断temp是否已经存在,若存在的话再建立一个temp的昕表就会出错

#16


但运行程序后,我看了out.mdb数据库,并没有temp表啊,程序运行后根本没有建Temp表.不知怎回事,请 yoki(小马哥)或各位再帮我看看代码那里出错了.谢谢

#17


以下是将文本文件导入ACESS数据库的例子,你可将程序稍更改一下,可以先用程序来建立一个ACESS数据库,然后再将文本数据截取后直接导入数据库。
Dim response, mystring, num, cardnum, banknum, carddate, magnum
Dim st As String

'打开打开对话框
On Error GoTo errdisplay
cd1.Flags = cdlOFNHideReadOnly
cd1.Filter = "dat files(*.dat)|*.dat|text files(*.txt)|*.txt|all files(*.*)|*.*"
cd1.FilterIndex = 1
cd1.ShowOpen

'删除数据库中原来的记录
Open cd1.FileName For Input As #1
If Data1.Recordset.RecordCount <> 0 Then
response = MsgBox("是否覆盖原有的数据?", vbYesNo + vbCritical + vbDefaultButton2, "警告!")
If response = vbYes Then
Data1.Recordset.MoveFirst
While Not Data1.Recordset.EOF
Data1.Recordset.Delete
Data1.Recordset.MoveNext
Wend
Else
Exit Sub
End If
End If

'将文本数据导入数据库
Do While Not EOF(1)
Line Input #1, st
num = Mid(st, 1, 6)
cardnum = Mid(st, 7, 23)
banknum = Mid(st, 30, 12)
carddate = Mid(st, 42, 5)
magnum = Trim(Mid(st, 75, 37))
If num <> 0 And cardnum <> 0 And banknum <> 0 _
And carddate <> 0 And magnum <> 0 Then
Data1.Recordset.AddNew
Data1.Recordset!编号 = num
Data1.Recordset!卡号 = cardnum
Data1.Recordset!行号 = banknum
Data1.Recordset!制卡日期 = carddate
Data1.Recordset!磁道 = magnum
Data1.Recordset.Update
Screen.MousePointer = vbHourglass
End If
Loop
Close 1
Screen.MousePointer = vbDefault

#18


out.mdb数据库我重新做了一个了.里面建一个表叫做roll.
但运行程序后,我看了out.mdb数据库,并没有temp表啊,程序运行后根本没有建Temp表.只有我自己建立的roll表,不知怎回事???请 yoki(小马哥)或各位再帮我看看代码那里出错了.谢谢

#19


请教大家啊,谢谢了.

#20


参考:
如何将一个TXT文件转化成Access格式数据库中的表
http://www.china-askpro.com/msg9/qa42.shtml

#21