• 首页>
  • 软件教程>
  • 一个基于ACCESS的复杂检索系统的功能实现图解教程及关键代码

一个基于ACCESS的复杂检索系统的功能实现图解教程及关键代码

2024-06-22 11:46:32阅读量:35 字体:

最近在做一个基于ACCESS的检索系统,数据量不是很大,但数据检索窗体比较复杂,如下图(软件界面的文字部分做了隐藏处理),左侧是一个控件树,上方为检索的条件设置,第一个字段为检索值,第二个字段为是用户输入的检索值,第三个为检索逻辑,现把主要的技术难点记录一下:

 


(一)、学科树和检索条件的结合查询

ACCESS提供一个叫“Treeview”的控件,可以制作学科树,单击学科树的某个叶子节点,可以访问相应的学科数据。但用户又要求,检索后,要在不同学科下浏览检索结果,这就要求,单击学科树时,也要同时触发检索。

具体的实现方法为:

Treeview的NodeClick事件,定义一个SQL变量,用户获取子节点的信息;同时,对进行条件判断,判断用户是否输入检索条件,如用户未输入检索条件,则直接把这个SQL变量赋给查询结果窗体;如用户输入了检索条件,则把用户的输入转化为SQL语句,并用and条件和这个SQL连接,这样就实现了学科树检索和用户条件检索的结合。

一个基于ACCESS的复杂检索系统的功能实现图解教程及关键代码
一个基于ACCESS的复杂检索系统的功能实现图解教程及关键代码1

一个基于ACCESS的复杂检索系统的功能实现图解教程及关键代码2
 

(二)、多字段检索和全文检索

用户要求能进行全文检索,怎么做呢?可以新建一个查询,把要检索的多个字段进行连接,连接成一个长字段,用户进行全文检索时就在这个字段内检索就可以了。这种实现方法不是特别好,但我测试,在目前的数据量下不会有问题,另外,ACCESS的查询保存的是SQL语句,并不会增加数据库表的体积,数据库体积不会增大,目前测试速度没有问题。

(三)、查询结果中记录的导出

查询结果存储在一个子窗体内,用户要求把查询结果导出为EXCEL格式。把窗体导出的数据导出方法很多,在其他开发工具里很容易就实现,但在ACCESS里确有些费周折。网上查了下,主要的方法有复制的方法,用VBA代码把子窗体的光标移动到第一条记录,然后写个循环,依次选中所有的行,然后,调用excel把选中的行复制到excel里去。这种方法在数据量小的时候,一点问题没有,但超过1万条是就很慢了。

我使用的是另一种方法,使用vb里的Excel.Application,这个对象可以直接把窗体里的内容复制到一个excel里,

具体如下:

 

exlpath = getFilepath(, "excel(*.xls)", "保存文件为xls", , False)

If exlpath = "" Then Exit Sub

(这一段是调用一个函数,给用选择一个保存路径的选择,用户选择的路径保存在exlpath里)

 

(下面的代码网上有,大意是创建一个excel对象,读取表结构,把表结构拷贝至第一行,从A2单元格开始拷贝数据)

Set oExcel = CreateObject("Excel.Application")

Set oBook = oExcel.Workbooks.Add()

 

Me.xiform.Form.Recordset.MoveFirst

 

For i = 0 To Me.xiform.Form.Recordset.Fields.Count - 1

oBook.Worksheets(1).Cells(1, i + 1).Value = Me.xiform.Form.Recordset.Fields(i).Name

Next

 

oBook.Worksheets(1).Range("A2").CopyFromRecordset Me.xiform.Form.Recordset

oBook.SaveAs ("" & exlpath & "")

MsgBox "导出成功"

 

errexit:

oBook.Close False

oExcel.Quit

Set oBook = Nothing

Set oExcel = Nothing

Exit Sub

 

errit:

MsgBox "错误号为" & Err.Number & " 错误说明:" & Err.Description

 

End If

Resume errexit

 

仔细看了Excel.Application这个对象,好像和dde有点像,可以对导出的excel格式进行一些更为精确的实质。但实现起来真的有点麻烦。

(四)调用帮助文件:

做好的帮助文件为chm格式,要在菜单或其他地方调用这个帮助文件。首先在模块里做一个函数:

 

Public Function help()

ShellExecute 0, "Open", "" & Application.CurrentProject.Path & "helphelp.chm", "", "", SW_SHOW

End Function

在菜单或按钮上调用就可以。

以上就是一个基于ACCESS的复杂检索系统的功能实现图解教程及关键代码的全部内容,望能这篇一个基于ACCESS的复杂检索系统的功能实现图解教程及关键代码可以帮助您解决问题,能够解决大家的实际问题是谜爱阁生活网一直努力的方向和目标。

推荐阅读

  • 支付宝悄悄话怎么知道对方看没看

    支付宝悄悄话怎么知道对方看没看

    支付宝的悄悄话是阅后即焚的消息,如果发送悄悄话过去,悄悄话消失了就证明对方已看。具体操作方法如下: 支付宝悄悄话怎么知道对方看没看 1、打开手机支付宝app,点击消息”,再点击右上角人像。...

    阅读: 1485

  • 健康码代领怎么弄

    健康码代领怎么弄

    在家里的老人孩子都不会操作手机的时候,可以代领健康码,在微信的防疫健康码中即可进行代领。具体操作方法如下: 健康码代领怎么弄 1、打开手机微信app,点击我”。 2、点击服务&rdquo...

    阅读: 734

  • 倒数日怎么删除不用的事件

    倒数日怎么删除不用的事件

    倒数日是一款倒计时软件,添加的事件可以进行删除,进入事件编辑即可删除。具体操作方法如下: 倒数日怎么删除不用的事件 1、打开手机倒数日app,点击需要删除的事件,进入事件页面。 2、点击右上角笔的标...

    阅读: 681

  • 怎么关闭零钱通

    怎么关闭零钱通

    零钱通是微信中的一个理财产品,如果需要关闭,在零钱通的设置中直接关闭即可。具体操作方法如下: 怎么关闭零钱通 1、打开手机微信app,点击我”。 2、点击服务”。 3、点击...

    阅读: 697

  • qq听歌状态怎么显示听的歌

    qq听歌状态怎么显示听的歌

    qq听歌状态可以显示正在QQ音乐听的歌,设置听歌状态后进入QQ音乐听歌即可。具体操作方法如下: qq听歌状态怎么显示听的歌 1、打开手机QQ软件,点击头像上的状态,进入状态设置。 2、找到并点击听歌...

    阅读: 778

  • qq相册怎么转移到另一个qq

    qq相册怎么转移到另一个qq

    qq相册要转移到另一个qq,可以借助转载功能进行转移,使用QQ进入另一个QQ的相册即可进行转载。具体操作方法如下: qq相册怎么转移到另一个qq 1、打开手机QQ软件,点击联系人”,再点击...

    阅读: 691