开发数据库应用程序,Delphi是当之无愧的好!我简直是爱死她了
我在Delphi入门与精通上看到一个东东,开始没在意,后来变通一下,嘿嘿……很实用哦
在我现在开发的应用程序中,没一个不用它的,方便快捷……
作用:
编码->名称解释(转换不受字段长度限制),有很多方法,诸如:用lookupfield或直接用sql或用canvas等,但我用的是tfields的ongettext方法,呵呵……也许有哪位仁兄用过,这里再提提加深一点印象哈
是这样的:
假设我有一个主表(employee:员工表)和一个编码表(bmzw:职务)
employee:
xm-----员工姓名
zw-----职务
……………………
bmzw:
bm-----职务编码
mc-----职务汉字说明
现在我们要做的是查询所有员工的情况(employee),职务代码(zw)用户肯定读不懂,所以怎样把employee中的zw字段显示成bmzw中bm字段相对应的mc字段内容呢?
我的解决方法是这样的:
//------query1:查询主表 query2:查询编码表
//------button1:查询
//查询编码表
procedure TForm1.FormCreate(Sender: TObject);
begin
query1.fieldbyname('zw').OnGetText:=Query1zwGetText;//**********//
query2.close;
query2.sql.text:='select * from bmzw';
queyr2.open;
end;
//***释放
procedure TForm1.FormDestroy(Sender: TObject);
begin
query1.fieldbyname('zw').ongettext:=nil;
end;
//查询主表
procedure TForm1.Button1Click(Sender: TObject);
begin
query1.close;
query1.sql.text:='select * from employee';
query1.open;
end;
//ongetext过程(employee.zw->bmzw.mc)
procedure TForm1.Query1zwGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
//此处是关键
if query2.locate('bm',sender.asstring,[]) then
text:=query2.fieldbyname('mc').asstring
else
text:=sender.asstring;
end;
暂时就这么多了,赶快试试吧……可能讲的不清楚,过段时间再说,并且把所有的方法都写上
我在Delphi入门与精通上看到一个东东,开始没在意,后来变通一下,嘿嘿……很实用哦
在我现在开发的应用程序中,没一个不用它的,方便快捷……
作用:
编码->名称解释(转换不受字段长度限制),有很多方法,诸如:用lookupfield或直接用sql或用canvas等,但我用的是tfields的ongettext方法,呵呵……也许有哪位仁兄用过,这里再提提加深一点印象哈
是这样的:
假设我有一个主表(employee:员工表)和一个编码表(bmzw:职务)
employee:
xm-----员工姓名
zw-----职务
……………………
bmzw:
bm-----职务编码
mc-----职务汉字说明
现在我们要做的是查询所有员工的情况(employee),职务代码(zw)用户肯定读不懂,所以怎样把employee中的zw字段显示成bmzw中bm字段相对应的mc字段内容呢?
我的解决方法是这样的:
//------query1:查询主表 query2:查询编码表
//------button1:查询
//查询编码表
procedure TForm1.FormCreate(Sender: TObject);
begin
query1.fieldbyname('zw').OnGetText:=Query1zwGetText;//**********//
query2.close;
query2.sql.text:='select * from bmzw';
queyr2.open;
end;
//***释放
procedure TForm1.FormDestroy(Sender: TObject);
begin
query1.fieldbyname('zw').ongettext:=nil;
end;
//查询主表
procedure TForm1.Button1Click(Sender: TObject);
begin
query1.close;
query1.sql.text:='select * from employee';
query1.open;
end;
//ongetext过程(employee.zw->bmzw.mc)
procedure TForm1.Query1zwGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
//此处是关键
if query2.locate('bm',sender.asstring,[]) then
text:=query2.fieldbyname('mc').asstring
else
text:=sender.asstring;
end;
暂时就这么多了,赶快试试吧……可能讲的不清楚,过段时间再说,并且把所有的方法都写上