********关于数据的显示问题*****************(100分)

  • 主题发起人 主题发起人 fhuibo
  • 开始时间 开始时间
F

fhuibo

Unregistered / Unconfirmed
GUEST, unregistred user!
SQLSERVER2000 数据库<br>我有一个人员表(A001) (字段是不固定的,用户可以增加字段)<br>姓名 &nbsp;编号 &nbsp;性别 &nbsp;民族<br>张三 &nbsp;01 &nbsp; &nbsp; 1 &nbsp; &nbsp; 01<br>李四 &nbsp;02 &nbsp; &nbsp; 2 &nbsp; &nbsp; 02<br>还有一个代码表(sr_code)<br>类别 &nbsp;代码 &nbsp;描述<br>AX &nbsp; &nbsp; 1 &nbsp; &nbsp; 男<br>AX &nbsp; &nbsp; 2 &nbsp; &nbsp; 女<br>AE &nbsp; &nbsp; 01 &nbsp; &nbsp;汉族<br>AE &nbsp; &nbsp; 02 &nbsp; &nbsp;回族<br>AE &nbsp; &nbsp; 03 &nbsp; &nbsp;满族<br>AC &nbsp; &nbsp; 01 &nbsp; &nbsp;健康<br>AC &nbsp; &nbsp; 02 &nbsp; &nbsp;一般<br>。。。。。<br><br>请问怎么用 DBGrid 显示数据<br><br>当用户自己在A001 表中增加一个字段 健康状况 并指定代码为 AC <br>又怎么显示。(用户还可以增加其他字段)
 
你这个是叫做 &nbsp;行列转换 &nbsp;问题 ,查以前老贴,bbs里面无法查了,用g.cn ,baidu.com
 
DBGrid不要预设任何东内容,只要与用来查询数据的TADOQuery关联就可以了,然后就是全玩SQL语句了,SQL语句查到什么结果,它就显示什么内容,所有显示的字段都是“动态”增加。<br>你这种字典表的设计方式会让SQL语句写起来很复杂,如果是分散的字典表,语句就可以简单一些,我已经三年没写SQL语句了,容我重新温习一下……
 
大量数据时,关联太多,查询很慢的.
 
这是一个内联接查询,如果A001中有字典表中不存在的代码,该记录就不会被列出。<br>每当要增加一个字段的关联时,就要多一句select字句。你试试看吧,我这里已经运行通过了。<br><br>select A001.姓名, A001.编号, tmpGender.描述 as 性别, tmpNation.描述 as 民族 from A001, <br>&nbsp; (select 代码, 描述 from src_code where 类别 = 'AX' ) tmpGender, <br>&nbsp; (select 代码,描述 from src_code where 类别='AE') tmpNation <br>where<br>&nbsp; (A001.性别 = tmpGender.代码) and (A001.民族 = tmpNation.代码)<br>order by A001.编号
 
用一个固定的SQL语句进行不固定次数的关联,这样比较复杂.<br>我觉得你可以这样,有一个界面,可以编辑SQL语句.当然是用一个界面,例如打两个勾,或拖拉,等简单的操作.你在后面根据用户的操作生成SQL语句,然后将生成的SQL语句保存起来,每次调用.
 
我想你的人员表的字段名和代码表的类别字段一定有关联,那么在SqlServer上写一个自定义的函数根据人员表的字段名和值,取显示值。
 
select a.编号,b.描述,c.描述,d.描述<br>from &nbsp; a001 a,st_code b,sr_code c,sr_code d<br>where &nbsp;a.性别=b.代码<br>and &nbsp; &nbsp;a.民族=c.代码<br>and &nbsp; &nbsp;a.健康状况=d.代码<br>...
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
676
SUNSTONE的Delphi笔记
S
S
回复
0
查看
652
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部