说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

建立自己的数据字典库-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
建立自己的数据字典库-Delphi资料

当开发一个稍大一点的数据库程序时,往往会涉及许多表。这些表的

管理就成为一个问题了。Delphi3(C/S)提供了数据字典的功能,

但有一定的局限性,而且该数据字典的功能中有BUG。我一般都自己

建一个数据字典库来管理一个工程中的许多表,工程中所有的表在字

典库中都有详尽的描述,便于管理和维护。这样不论时过多久,工程

中所有的表都能尽在掌握之中的。若对数据库结构只作很小的改动时,

只在数据字典库中进行,然后由程序来动作创建表,既快而又不容易

出错。可以详尽地描述一个字段的名称、类型、显示名称,提示数据

库,提示字段、是否为索引字段、是否允许修改等等。用户可以随时

修改字段的显示标题(Title)

提示内容等而不必修改程序本身。

对于使用DBGrid控件来说,完全可以由程序来实现各个Colum的标

题、提示等内容的填写。不必很麻烦地一个个地去设计DBGrid的每

一个Column,也不会因为失误或结构的修改或其他原因导致要重新

将DBGRid的各个Column设计一遍这种麻烦而又可能导致新的错误

的重复性劳动。由于能自动填写显示标题,提示内容等功能,就不

用在屏幕上放很多TTable的可视化小方块图形了,只要处理过程

不冲突,就可以共用一个TTable控件,也就可以相对地节约一些

系统资源了。总之我认为采用数据字典库好处很多的。我这里有一

个实际的字典库使用的例子,该例子是为了给指定的DBGrid控件填

写各个字段的显示标题(DiplayLabel),提示内容(PickList)的

供参考:

procedure TFMlrxz.GetDisplayName( pform:tform; PDB:TTable; PGD:TDBGrid );

var

i: integer;

fdnm: String[25];

fdnma: array[0..40] of Char;

fdnmp: PChar;

lktb

rgstart

rgend

rgfd: String[12];

lkfd: string[20];

tskm

tszd: Variant;

begin

amkey := "";

asubkey := "";

for i := 0 to 40 do

azdxwm[i] := "";

with pdb do

begin

fdnm := upperCase(Pgd.Fields[0].FieldName);

if lowercase(pform.name) = "fmlrsj" then

jskm := xzzkm

else

jskm := xzkm;

if locate("bxwm; zdxwm"

VarArrayOf([jskm

fdnm])

[loCaseInsensitive] ) then

begin

keycount := fieldbyname("keycount").asinteger;

for i:=0 to Pgd.FieldCount-1 do

begin

fdnm := upperCase(Pgd.Fields[i].FieldName);

Pgd.Fields[i].DisplayLabel := FieldByName("zdhzm").AsString;

PGD.Columns[i].Title.Alignment := taCenter;

azdxwm[i] := fdnm;

if lowercase(pform.name) = "fmlrxz" then

begin

if (azdxwm[i]="DX") or (azdxwm[i]="XT") or (azdxwm[i]="RW") then

PGD.Columns[i].field.OnChange := Fmlrsj.dbxhDXChange;

azbbh[i] := fieldbyname("zbbh").asstring;

if length(fieldbyname("gjz").asstring)<> 0 then

amkey[i] := fieldbyname("gjz").asstring[1];

end;

if (lowercase(pform.name) = "fmlrsj")

and (length(fieldbyname("gjz").asstring)<> 0) then

asubkey[i] := fieldbyname("gjz").asstring[1];

{ ************************************************************ }

lktb := FieldByName("LookTable").AsString;

lkfd := FieldByName("LookField").AsString;

if (Length( lktb ) <> 0) then

begin

DBtemp1.Active := False;

if FieldByName("tbname").AsString = "ZD" then

DBtemp1.DatabaseName := "jzglzd"

else

DBtemp1.DatabaseName := "jzgl";

DBtemp1.TableName := lktb;

DBtemp1.Active := True;

DBtemp1.First;

PGD.Columns[i].PickList.Clear;

{ ************************************************************** }

if lktb = "tsdict.db" then

begin

// tskm := xzkm;

tszd := fdnm;

with dbtemp1 do

if (locate("tszdxw"

tszd

[loCaseInsensitive]))

and (length(FieldByName("tsnr").AsString) <> 0 ) then

begin

fdnm := FieldByName("tsnr").AsString;

PGD.Columns[i].PickList.Add(fdnm);

next;

while (length(FieldByName("tszdxw").AsString) = 0)

and (not eof) do

begin

fdnm := FieldByName("tsnr").AsString;

PGD.Columns[i].PickList.Add(fdnm);

next;

end;

end;

end {end of "tsdict"}

else

begin

if (dw <> "k00") and ((lktb = "dwdzdict.db") or (lktb = "zdming.db")) then

begin

{if lktb = "dwdzdict.db" then

begin

rgstart := "-0000";

rgend := "-9999";

rgfd := "dwdz";

end; }

if lktb = "zdming.db" then

begin

rgstart := "00";

rgend := "99";

rgfd := "zddz";

end;

with DBtemp1 do

begin

SetRangeStart; { Set the beginning key }

FieldByName(rgfd).AsString := dw + rgstart;

SetRangeEnd; { Set the ending key }

FieldByName(rgfd).AsString := dw + rgend;

ApplyRange; { Tell the dataset to establish the range }

end;

end; {end of "dw <> k00 }

while not DBtemp1.Eof do

begin

fdnm := DBtemp1.FieldByName(lkfd).AsString;

PGD.Columns[i].PickList.Add(fdnm);

DBtemp1.Next;

end;

end;{ end of else}

PGD.Columns[i].ButtonStyle := cbsAuto;

PGD.Columns[i].DropDownRows := 10;

end; {end of length(lktb)<>0}

next;

end; {end of for i:=0 to Pgd.FieldCount-1}

end {end of if locate}

else

begin

fdnmp := @fdnma;

StrPcopy(fdnma

fdnm);

StrCat(fdnmp

:不在字段名库中

);

Application.MessageBox( fdnmp

提示信息

mb_OK );

end;

end;

end;

能准确“猜透”玩家心理,深度学习让游戏更智能 阿里过程改进专家:看板核心在于拉动式管理过程+数据化支持改进 英特尔Edison全面上市,专为小型可穿戴设备设计 APM最佳实践:Web 2.0和AJAX四大优化战略 开放•创新•共赢 2014华为开发者联盟沙龙即将开幕 排名前十的SQL和NoSQL数据库 干货议题,中国互联网安全大会免费门票等你来! 【云先锋】红象云腾:Hadoop将和高铁一样改变我们的生活 IDF 2014上开发者最应关注的三件事之:原生应用兼容性篇 《近匠》WRTnode创始人罗未:OpenWrt,下一个时代的Android AMD爆新一代架构,代号Zen! 【问底】严澜:数据挖掘入门——分词 顺丰集团IT副总裁徐庆强:信息化技术支撑高质量服务 【CTO俱乐部走进雅虎北京全球研发中心】活动图文实录 病毒式传播到商业价值,Docker开创以开发者为主导的商业模式 一周消息树: Windows 9系统截图大量曝光,一起来看看它长什么样! 腾讯李朝晖:不移动非互联,投资关注四大领域 【问底】Yao Yu:谈Twitter的百TB级Redis缓存实践 “OKCoin与你&#183;北京一夜”:共商比特币可持续繁荣之道 苹果再发力:推Apple Pay,或将引发新一轮支付变革 CausalImpact,谷歌开源的R时域因果关系分析工具 腾讯云总裁陈磊:互联网和传统企业互联网化是主线 不得不看,苹果Pay技术大起底! 详解Apple Pay:一大波iOS原生应用正在逼近! 高性能微信公众平台开发 【先锋】事务、高性能,王涛谈打造超越MongoDB的NoSQL 浅谈互联网数据中心海量运营之道 一篇文章读懂开源web引擎Crosswalk Facebook创建新开源组织TODO,Google、Twitter等继续捧场 微软明日将启动第二轮裁员 涉及所有的事业部 IBM推出Watson Analytics 将人机对话带进企业决策 菜鸟请教!!急 今天因为一个已结帖的帖子结识一个好友rocksoft,为了表示庆祝特地散分!请斑竹放行! 闷郁~散分 c++中的friend关键字在c#中有没有什么替代的 请问IMG中的ALT属性的意义和作用 float型的问题(在线等待) 关于AnsiString类别字符串传送至PB8 ☆☆内存泄漏的检测问题★★ i installed an english system, but it doesn't surport chinese input, and many words are displayed incorrectly,how to do with it 有兴趣的可以看看,测一下自己的水平,我公司的Oracle试题一? 代理服务器XP上安装了两块网卡,上网如何设置? 请教使用CFile类的一个小问题? 编辑框简单问题 请问那里有RFC下? 查看隐藏文件的选项不见了怎么办? 怎样检查硬盘坏道? 有兴趣的可以看看,测一下自己的水平,我公司的Oracle试题二? 关于数据库访问的问题 资源文件的问题,MYBMP1 IS NOT FOUND 有关WINAMP 的问题? 处理字符串以修改数据库 开机显示the secondry IDE channel no 80 cable …… <input type=file name=pic>如何取值,如何设置初始值???? 么样判断一个客户机是否能够连上服务器上数据库,在线等待 在RAVE中如何加上总页数和当前页数? 有缺邮箱用的吗>?现在有了哦,穷人快来啊。。哈哈,我也是其中一个。 请问一个 应用程序登陆SQl Server 时密码的问题? 菜鸟提问! Outlook Express邮件丢失 非典嚣张的日子里的北京(希望惊起大家对SARS的关注)!!! 问一个简单的概念性问题,分却很多.......还可加哦 一个数据映射错误 关于进程通讯的问题 问一个简单的概念性问题,分却很多.......还可加哦 哪里可以找到关于OA方面的资料?越多越好,100分送上 高手请进,怎么监测到一个文件将被覆盖 请问如何屏蔽F1查看帮助的功能? 高手请进,怎么监测到一个文件将被覆盖 能提供解码器么? 在tdi中,怎样获取封包ip头? 神啊!救救我吧!!!!(在线等待) 我看SARS危机 求助 我该怎么办??? 管理登陆问题解决?? 一个简单的问题,如何对字符串进行减操作? 谁用过struts,进来交流一下! 请大侠看看俺的小程序,哪里错了(关于不规则图形填充) delphi查询问题(急需) 急求:从硬盘安装windowsxp时电脑出显不能安装,找不到eula!如何解决? 系统分析员VS博士 对甲苯磺酸为什么会变红?.请阿里巴巴生意经的高手、专家们帮忙看下 金字塔真的有神秘的能量吗?金字塔真有神秘的能量吗?有谁亲身体验过?我是相信有这种能量啦,所以自己做了一个小小的金字塔(花费了好多时间哦),但是,并没有发现它的能量表现出来.请大 中文榴莲怎么翻译阿尔巴尼亚语感谢了 关于3BrF3+5H2O=9HF+HBrO3+O2↑+Br2↑的问题原题是已知有5.4gH2O被氧化,求被水还原的BrF3是多少克.但是我在做题过程中遇到一个问题:已知5.4g水被氧化,即0.3摩尔水被氧化,可知有0.75摩尔水参加反应, 什么事金字塔能量? Let's get some () about UNICEF on the Internet.A information B message为什么 有关3BrF3+5H2O=HBrO3+Br2+9HF+O2上升符号,正确的是还原剂和氧化剂物质的量之比为5:3HBrO3和HF是还原产物生成1molO2,该反应转移6mol电子O2的氧化性比BrF3强 关于能量金字塔最多大约有百分之二十的能量从第一营养级流入次级消费者生产者呼吸消耗的能量一般没有流入初级消费者的能量多这两句话哪错了?位于金字塔顶部的消费者获能最多 不对 英语翻译 什么盐发生完全双水解 什么是stp 30亩地盖一个养猪场需要多少万 完全双水解的盐有哪些? stp是什么文件 紫外线和人类生活健康的关系 化学反应生成的物质能不能是是弱酸弱碱盐(双水解) STP是什么材料 I d____ some information about traveling on the Internet.This dictionary has many e______ of how verbs are used. 一反比例函数图上任意点到两坐标轴距离的积都是3,且与直线y=x有两个交点,求这个函数解析无图 STP是什么 I am going to __some information on the Internet.A look for B find C search 卤代烃、脂、二糖、多糖、蛋白质、盐发生水解反应的化学式及现象.请分类举例即可. 什么事STP 如何成功管理猪场 氧化还原反应3BrF3+5H2O=====9HF+HBrO3+O2+Br2 当有2mol水参加氧化还原反应时由水BrF3还原的和总的被还原的BrF3物质的量分别是A 1mol,3molB 2mol,3molC 4/3mol, 2molD 3mol,1mol ,求,关于计算机的自编格言. 硫酸铁怎么生成二价铁 求,计算机方面的名人名言 过碳酸钠中,能否用高猛酸钾标准溶液来确定过氧化氢含量,希望有详细理由. 单质碘和盐酸,硫酸铁是否发生反应? 与计算机有关的名人名言(要中文) 从一周期元素从左到右,最高价氧化物所对应的水化合物碱性逐渐( ),酸性( )气态氢化物的稳定性逐渐( ) 第三周期元素里,最容易生成氰化物的元素是( ). "they are a fraction of their former selves" 怎么翻译? 染色体被染色的是蛋白质还是DNA 传媒、计算机励志名言本人因工作急需,特向各位求索新闻传媒方面、计算机方面的名人名言,放在教学楼走廊、教室用.万望大家不吝各赐十来句,且要注明出自哪一位科学家、文学家.时效性 为什么紫外线人看不见,而一些动物能看见 大地文化传播集团公司的大概,对他的了解和评价,公司的企业文化等 我制作关于计算机的名人名言,包括相框.老师让我们每人交一份关于计算机的名人名言相框,要求电子版的,用Photoshop制作,宽38,高76,字体为宋体,加粗.带有名人的相片, 趋紫外光性的动物有哪些 甲鱼有吗 The beginning of wisdom is to call things by their right names.请问对照中国谚语翻译是甚么,求精确的 怎样取高锰酸钾 相对标准不确定度是用标准不确定度分量除标准值还是除测量结果平均值 如何区分半乳糖和葡萄糖同题 DNA为什么会被甲基绿染成绿色? 实验设计:胆汁在消化过程中起什么作用请你用下面给出的实验材料设计实验,证明胆汁的作用.材料用具:新鲜的鸡胆汁、花生油、试管、滴管实验设计:预期实验现象: 半乳糖和葡萄糖的结构有什么不一样?同题 斯诺克台球(碰撞问题)斯诺克台球白球和其它球质量一样大么?如果一样大,白球击球后为何会倒退呢? 如何成立运输公司 at the 表不表示at that time? 台球怎么打,才能使母球与目标球直线碰撞后,母球往相反的方向运动?第二种情况是碰撞后母球立即停止,仅仅目标球运动,(以上两种情况都是直线碰撞,球心连线和运动方向在一条直线,没有角 怎样开永久A车吗拜托各位了 3Q继续吧,有人会告诉你午夜,其实就是看运气!不看人品! at the moment是什么意思啊 台球碰撞问题初三一个台球碰撞另一台球,一球运动,另一球反弹改变运动方向.问下其中有无弹性势能的转化 科学家怎么知道鸟能够看见紫外线的? 求反比例函数y=k/x的解析式时,只需要两个变量的一对______或双曲线上______个点的坐标 高中物理 台球碰撞问题.求解析.(看到两种不同答案.求证.)如图所示,设球与框边碰撞时无机械能损失,不计摩擦,则两球回到最初出发的框边的先后是( )A球先回到出发框边B球先回到出 哪里还有永久A车卖最好是100元拜托各位了 3Q at the 牛顿撞撞球的问题我在淘宝上买了一个牛顿撞撞球,但两边小球只能撞几十下,过一会就停下来了,我记得看电视上的是可以一直撞下去啊,撞很长时间,是不是我这个质量有问题? 我现在的工作是操作等离子喷涂机,由于是新手,对等离子弧了解不够,但我知道这东西的紫外线辐射较强,我没有特殊的工作服,就是一般的这种衣服》 美报告警告称美国有600万青少年辍学韩抗议日本发布争议岛屿宣传片 欲召见报告称降低儿童死亡率尼日尔最成功 中记者追问医改网站故障 白宫发言人犯难美国会圆顶1300多条裂缝 50年最酝酿八旬六连任 麦凯恩欲2016年竞希腊女童疑曾遭拐卖 美国夫妻认为是其俄国防部长23日将出席俄罗斯-北约理德媒称俄前首富霍多尔科夫斯基难获释 联合国难民署加紧向300万叙民众提供联合国称巴以局势动态令人忧虑 吁各方欧洲太空望远镜将发射 能预测行星是否澳大利亚总督布赖斯访问成都 与大熊猫韩外交部可容忍同时标记独岛和竹岛 议叙反对派将于下月初决定是否参加叙问题日本邀国际原子能机构查核污染 称邻国波士顿爆炸案已死嫌犯或曾参加2011波士顿爆炸案已死嫌犯或曾参加2011美情报局局长:有关美国窃听法国电话报美情报局局长:有关美国窃听法国电话报韩国称重启金刚山旅游需首先保障游客安马可·波罗到底有没有真的到过中国?资本血腥扩张:孙正义、李嘉诚、雷军,施奈德林:来曼联是因为范加尔笑到癫狂的10部高分喜剧,让你笑到不古代算命先生怎么算命?那些年,我们追过的卡西球星卡听说,会换备胎的男人艳遇值高?亲民武器 简易装备让你爽个够不同的灯光,不同的情调,心里暖暖的!迎新充值以及如何理性充值 合理充值让你越住越穷的5种房子,改改!详解”预科” – 什么是预科?一位网贷投资者的心得体会三国来了转生丹如何获得 转生丹获得途你必须知道的 买车时那些要考虑的配置吃货们必看6部美食电影!你知道是那几九龙战夺魂职业怎么样 夺魂属性技能分香水爆炸把仪表台炸个大洞,车上的杀手前育碧美女制作人加盟EA 任新工作室最全欧洲特色旅游路线介绍!一篇必须要Air Jordan 11Lab4“
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘