论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

word文档分类管理插件(论文+程序)

5.3.2    添加Word工具栏

(1)删除系统缺省添加的代码。

paper51.com

系统缺省添加的代码是针对VB插件的,而不是Word或其它应用程序插件的。因此删除它们。并在程序顶部添加以下代码:

paper51.com

OptionExplicit

copyright paper51.com

PrivatemAppWord As Word.Application              ‘定义word对象变量

内容来自www.paper51.com

PrivatemBar As Office.CommandBar                 ‘定义工具栏对象变量 copyright paper51.com

            ‘定义工具栏上按钮对象变量和事件响响应程序

内容来自www.paper51.com

PrivateWithEvents mBtn1 As Office.CommandBarButton 内容来自论文无忧网 www.paper51.com

(2)添加AddinInstance对象的OnConnection方法。

内容来自www.paper51.com

AddinInstance就代表了该插件本身。 内容来自论文无忧网 www.paper51.com

在其中添加代码,以便在Word中添加工具栏和按键,代码:

内容来自www.paper51.com

PrivateSub AddinInstance_OnConnection (ByVal Application As Object, ByVal ConnectModeAs AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom ()As Variant)

内容来自www.paper51.com

   Set mAppWord = Application 内容来自论文无忧网 www.paper51.com

   Set mBar =mAppWord.CommandBars.Add("word manager", , , True)

内容来自www.paper51.com

   Set mBtn1 =mBar.Controls.Add(Office.MsoControlType.msoControlButton) http://www.paper51.com

SetButtonStyle(mBtn1,203,"Button1","Testtoaddabuttoninword",msoButtonIconAndCaption)

copyright paper51.com

End Sub http://www.paper51.com

按键对象定义为WithEvents,这样可以添加它的事件处理代码:

http://www.paper51.com

Private Sub mBtn1_Click (ByValCtrl as Office.CommandBarButton, CancelDefault as Boolean)

内容来自论文无忧网 www.paper51.com

   Dim doc As Word.Document    '操作word对象 copyright paper51.com

   Form1.Show                  '取Word的当前活动文档,显示Form1窗体 copyright paper51.com

End Sub 内容来自www.paper51.com

5.3.3    连接数据库

paper51.com

在VisualBasic6.0中,可使用三种数据访问接口,即ActiveX数据对象(ADO)、远程数据对象(RDO)和数据访问对象(DAO)。数据访问接口是一个对象模型,代表了访问数据的多种方法。ADO又称OLE自动化接口,采用了类似DAO和RDO的约定和特性,从而使其更易手于使用,它是由Microsoft推出的最新、功能最强,且容易使用的数据访问实例(OLE DB)的应用程序接口。OLE DB可以极高的性能访问数据源,其中包括关联和非关联数据库、电子邮件和文件系统、文本和图形、定制商业对象等。

paper51.com

其中ADO是最新的,它最简单也最灵活。因此,此系统使用ADO作为数据访问接口。 paper51.com

数据库控件使用:ADOData控件使用MicrosoftActiveX Data对象(ADO)快速创建数据绑定控件和数据提供者之间的连接。能够执行数据绑定的ActiveX控件包括DataGrid、DataCombo、Chart和DataList。

http://www.paper51.com

DataCombo和DataList控件都有五种特殊的属性:

内容来自论文无忧网 www.paper51.com

1.               DataSource:DataComno和DataList控件被绑定的ADODC控件的名称 内容来自论文无忧网 www.paper51.com

2.               DataField:由DataSource属性所指定的记录集中的字段名称。

copyright paper51.com

3.               RowSource:将要用于填充列表的ADODC的名称。

http://www.paper51.com

4.               BoundColumn:由RowSource属性指定的记录集中的字段名称。该字段必须与用来更新列表的DataField的类型相同。 内容来自www.paper51.com

5.               ListField:用来填充列表的由RowSource指定的记录集的字段名。

copyright paper51.com

由于ADO Data控件为ActiveX控件,因此,要使用它,必须首先加载ADODC控件到工具箱中。选择“工程”菜单中的“引用”,选上Microsoft ActiveX Data Objects 2.5 Library。此时在部件里选择Microsoft ADO Data Control 6.0(OLEDB)控件。在使用前请先设置控件的数据库关联属性:

paper51.com

1.               ConnectionString。连接字符串,可包含所有制作连接所需要的设置。在“通用”里“使用连接字符串”,点击“生成”,选择OLE DB提供程序里“Microsoft Jet 4.0 OLE DB Provider”,在连接里找到数据库文件(这里是.mdb文件),测试连接成功后,即可自动生成连接字符串。这种方法虽然方便且不易出错,但也有它的弊端。 内容来自论文无忧网 www.paper51.com

2.               UserName。如果数据库是用口令保护的,此参数必不可少。类似Provider属性,它可通过ConnectionString设置。 copyright paper51.com

3.               Password。访问保护数据库时需要此参数。它也可通过ConnectionString设置。 http://www.paper51.com

4.               RecordSource。通常为一条语句,它决定了如何从数据库中检索数据。也可在“属性页”的“记录源”写入:select * from table1 order by sort_id(这里只对ADODC1)。 copyright paper51.com

5.               CommandType。如果源为SQL语句、表名、存储过程或未知类型,它用于指定数据提供者。 copyright paper51.com

在Form1窗体代码顶部加入以下代码: 内容来自论文无忧网 www.paper51.com

Dim cnn As NewADODB.Connection     ‘定义对象引用

http://www.paper51.com

Dim cmd As New ADODB.Command

paper51.com

Dim rs As NewADODB.Recordset

copyright paper51.com

此时可进行连接数据库,在Form1的Form_Load子过程添加以下代码:

内容来自www.paper51.com

cnn.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & App. Path& "\db1.mdb;Persist Security Info=False" http://www.paper51.com

cnn.open                       ‘打开连接,并定义对象变量 http://www.paper51.com

Set cmd.ActiveConnection =cnn

内容来自论文无忧网 www.paper51.com

Set rs.ActiveConnection =cnn

http://www.paper51.com

这里用到APP对象。App对象有两种重要属性:(1)App.Path,它在VB编程状态下返回.MAK文件所在目录;在以.EXE文件运行时,则返回你的.EXE文件所在目录。(2)App.EXE Name它返回程序名。这样,只要将.mdb文件放到工程的目录下,而无论工程放在什么位置,都能访问工程目录下的数据库文件。

paper51.com

5.4 功能模块设计和实现 内容来自www.paper51.com

软件分别用了三个能够执行数据绑定的ActiveX控件来表示和显示这三层:DataCombo显示所有目录,DataList用文件夹填充,文档部分由DataGrid显示。三个ActiveX控件分别绑定ADODC1,ADODC2,ADODC3,并在Form1里显示(visible为true,但所有ADODC都不显示):

paper51.com

内容来自www.paper51.com

图10程序主界面 paper51.com

设置DataCombo属性绑定ADODC1:DataSource选择ADODC1,RowSource选择ADODC1,BoundColumn选择sort_id,DataField选择sort,ListField选择sort,Visable设为True。设置DataList属性:DataSource选择ADODC2,RowSource选择ADODC2,BoundColumn选择fold_id,DataField选择fold,ListField选择fold,Visable设为True。设置DataGrid属性:DataSource选择ADODC3。

paper51.com

在DataCombo的Click事件里添加以下代码: 内容来自论文无忧网 www.paper51.com

'读取所有的fold,当ref_table1_id为当前输出值

内容来自www.paper51.com

strQuery = "select *from table2 where ref_table1_id =" + DataCombo1.BoundText http://www.paper51.com

With Adodc2                   '设置Adodc2的数据源,并刷新显示 http://www.paper51.com

.RecordSource = strQuery 内容来自www.paper51.com

.Refresh

paper51.com

End With http://www.paper51.com

实现的功能:当选定DataCombo某个值(目录)时,将这个值对应的fold查询出来,并把它们刷新显示到DataList里。 copyright paper51.com

同理在DataList的Click事件里添加以下代码:

http://www.paper51.com

Dim strquery1 As String        '声明变量,保存SQL语句

http://www.paper51.com

                 '读取所有filename,filepath,当ref_table2_id为当前输出值

http://www.paper51.com

strquery1 = "selectfilename,filepath from table3 where ref_table2_id=" + DataList1.BoundText 内容来自www.paper51.com

With Adodc3                '设置Adodc3的数据源,并刷新显示 内容来自www.paper51.com

.RecordSource = strquery1

内容来自www.paper51.com

.Refresh 内容来自论文无忧网 www.paper51.com

End With          '当返回至Datalist控件的数据为空时,提示用户新建记录

paper51.com

Else: MsgBox "无记录,请单击'新建'开始"

copyright paper51.com

End If http://www.paper51.com

With DataGrid1

内容来自www.paper51.com

.ClearFields

copyright paper51.com

.Rebind

内容来自www.paper51.com

实现功能:用户选择DataList某个值时,将这个值对应的filename、filepath查询出来,并把它们刷新显示到DataGrid里。至此已完成自动刷新功能。 内容来自www.paper51.com

在Form1里添加六个Button分别是:新建、打开、编辑、删除、添加于和退出,用它们对应不同的功能实现Word文档的管理。其中除了打开和退出按钮外,另外的按钮都连接到新的窗体。

copyright paper51.com

5.4.1      新建功能 内容来自www.paper51.com

图11 新建功能界面

内容来自www.paper51.com

新建功能在Form2界面上操作。 内容来自论文无忧网 www.paper51.com

在Form_Load事件里添加以下代码:

内容来自论文无忧网 www.paper51.com

cnn2.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &"\db1.mdb;Persist Security Info=False" 内容来自www.paper51.com

Adodc4.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &"\db1.mdb;Persist Security Info=False" http://www.paper51.com

Adodc4.RecordSource ="select * from table1 order by sort_id"

paper51.com

Adodc4.Refresh

copyright paper51.com

cnn2.open                                      '打开连接

内容来自论文无忧网 www.paper51.com

Set rs2.ActiveConnection =cnn2

内容来自论文无忧网 www.paper51.com

Set cmd2.ActiveConnection =cnn2

http://www.paper51.com

连接数据库,并打开连接,定义对象变量。由于可对目录和文件夹新建,窗体上设置了两个Option控件,分别表示新建目录和文件夹。对于目录,直接新建即可;但对新建文件夹,还要提供文件夹隶属的目录,因此设置了一个DataCombo来显示所有目录,供用户选择。这个DataCombo只有当用户选择新建文件夹(Option2有效)时才是可见的,否则不可见。在Form2窗体的“确定”按钮里添加以下代码: 内容来自www.paper51.com

If Option1.Value = TrueThen                     '当选定新建sort时

内容来自www.paper51.com

   If Text1.Text = ""Then                       '如果名称为空,提示输入 内容来自www.paper51.com

   MsgBox "请输入目录名称" copyright paper51.com

   End If                                     '执行插入sort表语句

内容来自www.paper51.com

   cmd2.CommandText = "insertinto table1 (sort) values (" + "'" + Text1.Text + "'"+ ") " copyright paper51.com

   cmd2.Execute paper51.com

  ElseIf Option2.Value = True Then               '当选定新建fold时 http://www.paper51.com

    If Text1.Text = ""Then                      '如果属于为空提示输入 内容来自www.paper51.com

    MsgBox "请输入目录名称"

copyright paper51.com

    End If                                    '执行插入fold表语句

内容来自www.paper51.com

    For i = 0 To Form1.DataList1.VisibleCount- 1    '判断重复输入,提示信息

copyright paper51.com

        If Form1.DataList1.VisibleItems(i) = Text1.Text Then

paper51.com

       MsgBox "重名,请再次输入"

paper51.com

        ExitSub http://www.paper51.com

        EndIf 内容来自论文无忧网 www.paper51.com

    Next i

内容来自www.paper51.com

    cmd2.CommandText ="insert into table2 (ref_table1_id,fold) values (" + "'" +DataCombo2.BoundText + "'" + "," + "'" +Text1.Text + "'" + ")"

内容来自论文无忧网 www.paper51.com

    cmd2.Execute paper51.com

  End If

http://www.paper51.com

  Call Form1.Datarefresh                               '刷新数据显示

内容来自www.paper51.com

  cnn2.Close                                        '关闭数据库连接2 http://www.paper51.com

  Unload Me

内容来自论文无忧网 www.paper51.com

通过cmd对象完成对记录(目录和文件夹)的新建。

copyright paper51.com

------分隔线----------------------------
联系方式