说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB如何将文本文件转换为ACCESS数据库

HTML文档下载 WORD文档下载 PDF文档下载
VB如何将文本文件转换为ACCESS数据库

本文向你介绍如何不用借助Access,直接在程序中创建一个数据库,然后从标准的
ASCII文本文件中读取数据到数据库中。原文是微软知识库中的一篇文章,但当时
是针对VB3写的,所以其中的代码有点过时。例如现在DAO中已没有Table对象,代
之以Recordset对象。下面是修改后的代码,在VB6中调试通过。

首先在工程中添加对Microsoft DAO 3.51 Library引用。


在窗体中添加三个命令按钮和两个MSFlexGrid.


按照下表设置和控件的属性:
控件 属性 值
--------------------------------------------------------------------
Command1 Caption "建立文本文件并显示在网格中"
Command2 Caption "传输入数据并新建一个数据库"
Command3 Caption "显示新数据库中的数据"
Grid1 Cols 5
Grid1 Rows 35
Grid2 Cols 5
Grid2 Rows 35
将下面的代码添加到窗体的声明部分
Dim nums(30) As Long
Dim names(30) As String * 20
Dim addresses(30) As String * 25
Dim ss_nums(30) As String * 12
Const DB_LONG = 4
Const DB_TEXT = 10
Const DB_LANG_GENERAL = ";LANGID=0x0809;CP=1252;COUNTRY=0"

将下面的代码添加到窗体的Load事件中
Sub Form_Load ()
Show
grid1.ColWidth(1) = 1000 'For Emp ID
grid1.ColWidth(2) = 2000 'For Emp Name
grid1.ColWidth(3) = 3000 'For Emp Addr
grid1.ColWidth(4) = 2000 'For Emp SSN
grid1.Col = 1
grid1.Row = 0
grid1.Text = "Emp ID" 'Header for Emp ID from text file
grid1.Col = 2
grid1.Row = 0
grid1.Text = "Emp Name" 'Header for Emp Name from text file
grid1.Col = 3
grid1.Row = 0
grid1.Text = "Emp Addr" 'Header for Emp Addr from text file
grid1.Col = 4
grid1.Row = 0
grid1.Text = "Emp SSN" 'Header for Emp SSN from text file

grid2.ColWidth(1) = 1000 'For Emp ID
grid2.ColWidth(2) = 2000 'For Emp Name
grid2.ColWidth(3) = 3000 'For Emp Addr
grid2.ColWidth(4) = 2000 'For Emp SSN
grid2.Col = 1
grid2.Row = 0
grid2.Text = "Employee ID" 'Header for Emp ID from DB
grid2.Col = 2
grid2.Row = 0
grid2.Text = "Employee Name" 'Header for Emp Name from DB
grid2.Col = 3
grid2.Row = 0
grid2.Text = "Employee Addr" 'Header for Emp ID from DB
grid2.Col = 4
grid2.Row = 0
grid2.Text = "Employee SSN" 'Header for Emp Name from DB
End Sub
在Command1_Click事件中加入下面的代码
Sub Command1_Click ()
For i% = 1 To 30
nums(i%) = i%
names(i%) = "John Doe # " + Str$(i%)
addresses(i%) = Str$(i%) + " Mocking Bird Lane"
If i% < 9 Then
'* Enter the following four lines as one, single line:
ss_nums(i%) = Trim$(Str$(i%) + Trim$(Str$(i%))
+ Trim$(Str$(i%)) + "-" + Trim$(Str$(i% + 1))
+ Trim$(Str$(i% + 1)) + "-" + Trim$(Str$(i%))
+ Trim$(Str$(i%)) + Trim$(Str$(i%)) + Trim$(Str$(i%)))
Else
'* Enter the following two lines as one, single line:
ss_nums(i%) = Trim$(Trim$(Str$(999)) + "-" + Trim$(Str$(88))
+ "-" + Trim$(Str$(7777)))
End If
Next i%
Open "Testdata.DAT" For Output As #1
For j% = 1 To 30
Print #1, nums(j%)
Print #1, names(j%)
Print #1, addresses(j%)
Print #1, ss_nums(j%)
Next j%
Close #1
For i% = 1 To 30 'Display results from text file
grid1.Col = 1
grid1.Row = i%
grid1.Text = nums(i%) 'Load Emp IDs
grid1.Col = 2
grid1.Row = i%
grid1.Text = names(i%) 'Load Emp Names
grid1.Col = 3
grid1.Row = i%
grid1.Text = addresses(i%) 'Load Emp Addrs
grid1.Col = 4
grid1.Row = i%
grid1.Text = ss_nums(i%) 'Load Emp SSNs
Next i%
End Sub

在Command2_Click事件中加入下面的代码
Sub Command2_Click ()
Dim newdb As Database
Dim newtb As Table
Dim newtd As New tabledef
Dim newidx As New Index
Dim field1 As New field 'For Emp nums
Dim field2 As New field 'For Emp names
Dim field3 As New field 'For Emp addresses
Dim field4 As New field 'For Emp ss_nums
screen.MousePointer = 11 'Display the time to build
Set newdb = CreateDatabase("NEWDB.MDB", DB_LANG_GENERAL)
newtd.Name = "Emp_Table" '* New table name
field1.Name = "Emp_ID" '* Holds Employee ID nums()
field1.Type = DB_LONG
newtd.Fields.Append field1
field2.Name = "Emp_Name" '* Holds Emp names()
field2.Type = DB_TEXT
field2.Size = 20
newtd.Fields.Append field2
field3.Name = "Emp_Addr" '* Holds Employee addr()
field3.Type = DB_TEXT
field3.Size = 25
newtd.Fields.Append field3
field4.Name = "Emp_SSN" '* Holds emp ss_nums()
field4.Type = DB_TEXT
field4.Size = 12
newtd.Fields.Append field4
newidx.Name = "Emp_ID_IDX" '* You have to have an index
newidx.Fields = "Emp_ID"
newidx.Primary = True
newtd.Indexes.Append newidx
newdb.TableDefs.Append newtd
Set newtb = newdb.OpenTable("Emp_Table")
Open "Testdata.dat" For Input As #1
BeginTrans
Do While Not (EOF(1))
newtb.AddNew
Line Input #1, tmp1$ 'Retrieve empl_id
Line Input #1, tmp2$ 'Retrieve empl_name
Line Input #1, tmp3$ 'Re
John Carmack大神亲操刀,为Oculus开发Netflix应用 React Native实战(二):Android的打包 独立游戏的成功秘诀:好设计才是王道 Swift 2.1的新变化 Apple TV实战:用TVML开发第一款tvOS应用 【SDCC讲师专访】阿里王晶昱:云时代的分布式数据库DRDS 硬件研发、嵌入式技术演进:MDCC IoT峰会日程揭晓 专访百度知道iOS团队负责人孙源:代码强迫症的死实践派 TIOBE 2015年10月编程语言排行榜:Ruby取代Objective-C进前十 【SDCC讲师专访】PingCAP联合创始人兼CEO刘奇:好的产品应开源,不闭门造车 【深入浅出Koa】常用工具分享 帮你降低编程难度 Relay: 全新的React数据获取框架 探索游戏开发面临的技术挑战——MDCC 2015游戏开发专场议程曝光 【SDCC讲师专访】易开发创始人潘俊勇:这些年我遇到的那些坑 【CTO讲堂】OpenStack行业实践和发展趋势探讨 万物互联,移动为先:MDCC 2015移动开发者大会盛大开幕! 【MDCC 2015】微软开发体验与平台事业合作部大中华区DX部门总经理Srikanth Raju:物联之上云+端 英雄会晚宴,Top开发者共聚“华山之巅” 【MDCC 2015】产品与设计专场(上):百度研究院、印象笔记等专家齐聚,以实例探讨如何打造好产品 【MDCC 2015】产品与设计专场(下):网易云音乐、在行、三节课、去哪儿网、野兽骑行大咖的产品之路 友盟:把数据用活 让开发者享受大数据红利 友盟:用活大数据 让精细化运营为移动开发者服务 携手世纪互联 IBM Bluemix云平台落地中国 【MDCC 2015】IoT峰会—硬件开发与技术专场(下):专家齐聚,共同打造联网新时代 【MDCC 2015】虚拟现实专场(下):虚拟现实的“困”与“竞” 【CTO讲堂】面对世界竞争对手,如何拿到Google PDF开源项目PDFium? 提升网站性能开发的10个技巧 SDCC 2015:顶尖技术精英云集 大会日程及首批讲师议题公布 《近匠》专访猿团创始人CEO谢恩明:梦想、未来、改变 《近匠》专访小熊尼奥:从软硬结合到IP合作,AR产品的机遇 W3C启动Web支付标准工作,推进在线结算流程 Help! 请问回掉函数市什么意思? 关于多行文本框的问题 MSFlexGrid 如何绑定数据源 请教程序员的硬件试题 要求把系统管理和软件操作系统使用合并。 dialog的显示问题 Sql Server 2000下,如何定时执行一条SQL语句 刚写的Asp代码变成了乱码,我该怎么办? 高分求助 sql 查询 D3D全屏状态下如何使用系统的中文输入法? 请问通过JDBC-ODBC桥,读入中文字段乱码的问题 急,在线等待!!! 如何调用保存对话框? Together for VS.NET 两个网关的问题!在线等,结贴快! 数据库中表的问题(100分) "#program once"是什么意思? 关于JTable的问题 局部钩子能影响其它软件???? SQL Server数据库中字段取中文名好,还是取英文名好? 怎么查询一个表,当用户新增一个记录时 如何防止listCtrl的列被拖动? 我的sony记忆棒,在相机可以读,可是不能在电脑读取,请帮忙! 安装.net的菜鸟问题,帮忙```````急```` 请Skt32(荒城之月)和gzshd(郁闷)大侠进来拿分! 有汉字输入的字符串,要限定其长度不超过100个字符,用正则表达式如何实现? 0x69514818指令引用的“0x14084268”内存错误 大家觉得以下哪一种 C语言 开发工具比较好?谢谢。 有关利用ms中的函数scardconnect()读手机sim卡的问题(很急!!) 从word 表格里面导入文本到Access 文件中没了回车换行,怎么解决? 如何将非主窗体放到任务栏里!!(在线等待) 打印RichTextBox中的文本 小弟长角了,散分! 装了sp4结果系统老是重启 急, 插入数据的时候怎么解决主键的问题?? 用C#做一個項目,應怎樣去規划? 一个简单问题!!! 上海的威迅,有人听说过吗??如何??? 2000提示:在系统启动时至少有一个程序或驱动程序发生错误,怎么解决 针对接口编程,而不是针对实现编程 请教:自定义查询 各位兄弟,帮帮手呀. 一时想不明白,请教一下。。。 500分求解答!关于数据库的发布!在线等候!!!! 我不会制作mschart.ocx文件,看过一些文章,介绍的太笼统,谁能有详细的制作步骤,或者告诉我哪里有mschart.cab文件下载最好了,谢谢 高分紧急求救(教)! 已知文件名,如何知道它是被哪个程序/进程打开的,并关闭相应的程序或进程? 简单:函数的参数列表问题(c) 在CDialogBar类的对象上按放一个按钮控件,运行时为什么该按钮控件是灰色的? 泰拉瑞亚 恶魔金属在哪?目前采到的最高级的就是金矿石,一直不能做更高级的工具... 设计对照实验,探究温度或光线对家蚕卵孵化率的影响,并提出你的问题与假设. 探究温度或光线对家蚕卵孵化率的影响应提什么问题或假设 家蚕能产多少枚卵 家蚕的卵色由什么构成 英语翻译主要演员的名字怎么拼?像斯内普和邓不利多?魂器怎么说?食死徒? How To Solve It:x·√(15^2-x^2) 20ptsHow To Solve It:x·√(15^2-x^2)x·√(15^2-x^2)=108 跪求新概念英语全能王1.7的注册码 机器码是840BO05OLC95GA2J THE NIGHT PEOPLE AND OTHER STORIES FIVE STAR MYSTERY SERIES怎么样 Do you often help me to solve mathematical problems 什么意思?在线等速度 how to solve 16^X+4^X-20=0 澳大利亚一17岁男生步行赴学校途中遭美国商务部对中国输美味精发起“双反”澳学生流行靠吃“聪明药”提高成绩引发俄外交官被指在美国招募间谍 美联邦调美国拟投资82亿美元治水 有望以此刺俄称叙利亚军事对峙在加剧 系因种族教日本:中国舰队穿过冲绳本岛与宫古岛间墨西哥糖果厂爆炸致1人死40人伤 仍三名驻阿富汗英军官涉嫌私刑处决塔利班日议员质疑安倍 称应给首相出席国会次逾2.8万人白宫网站请愿 “杀光中国青岛平度涉嫌村主任杜群某曾承诺绝不卖以转作风提升执政骨干能力 推动国家治21种情况下千万不能喝茶水用好批评与自我批评 让批评有点“辣味宁国市市场监管局多形式组织医疗器械安昆明机关食堂对老百姓开放 一荤两素6中信银行独家开通英国签证网上付费服务北京警方处置一起持刀伤人案把领导带头贯穿始终 充分发挥领导干部福建农发行积极落实挂钩帮扶工作太平人寿及时理赔罹患重疾客户40万余幽冥君殇大封印之还道春天的那些花儿亚里斯传奇羽压群雄圣魂噬天读懂了你的人伤了我的心新造物者驾仙驭魔重生宇智波之四忍传说魔星降世闯天下兰阳博物馆旅游清碧溪旅游李自成行宫旅游万佛楼旅游乌兰夫纪念馆旅游山东博物馆旅游淄博市博物馆旅游安吉仙龙峡漂流旅游安吉竹博园旅游照母山森林公园旅游慧济禅寺旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘