一个表有学历,姓名等字段,但都是以字母命名的字段名如学历为xueli,姓名为xingming等,现在想利用一 combobox,在其下拉框中有汉字——学历,姓名等。
如果想combobox选取“学历”时就按学历排序,选取姓名时就按“姓名”排序,怎么实现这个方法呢?希望高手能提供个简便而有快速的代码!
如果想combobox选取“学历”时就按学历排序,选取姓名时就按“姓名”排序,怎么实现这个方法呢?希望高手能提供个简便而有快速的代码!
解决方案 »
- 问一个串口实时处理数据遇到的冲突问题Spcomm
- 在dbgrid中鼠標屏蔽
- xml在IE控件中显示的问题?
- 如何在浏览选择文件夹时创建文件夹?
- ██████★武汉的高手请进来★██████
- 在窗口中绘图,我这样使用 bitblt 函数 为什么没有任何效果?
- 请问:如何实现邮件客户端对上次输入的账号信息的调用?
- 好急,怎样安装一个控件安装包里的某一个控件??控件高手HELP!
- 如何修改一个文件的创建日期和修改日期?急......
- if CurNode<>nil and CurNode.ImageIndex=2 then... 为什么不行?
- 希望与使用过APRO控件开发传真系统的朋友交流交流!!!在发送传真之前,给对方语音提示,这个“提示”你是怎么解决的???
- delphi中的pchar()表示什么意思?能详细解释一下吗?谢谢大家!!!
姓名if ComboBox1.ItemIndex=0 then
AdoQuery1.Sort:='学历 DESC' //按学历来排序,数据表中的字段假设为“学历”
else
AdoQuery1.Sort:='姓名 DESC' //按学历来排序,数据表中的字段假设为“姓名”
query1.close;
query1.sql.clear;
tempstr:='select * from 表名 'if Trim(ComboBox1.Text)='学历' then tempstr:=tempstr+' order by xueli 'if Trim(ComboBox1.Text)='姓名'then tempstr:=tempstr+' order by xingming '
query1.sql.add(tempstr)
query1.open;
这样就可以了啊!
1.用两个COMBOX,一个存汉字,一个存相对应的字段,显示汉字的那个,用户下拉时两个一起变动.
2.使用将汉字与字段写成一个Class(这个CLASS只有这二个属性),增加至TComobox.item.addobject(Class)
adoquery1.indexfieldnames='xueli'
else
if Trim(ComboBox1.Text)='姓名' then
adoquery1.indexfieldnames='xingming' ;
queryStr:String;
begin
if Trim(ComboBox1.Text)='学历' then
queryStr:='xueli'
else if Trim(ComboBox1.Text)='姓名' then
queryStr:='xingming' ;
aqry.SQL.Text:='select * from yourTable order by '''+queryStr+'''';
aqry.open;
end;
1、在窗体show的时候按照 :显示列名+ " |" + 字段名的格式添加到combox的项目中。注意空格多是为了将后面的英文字段名隐藏起来。
2、选择combox的项目时,用pos函数在combox的text中找"|"(也可以用别的字符,只要容易标记就行了),找到后,拷贝特殊字符后面的字符串。
3、table.sort = 拷贝出来的字符串这种发自很好的,俺一直这样用
procedure TForm1.ComboBox1Change(Sender: TObject);begin
query1.sql.clear;
query1.sql.add('select * from 表名 ');
if Trim(ComboBox1.Text)='学历' then
query1.sql.add('order by xueli ');
if Trim(ComboBox1.Text)='姓名'then
query1.sql.add('order by xingming ');
query1.close;
query1.open;end;