在查询时,如何处理英文字段问题(30分)

  • 主题发起人 主题发起人 3hsoft
  • 开始时间 开始时间
3

3hsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
我正在使用Interbase6数据库,因IB6不能使用中文字段名,
因此编程时,我如何使用对应的中文字段名,因使用者使用的是儍瓜程序.

如:我有一个表1,字段有:
ID CHINESENAME ADDRESS TITLE ....
在数据查询时,我想使用ComboBox1控件,当用户下拉时,看到的是
编号
姓名
地址
职位
....

而不是
ID
CHINESENAME
ADDRESS
TITLE
....

并且查询时,当我选择“姓名”时,相应的语名应为:
Select * from tablename where chinesename like ......

是否要建一个表专门用于存放数据表的信息,如:
TableName ChineseFieldName EnglishFieldName Type ....
在查询时对此表进行操作。但是否这种方法太过愚蠢。

各位老兄有否好的方法?
 
如果一定要看中文,那么你一定要做个对照表,当然这个表可以是写在数据库里面的,
也可以是建在程序里的一个数组。
 
如果字段不是很多的话,可以在程序里写死,比在建一个表相对简单一些
如:
case combobox1.itemindex of
0:
str:='ID'
1:
.......
 
当然不用了,你完全可以在显示字段名的数据集控件里设置每个字段的displaylable属性
当然如果你用数据模块可以直接在每个FIELD对象里写,然后就是你在显示下拉框中用程序
显示每个FIELD的DISPLAYLABLE。而用户选一个你自己用程序得到当前他选的是第几个?
然后当前它选的就是fields
eg:
yourdataset:Tquery/.....
list:tlistbox;
....
i=0;
while i<yourdataset.fields.count do
begin
list.add(yourdataset.fields.displaylable);
i:=i+1;
end;

然后在list的onchange事件里写
now_field_name=yourdataset.fields[list.indexitem];
 
//对不起,刚才白写了,分特!
当然不用了,你完全可以在显示字段名的数据集控件里设置每个字段的displaylable属性
当然如果你用数据模块可以直接在每个FIELD对象里写,然后就是你在显示下拉框中用程序
显示每个FIELD的DISPLAYLABLE。而用户选一个你自己用程序得到当前他选的是第几个?
然后当前它选的就是fields
eg:
yourdataset:Tquery/.....
list:tlistbox;
....
i=0;
while i<yourdataset.fields.count do
begin
list.add(yourdataset.fields.displaylable);
i:=i+1;
end;

然后在list的onchange事件里写
now_field_name=yourdataset.fields[list.indexitem];
 
破网,我每次都白写了?
当然不用了,你完全可以在显示字段名的数据集控件里设置每个字段的displaylable属性
当然如果你用数据模块可以直接在每个FIELD对象里写,然后就是你在显示下拉框中用程序
显示每个FIELD的DISPLAYLABLE。而用户选一个你自己用程序得到当前他选的是第几个?
然后当前它选的就是fields
eg:
yourdataset:Tquery/.....
list:tlistbox;
....
i=0;
while i<yourdataset.fields.count do
begin
list.add(yourdataset.fields.displaylable);
i:=i+1;
end;

然后在list的onchange事件里写
now_field_name=yourdataset.fields[list.indexitem];
 
//接上面
while i<yourdataset.fields.count do
begin
list.add(yourdataset.fields.displaylable);
i:=i+1;
end;

然后在list的onchange事件里写
now_field_name=yourdataset.fields[list.indexitem];





 
哎,出问题了,总之原理就那样,按殊顺序将yourdataset.fields的displaylable属性赋给tlistbox
,在listbox的onchange事件里得到now_column_name:=yourdataset.fields[listbox.itemindex]
 
另建立一个表+dblookup
 
我觉得象你这种情况,字段不多最好用
CASE语句,象robertcool写的那样,但
必须先定义一个变量,在CASE语句中用
来保存字段名:
var temp:string;
begin
case combox1.itemindex of
0:begin
temp :=djfld;//给变量付值
end;
1:begin
temp :=djfld;//给变量付值
end;
3:begin
end;
....
但愿你在BOMBOX 中放的不是字段值
 
多人接受答案了。
 
如:
DBGrid1.Fields[0].displaylabel:='商品编号'
 
后退
顶部