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

建立自己的数据字典库-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;

一周消息树: 微软的2013,Surface的2014 Amazon CTO Werner Vogels:云和SaaS正在快速风靡全球 “人类先知”Isaac Asimov 50年前的科技预测大多应验了 2014年10大Web设计趋势 Google野心:App Indexing改写应用搜索格局 Cocos2d-x,老牌引擎的新进化 Kingdom Rush创始人专访:游戏与电影元素混搭 超实用的JavaScript技巧及最佳实践(下) 盖茨和鲍尔默或成挑选微软新CEO的最大阻碍 移动开发进阶:触发式邮件深入分析 King.com传奇再续!Farm Heroes Saga强势登陆iOS、Android 2013综述稿:Clojure这一年及大事件 亚马逊AWS vs.谷歌GCE,彪的是价格? 2014,混合云被广泛采用的一年 传微软拉拢厂商推双启动系统手机 用户可选Windows Phone或Android 为什么游戏领域总是“抄抄抄”! 物竞天择、百家争鸣——评OpenStack生态圈 CES 2014:Intel针对可穿戴技术发布多款产品 直击CES:Pebble推金属版智能手表Pebble Steel 为4K智能电视而生:高通推出骁龙802处理器 英特尔首席执行官阐述可穿戴设备新技术及Edison计算平台 设计师如何写出更棒的项目建议 微软以1亿美元收购Parature“知识库” 登陆CES:三星发布智能家庭平台Smart Home CES 2014:GPS供应商Garmin推健康腕带Vivofit 《近匠》第05期:移动开发工具访谈,个推——有节操的push 【Hadoop技术博客推荐】Hive的那些事 Twitter联合创始人推社交搜索应用Jelly 马云“食言”进军手游分成比例8:2,开发者可拿7成 CodeCombat游戏全面开源:玩游戏也能学编程 Netflix首席云架构师Adrian Cockcroft加盟Battery Ventures 我用标准输入输出流来输入字符串到string的对象里,为什么得不到空格和以后的字符? 转一篇文章——有关LSD的罐头 (有点长,没耐心的就不用看了^o^) 送分! 超过10个回复请勿再进!!! VC程序调试问题 懂电路分析者请进 求树型菜单的代码??马上给分!!! VC可以调试可执行文件吗??? 请高手指点迷津 :) 求树型菜单的代码?? 如何使列表控件的第一列居中(包括标题文本和内容文本)??? 用查表法按ALPHA混合R、G、B也会这么慢?奇怪!(有源码)(50 怎样用vc开发一个动态链接库让PB调用,要求参数为字符串 3dmax 的问题 关于用alert("信息!")弹出的对话框 up up up up up up up up up up up up up 请问“IE登录时”为什么Domino检测不到我的Username and password? 着急,这条sql语句怎么写?????? 爱的密码 散分啰!!统计BCB论坛现有成员... 这样的COM组件如何实现? 请教:我想学lotus,可不知哪有lotus和lotus教程下载,望指教! 多选项提交过来的值是什么类型的? ORA-03113: end-of-file on communication channel谁知道??高手救命! 星际争霸几大战略(大家切磋切磋) CHtmlView的刷新问题 关于asp.net加密的讨论 怎么样把两个ArrayList合并成一个??我在文档里找了半天也没找到!急~~!!!!!!!! 》》》菜鸟发问:SQL SERVER2000 可以对 office 文档进行全文检索吗? How to alter DBGrid Scrollheader Color? c怎样访问数据库啊?一定给分! from里的参数传递为ENCTYPE="multipart/form-data"时的问题? 网吧问题 如何在txt文件中查找字符 请问如何实现当进入一个combox时自动下拉列表框(不用用鼠标去点) 关于volatile 修饰词 过去用Delphi开发数据库都是用Access,现在急需使用SQL Server。请问:我必须掌握SQL Server中的那些内容。 如果我想删除日志文件的所有记录该怎么办?????? 怎么样把两个ArrayList合并成一个??我在文档里找了半天也没找到!急~~!!!!!!! 请问,NT4.0下怎样配置网关和路由? 请问如何知道一个弹出菜单是否以经关闭 升级后问题,奇怪,请指教? 什么是存储过程? 大侠们帮忙看看,简单问题 急:因出差,明天(12.20,第二期)的“微软.net高级程序员培训”转让(包括资料)!今晚6:00前联系,13910321169. 请问怎样才能在Access中选取指定行数的记录如第5-10条. 关于XML命名空间的疑问?请教各位高手帮帮忙!谢谢! 请问哪里有《情深深雨蒙蒙》下载??? ******斑竹快出来啊 看看我这个贴子啊!!!!!!!!!!!!!! 如何读取寄存器中的数据? 请问在数据库中如何操作日期型字段: Help,如何把本机加入主域服务器? 急:因出差,明天(12.20,第二期)的“微软.net高级程序员培训”转让(包括资料)!今晚6:00前联系,13910321169 一块三角形地的面积是0.3公顷,底边上的高是80米,底边长多少米?如题 小青想调制一种巧克力与牛奶之比为2比9的巧克力奶,现有16克巧克力,需要加多少克牛奶 胡麻油是什么成分?谢谢了,大神帮忙啊 一块三角形地的面积是0.3公顷,底边上的高是80米,底边长多少米?说理由 一个长方体水箱,从里面量长50厘米,宽40厘米,深30厘米,箱中水面高5厘米,放进一个棱 一个梯形的面积是70平方米,上底是5米,高是10米,求下底是多少米? 各种水果代表的含义?六月一日是儿童节,我们班决定做水果拼盘,能不能告诉我各种水果代表的含义啊?急.(要求:注意,不是生日蛋糕,如果是这种,我可以自己去找.) 一块三角形菜地的面积是0.3公顷,底是150米,它的高是多少米? 一个长方体水箱,从里面量长五十厘米,宽40厘米,深45厘米,箱中水面高10厘米,放进一个棱长是20厘米的正方体铁块后,铁块顶面高于水面.这时水面高多少厘米 一块梯形麦田,上底是600米,下底是400米,高是30米.这块麦田的面积是多少平方米?和多少公顷? 《满满一大杯牛奶》问题. 一个出身贫苦的男孩,为了积攒学费而挨家挨户地推销商品.  这天傍晚,他奔走了一整天,又累又渴又饿,可身上只剩下一毛钱.他决定向下一户人家讨一口饭吃. 梯形的面积是16.5平方米,高是3米,上底是8米,下底是多少米? 英语翻译蔬菜协会(用英语怎么说)英语翻译 一个梯想如果上底怎加5分面积增加5平方分米就成了平行四边形如果原梯形的上底是3分米那么梯形面积是多少 已知梯形的面积是100平方分米,高是8分米.这个梯形的上底与下底各是多少分米? 我不想买一些水果翻译 一瓶200ML的纯牛奶,我第一次喝了四分之一,加满水摇晃后,又喝了三分之一.这时瓶中剩下几毫升纯牛奶 一个梯形的面积是40平方分米,它的上下底和是8分米, 一个长方体水箱长80厘米,宽40厘米,高60厘米,箱面水面离箱口6厘米箱内有水多少升? 有三种盒装牛奶(200ml的2.5元 250ml的3元 190ml的2.2元)比较牛奶的净含量和售价,购买哪种更合算?急……………………急是不是用毫升除以钱数得出售价? 小丽要配制2200克巧克力奶,巧克力奶 水果店运来一些水果,菠萝的筐数比苹果少三分之二运来苹果24筐,运来的菠萝比苹果少多少筐?2、水果店运来一些水果,苹果的筐数比菠萝少三分之二,运来苹果24筐,运来的菠萝多少筐? 购买哪种牛奶比较合算 第一盒 :200ml 2.5元 第2盒 :380ml 3.8元 第3盒 :1l 9元 一个梯形,上底是12分米,下底减少2分米,就变成一个面积为36平方分米的平行四边形.梯形的面积是多少?我知道咋列式子 水果店运来一些水果.菠萝的筐数比苹果少4分之1.运来菠萝15框,运来苹果多少筐?(方程解) 直角三角形的底为6分米,求这个梯形的面积! 一个梯形的面积是4.2平方分米,它的下底与一个平行四边形的底边相等,高等于平行四边形的高,四边形面积 一个三角形图形,三角形面积是0.6公顷,底长300米,有多大? 个底为6分米,高为15分米的直角三角形右侧对接上一个梯形,拼成了一个平行四边形,求这个梯形的面积.以五年级的公式写出来行么? 一个长120厘米,宽60厘米的长方体水箱里,放入一块铁块后,水面就比原来上升2厘米,铁块的体积是多少? 一瓶色拉油有5升. 这句话对吗 用两个完全一样的梯形拼成一个平行四边形.梯形的底是18分米,高是9分米,梯形的面积是多少? 一个提醒上下底之和是36分米,是高的4倍,这个梯形的面积是( )平方分米 一个面积是2.4公顷的三角形苗圃,底边长1200米,高是多少米? 在底6米,高15米的直角三角形右侧接上一个直角梯形形成平行四边形,求梯形的面积 一个梯形上底乘高得36平方分米,下底乘高得84平方分米.这块梯形的面积是( )平方分米. 一个面积是2.4公顷的三角形苗圃,底边长1200米,高是多少米 下图石油两个完全一样的梯形拼成的平行四边形.已知每个梯形的面积是240平方米,梯形的高是多少分米?阴影部分的梯形,上底是5分米,下底是25分米 上图是由两个完全一样的梯形拼成的平 糖果店要调制5500千克巧克力奶糖他的巧克力和奶的质量比是2:9.需要巧克力和奶各多少千克? 一瓶大可乐有几升?一瓶纯净水有几毫升?家用电饭煲的容量是几升?纯净水,就是矿泉水,1.50元 的多少升啊? 一种牛奶每箱25元,现在甲乙两家商店,甲按九折出售,乙商店买10送1,哪家的牛奶便宜?这个问题没有告诉要买多少东西,题就是这样的,并不是我没写.我也为这个问题苦恼, 一个梯形的面积是24平方分米,上底和下底的和是8分米,那么高是多少分米? 一般色拉油的容量是多少? 一个梯形的面积是68.4平方分米上、下底之和是36分米,这个梯形的高是多少厘米? 一个梯形的面积是120平方分米,上底是9分米,下底是15分米,它的高是多少分米?用列方程计算说错了是用字母和数字计算 一个长50厘米,宽40厘米,高30厘米的长方体水箱,水深20厘米.如果放入一块棱长10厘米的正方体石块,那么水箱里的水面将上升多少厘米?(列式解答) 一个梯形的上底与下底的平均长度是30厘米,这个梯形的面积是多少平方分米? 一个梯形的面积是120平方分米,高是8dm.这个梯形的上底和下底的和是()dm. 霍华德 凯利医生所写的“医药费——一杯满牛奶”是什么意思? 一个长方体水箱,从里面量长40厘米,宽30厘米,深30厘米,箱中水面高10厘米,放进一个棱长20厘米的正方体后,铁块顶面仍高于水面,这时水面高多少厘米.(用方程解)今晚就要,求求各位大侠了,最 梯形的面积是120平方分米,高是8分米上底是多少分米 霍华德·凯利医生所写的一满杯牛奶什么意思 一个长方体水箱,长40厘米,宽20厘米,高30厘米,水深15厘米.现把一块棱长10厘米的正方体石块放入水中,问水箱现在的水的高度是多少? 一个梯形的面积是30平方分米,它的上底6分米,下底是9分米高是多少分米?(列方程解答)有两题在一幅地图上,用12厘米长的线段,求这幅地图的比例尺.谢谢锅位了. 霍华德·凯莉医生所写的“医药费: 小清要调试2.2千克巧克力奶,需要巧克力和牛奶各多少千克?(巧克力与奶的质量比是2:9) 一个梯形的面积是50平方分米,高是4分米,下底是15分米,这个梯形的上底是多少分米?(列方程解答)救命啊! 为什么霍华德.凯利能成为一位大名鼎鼎的医生 小青要调制2200克巧克力奶,需要巧克力和奶各多少克 香油勾兑配方
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn