如何动态的生成DBGRID每一条数据?(200分)

  • 主题发起人 主题发起人 不困
  • 开始时间 开始时间

不困

Unregistered / Unconfirmed
GUEST, unregistred user!
因为从数据库中取得的数据需要显示前进行转换,比如数据库中数据为1、2、3、4,但需要显示成为ONE、TWO、THREE、FOUR
所以请问大家如何用一个FOR循环动态加入到DBGRID中,显示出来?
 
在程序中加入procedure TBGetText(Sender: TField; var Text: String; DisplayText: Boolean);过程如下:
procedure TForm1.TBGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
//1.从Sender中取得数据;
//2.将转换后的值赋给Text;
end;

在你的DateSet取得数据后,动态指定:
MyTable.FieldByName('数据字段名').OnGetText := TBGetText;
 
通过字段的ongettext和onsettext事件对需要转换的数据进行控制
 
将GRID指向一个动态数据集,动态数据集中的数据可以由你自己生成即可.
 
可以用ADO组件或BDE组件的VCL(如:Table query)
 
xuejian:
你说的动态数据集该如何建立??
 
你是意思不就是用计算字段吗!

他们说的动态建立不就是动态查询吗!
 
我觉得最好不要用OnGetText和OnSetText,那样太慢也太麻烦了。其实在SQL语句中就
完全可以实现你想要的功能了。
DBGRID连接到TQuery中,不要用TTable。
下面的SQL语句就可以实现转换功能:(已经在SQL Server中通过了。)
SELECT USERID,USERNAME,(CASE REGIST WHEN 0 THEN 'FALSE' WHEN 1 THEN
'TRUE' ELSE 'UNKNOW' END) REGIST FROM tbUSER
 
query1.SQL.Clear;
query1.SQL.Add('select dealername,(CASE type WHEN 1 THEN "one" WHEN 2 THEN "two" WHEN 3 THEN "three" WHEN 4 THEN "four" )type from dealinfo');
这样??
 
还少一个end,应该是:
query1.SQL.Add('select dealername,
(CASE type WHEN 1 THEN "one" WHEN 2 THEN "two" WHEN 3 THEN "three"
WHEN 4 THEN "four" [Red]end[/Red] )
type from dealinfo');
 
不行啊。。
我用的是pradox数据库。。。
 
那就按上面的哥哥们的说法去做吧。
还要提醒你,快点放弃prodox吧!
 
同意hjb_dydd,简洁、效率高。
 
嘿嘿,
昨天刚刚弄懂了SQLserver的,放弃了破烂prodox!!!
谢谢各位~~再次感谢
 
后退
顶部