当前位置:文档之家› VBAccess系统中实现Excel和Access数据库相互导入

VBAccess系统中实现Excel和Access数据库相互导入

MsgBox。已成功导入。&rst.RecordCount&。条记录!。, vblnformation,。温馨提示。 cmd2.Caption=。关闭。 Else faccess.Caption=‘数据正在导入,请稍候…..。 End If LOOO Else MsgBox。Excel表数据字段数大于Access表数据字段数!。, vbExclamation,’温馨提示。 End If rs.Close rst.Close Set rs=Nothing Set rst=Nothing cmdl.Enabled=False End Sub
adOpenDynamic,adLockOptimistic’打开记录集 rs.MoveLast i=rst.RecordCount Do While Not rst.EOF On Error Resume Next rs.AddNew For s=0 To fnlcount一1 rs.Fields(s)=rst.Fields(s) ’把ExceI的记录写入Access表中 Next s rS.MoveNext rst.MoveNext i=i一1 If i=0 Then faccess.Caption=。数据导入完毕!。 rs.Update
EndWith
sr.Close Set sr=Nothing cmdl.Enabled=True End Sub
■■******量*■量***,W-******■**鲁*****■******蕾*****■●警*
Private Sub imgl—Click() Dim rs As New ADODB.Recordset
(2)打开Access文件窗体,如图3所示。
图3
1)该窗体包括的主要控件有:文本控件(textl)用于显 示所选文件路径;图像控件(im92)用于打开对话框;对话框 控件(edl2)、组合框(coral)用于显示表的名称; 网格控 件(ms91)用于显示Access数据库中表的结构信息(字段名 称、字段大小、字段类型);命令按钮(cmdl)用于执行“导 入”命令。
End If lf conn.State=adStateOpen Then’判断conn连接的状态 conn.Close coml.Clear End If CalI mdbcon Set rs=conn.OpenSchema(adSchemaTables)
’把数据库的结构赋给了记录集rs Do Until rs.EOF If Left(rs!table—name,4)<>。MSys。Then cornl.Addltem rs J table—name 7给comb01控件赋值 End If rS.MoveNext
参考文献 【1】肖奕.ASP.NET 2.0数据库入门经典.第4版,北京:清华
大学出版社,2006. 【2】崔良海.ASP.NET 2.0实用教程(C#版).北京:人民邮
电出版社.2008. (收稿日期:2009-12-26)
39
万方数据
ห้องสมุดไป่ตู้
,。。‘‘。。‘‘。。。。。。。。。‘’。。。。。。。。‘。‘‘’。。。。‘。‘。‘‘’。。。。‘’。。。。。。。’’。。。‘。。‘。。
EndWith
End Sub
3 主窗体
主要包括两个单选按钮(optionI、option2)如图1所示。
图1
主要代码如下: Private Sub Optionl一Click() fexcel.Show7显示导入主窗体 Me.Hide End Sub Private Sub Option2一Click() outform.Show’显示导出主窗体 Me.Hide End Sub
End Sub
*●*●*********"IP"If●*■*■●,********●**■*量量●■●●●****菁
Private Sub cornl_Click(1’组合框的单击事件 Dim As Integer Set d91.DataSource=Nothing d91.Refresh Label3.Visible=True Dim oRS As New ADODB.Recordset oRS.Open。Select+from r&coml.Text&。】-, cn,adOpenStatic,adLockOptimistic ’打开组合框所对应表的记录集 oRS.Update i=oRS.RecordCount fnlcount=oRS.Fields.Count Label3.Caption=。共有。&i&“条记录一显示该表的记录数 Labet4.Caption=。共有。&oRS.Fields.Count&’个字段。 ’显示该表的字段数 Set d91.DataSource=oRS’给datagrid控件赋值 d91.Refresh cmdl,Enabled=True End Sub
匿蔓圄 IIII R·.DmB^SE…………一………………………………………………………………………………..…………”-.
VB+Access系统中实现Excel和Access 数据库相 互导入
畅育超
摘 要:以“学籍管理数据库”为例,介绍VB+Access系统中利用ADO记录集实现Excel和 Access数据库相互导入的程序设计方法。 关键词:数据库;VB+Access;ADO;VB控制Excel
Public fnlcount AS Integer’保存ExceI数据库表的字段数
Public conn As New ADODB.Connection 7声明一个mdb数据库的连接 Public ca As New ADODB.Connection ’声明一个xls数据库的连接 Public Sub mdbcon()’连接Access数据库 conn.0pen。Provider=Microsoft.Jet.OLEDB.4.0: Data Source=。&fn&。;Persist Security lnfo=False。 conn.CursorLocation=adUseClient7声明游标类型 End Sub Public Sub xlscon()7连接Excel Set cn=New ADODB.Connection
实用第一./智慧密集
....................................................................—,
4导入窗体
(1)打开Excel文件窗体,如图2所示。
图2
1)该窗体包括的主要控件有:文本控件(textl)用于显 示所选文件路径;图像控件(im92)用于打开对话框;对话框 控件(cdl2)、组合框(coml)用于显示表的名称;网格控件 (d91)用于显示Excel表中的记录;命令按钮(cmdl)用于调 用下一个窗体。
·S£·SE·S芒·S芒.s芒心£·S芒·蛊毫-S£d芒-SE·昱曼-S!·毒£·S£·S蔓·S£·S芒dE·毫£d要●S£砖£d£·童芒.毫芒·皇芒.s芒d曼-蛊E·S芒.毫£.s!·毒要.{【芒.s曼砖芒一£心芒.!!E心£-.s纵E.毫£础芒d芒
现远程存取Access数据库的功能.对程序设计能起到积极的 作用。
.Rows=sr.Fields.Count+1 For P=1 To sr.Fields.Count
.TextMatrix(p.0)=P .TextMatrix(p,1)=sr.Fields(p一1).Name .TextMatrix(p,2)=sr.Fields(p一1).Type .TextMatrix(p。3)=sr.Fields(p一1).DefinedSize Next P
40
万方数据
’匿蔓围
---···.DJ帆BASE--··-···----·-··---··-·--·一·---··-···-···-···---·---····--··---·一-一-----·一·--··-·----·--·-一-----··---·-··--···-·-------··
With msgl’给msgl控件赋值
2公共变量及模块
首先要引用“Microsoft ActiveX Data Objects2.6 Library”和 “Microsoft Excel l 1.O 0bjects
Library 7系统库 Public fn As String’保存Access文件名 Public fn l As String’保存Excel文件名 Public fncount As Jnteger’保存Access数据库表的字段教
Loop rs.Close Set rs=Nothing End Sub
●***●■■*并量■*●●****■●●●*****■*●*■●■■**■蕾●鲁善善*}*瞢量
Private Sub cmdl—Click()’导人数据 Dim As Integer Dim s As Integer Dim rst As New ADODB.Recordset Dim rs As New ADODB.Recordset If fnl count<=fncount Then’判断两表的字段数 rst.Open。Select’from【-&fexcel.coml.Text&’1I,cn, adOpenDynamic’打开记录集 rs.Open。select’from。&coml.Text&一,conn,
2)主要代码 Private Sub coml—Click() Dim PAs Integer SF.Open corn 1.Text,coon,adOpenKeyset,adLockOptimistic Label3.Visible=True Label3.Caption=‘共有。&sr.Fields.Count&‘个字段。 fncount=sr.Fields.Count
2)主要代码: Private Sub im92一Click(J Label3.Visible=False corn 1.Clear Dim rsxls As New ADODB,Recordset cdl 2.Filter=。Excel文件(*.xls)l’.xlsl所有文件《。.’)I*.”
相关主题