2 系统结构
2.1 单项检索流程 见图1。
2.2 合并检索流程 见图2。 图1 单项检索流程 图2 合并检索流程 (略)
3 系统功能及实现方法
3.1 控件添加及数据绑定
3.1.1 数据控件
要使窗体能实现上述功能设计的目标,首先要将数据库与窗体连接起来,这一工作是由窗体上的数据控件(Data控件)完成的,将Data 控件的属性Databasename设置为所要联接的数据库名?D?D中药信息库,Recordsource设置为所联接的数据表?D?D中药信息表,这样,就使窗体和数据库之间建立了联系。
3.1.2 绑定控件
在窗体上添加适当的绑定控件,将其Datasource的属性设定为中药信息表,将其Datafield的属性设置为相应字段名称地,用来数据表中的内容,本系统在“检索窗体”中用一个Msflexgrid控件显示数据表,在“编辑”窗体中用多个文本框显示,只要将其Datafield属性设为要显示的表中相应字段名称,例如:要在text1中显示药材‘名称’则将text1的属性设为‘中药信息表’,Datafield属性设为‘名称’。
经过这一番设定,数据表中的内容便完整地呈现在眼前,而不用编写一行程序代码。
3.2 功能实现
以上的操作是实现系统功能的基础,它多能使用户对数据表进行机械的浏览,要让系统了解用户的意图,还需编写代码来实现。
3.2.1 检索功能
3.2.1.1 单项检索
本系统提供了三种不同的检索途径 :按显微特点查找,按化学成分查找,按药理作用查找。前者必须写明所观察药材的药用部位某切片的组织构造和细胞及后含物有可能相同,例如:大黄以根入药粉末中含较多草酸钙簇晶,桑寄生以茎枝入药,粉末中也含有草酸钙簇晶,若系统只就粉末查找,就很难区分二者。若药材以全草入药,在部位的组合框中选择或输入‘全草’即可。粉末项必须按顺序输入(允许输入2种),否则系统将拒绝读取粉末一项的特征信息。后两者也必须按顺序输入(允许输入3个特征信息),否则系统将出现提示并取消刚才的操作。以上三种检索途径用户可任选其一,按一下该选项卡上的确认开始检索,按取消清空该项卡中的内容,系统恢复原始状态。
这检索功能都是靠SQL的查询语句实现的,SQL的查询语句为Select 字段 from 表名where 条件,即Select语句。
3.2.1.2 合并检索
它不仅可用于单项查找还可以用于多项合并查找。在各选项卡中输入特征信息后不按‘确认’键,而是按窗体上的‘合并查找’键,则系统会将所有组合框内的信息列为查找项目,若某项为空或未按顺序输入,则此项不会参与合并查找,系统自动提示。更新后可继续查找。这项功能是通过在Select语句中逐层添加查找条件而实现的。所有检索结果显示在左侧的Msflexgrid控件中,可以快速浏览药名,具有直观性的特点,但其具体内容查看起来并不方便,系统将检索结果制表(Select 字段 into 临时表名 from 表名 where 条件)后连接到“编辑”窗体的文本框中浏览。
3.2.2 查看和编辑
3.2.2.1 查看
检索完以后,数据网格中的检索结果已经屈指可数了,点击“检索”窗体中的‘详细/编辑’按钮,在弹出的“编辑”窗体中,可以看到整个数据表,按下左上角的‘详细内容’,“编辑”窗体的Data控件马上连接到最近一次检索结果的临时表,text框中显示的数据便是最近一次检索结果,可以通过文本框上的竖直滚动条查看全文内容。用Data控件改变记录。
3.2.2.2 编辑
查看时每个文本框的文本内容都是只读的,不可修改,要想对查找出的结果进行编辑需依靠窗体顶部的‘添加’、‘删除’,‘修改’按钮实现。这命令代码除‘添加’外全部由SQL语句编写,且编程操作都是针对中药信息表而作的,而不是临时表tab(见图3)。当按下其中任一个按钮后Data控件的Datasource属性转换为中药信息表,‘添加’时新建一条新记录,locked属性变为false,等待输入新数据,此时按钮上的添加变为‘确认’,当输入完毕后按下‘确认’,则该笔记录存入数据库中,text的locked属性又变为true,按钮又变为添加。这一功能是用记录集的Addnew方法实现的。‘修改’按钮的操作过程与添加相仿,其语句是“update 中药信息表 set 字段名=‘内容’ where 字段名=‘内容’”。按‘删除’后,系统会提示是否要删除当前查看的这笔记录,确定是后系统才会删除,否则系统保持原样。Delete语句先将此条记录从数据表中找到,再删除它,即“Delete 药名 from 中药信息表 where 条件”,要想查看修改、删除、添加后的中药信息表的检索结果必须重新回到查询窗体检索,否则数据网格显示的仍是上次检索结果,按下任一个‘取消’键或‘更新’即可。
3.2.3 查看图像
通过“编辑”窗体上的‘图片’按钮,可在弹出的‘图像’窗体中浏览该药材的图像,但前提必须是在图像路径中正确输入路径名,否则系统将出现错误信息。这一功能是用Loadpicture方法实现的。