第13卷第1期2100年3月
沙洲职业工学院学报
JunlfSahuPoesoantueoTcnlgorahzorfsinlsitfehooyoIt
vo.1No.13.1M.20l0
Dlh主从表数据录入研究eip
周凤石
(洲职业工学院,江苏张家港250)沙160
摘
要:Deh开发CS结构的数据库应用系统中常见的主从表(srtigJ录入技术及其存在问题进行了深入的对lip/Mat/alL/eDe)g ̄
研究与剖析,提出并实现了一种既简单又行之有效的主从表数据录入方案。关键词:主从表;ADurOQey组件;DaaoretSuc属性:批处理模式
中图分类号:T31123P1..3文献标识码:A文章编号:1009—82(000—014921)109—04
DicsofMatrDealDaaIputinlisusinose/titntngiDeph
ZHOUegsiFn—h
(hzoresnlntuefTcnlyZagiag250,hn)SahuPosiaIsitoehoo,hnjan160Ciafotgg
Absrc:iaeiyicssadaaoisiehtrbenDaaiptfMatrDealtatThspprmanldsusenntmendptpolmsitnutiose/tihengiSDaaaeApiainSytmervdfoDepiAndiasrpoenelecefdtnC/tbsplctosedpiermlh.tlopossadraisashmeoazaiputnfMatrealeetvswelaintigose/ti,fciealssmpl.De
Kersywod:Mat/eiTbe;srtlalsADOeyDaaoreBtdeDaQur;tSuc;acMoeh
0引言
基于关系型的数据库应用系统中,表之间关系最常见的就是“对多(:),即:主表中的一条记录对一1”n
应从表中的多条记录。如:客户表的一个客户记录对应订单表中的多条订单记录;订单表中的一条订单记录对应明细表中的多条明细记录等。针对这些主从表结构的数据录入,多数开发工具提供专门的数据关联组件,例如利用Deh提供的Tbe组件,只需简单设置组件的相关属性即可实现同一界面中主从lipal表的关联查询。但对于主从表的数据录入,仅通过这些简单的属性设置并不能完全实现。本文通过一个典型的主从结构关系,详细介绍如何在Dlh中使用AepiDO数据访问组件,简单快速创建功能实用的主从表数据录入界面技术。1问题的提出以SLSreQevr中的Nrwid示例数据库为例,otnh其中的“单”与“订表订单明细”,通过公共字段“表订单I构成一个典型的主从结构关系(图1。D”见)
使用Dlh提供的ATbe组件,甚至不用写epiDOal
订单ID
客户ID订购日期运货商ID运货费
订单明细
订单ID产品ID单价数量
行代码,只要设置几个属性,就可轻易创建出一个看似实用的主从表数据录入界面。然而,这样的设计
一
存在以下几个问题:
()AD’l1O1be组件通过Tbeme属性连接的aalNa
是整张表,当表中记录达到10万条以上时,打开这样的~张表所需时间可能要几分钟,这在实际应用中显然是不允许的。
货主名称
折扣
图l“订单”表与“订单明细”表之间的关系
收稿日期:21一1100O.1作者简介:周凤石(95)16.,男,沙洲职业工电子信息工程系副教授。
周风石:Dli从表数据录入研究ep主h
()当主表添加记录后,如果不保存而紧接着输入子表记录,则在保存子表记录时因关联字段“2订
单I”D的值不确定而出现错误。()主表中的“3客户I、‘D”‘运货商I”D,从表中的“品I”产D等字段,不应该让用户直接输入字段值,
一
方面这些字段值大多是一些无规则的数字编码,不易记忆,另…方面直接输入容易出错,导致因违反
主从表之间的数据参照完整性而无法保存记录。2解决问题的关键
第一,要解决打开大数据量表速度慢的问题,首先想到的是使用非数据感知组件进行数据输入,然
后通过ACmmad组件执行SL命令来实现数据的录入、修改与删除等操作,这样可避免打开整张DOonQ
表,从而大大提高数据处理速度。但是,Dlh供的主从表数据关联功能是基于数据感知控件的,对epi提于非数据感知控件,要实现主从表关联,必须通过编程实现,比较繁琐。如何充分利用Dlh提供的主从表数据关联功能从而尽量减少代码编写又能避免打开整个表?答案eip
是:主从表均使用ADOurQey组件代替ATbe组件。DOal第二个问题,只要强制用户先保存主表记录,然后才能输入子表记录。
第三个问题,可以通过DBokpoooLouCmbBx组件来实现,比如:用户通过DLouCmbBx选Bokpooo择客户名称,但实际保存到“订单”中的则是客户I表D。
3设计思路
用ADOQey组件实现主从表关联有两个关键点:一是获取从表数据的SltSuree-QL命令必须带cWhree条件子句并提供一个参数,而该参数正是主表的主关键字“单I”订D;二是对应从表的ADOurQey
toreaaaore组件ADOQeyDurDMX,其DaSuc属性必须指定为主表所对应的那个DtSuc组件
_
DaaoctSure
_
D见表1。D(1表lADurOQey组件属性设置
另外,添加主表记录时,因为须调用ADur件的ApnOQey组ped方法,而前提条件是ADurOQey必
须处于打开状态。为达此目的,可以使用如下技巧:
()给“eetfm订单”1Slrco增加一个条件:“ee订单I=”whrd0,而“单I=”订d0的记录实际是不存在
的。这样,当打开ADOurD,便产生一个我们所需的空的数据集。QeyD时
.
LokTpe()对于减少网络负载,可以将从表对应的A2DOQeyDDMX组件的cy属性设置为ur
.
lahpiscttOtt,使更新的数据在客户端缓存,当用户需要更新的时候再一次性提交到数据库服务器。Bcmii
()对于录入界面的设计,主表采用DBdt与DLouCmbBx等数据感知控件,子表采用3EiBokpooo
DGiBrd控件,这样的设计既直观又非常符合用户的录入习惯(图2。见)()于从表“4对订单明细”的“品I字段录入,可以通过对应的A中产D”DOQeyDDMXur组件的“字段
.
编辑器”创建一个Louokp字段“品名称”产,来实现从下拉列表中选择产品名称这样一种既直观又方便的方式来录入,而实际保存到“单明细”的则是“订中订单I。D”
4具体实现解决了以上问题之后,以“订单”订单明细”与“表数据录入为例,对主从表的录入功能进行具体实现,
2.0
.
本文共4页,欲获取全文,请点击链接http://www.cqvip.com/QK/85086X/201001/34090510.html,并在
上一篇:
Delphi串口通信的实现
下一篇:
政治视域中的行政