按表B的字段名称配置实现表A的中文字段标题显示?
如果是客户端的DBgrid里,我的应用都是这么干的,只是用ini配置内容取代表B:
[vwtktask]
0.ColWidth=48
0.DisplayLabel=附件数量
0.Index=ffilecount
0.Visible=1
1.ColWidth=83
1.DisplayLabel=最后更新时间
1.Index=flast
1.Visible=1
10.ColWidth=64
10.DisplayLabel=类别
10.Index=ftype
10.Visible=1
11.ColWidth=141
11.DisplayLabel=跟进人
11.Index=fauthor
11.Visible=1
12.ColWidth=148
12.DisplayLabel=责任人
12.Index=fwho
12.Visible=1
13.ColWidth=52
13.DisplayLabel=删除标志
13.Index=fdeleted
13.Visible=1
2.ColWidth=156
2.DisplayLabel=任务
2.Index=fprj
2.Visible=1
3.ColWidth=177
3.DisplayLabel=工作内容
3.Index=fname
3.Visible=1
4.ColWidth=22
4.DisplayLabel=ID
4.Index=fid
4.Visible=0
5.ColWidth=70
5.DisplayLabel=启动日期
5.Index=fstart
5.Visible=1
6.ColWidth=76
6.DisplayLabel=计划完成时间
6.Index=fwillstop
6.Visible=1
7.ColWidth=76
7.DisplayLabel=实际完成时间
7.Index=fstop
7.Visible=1
8.ColWidth=154
8.DisplayLabel=工作情况
8.Index=fmemo
8.Visible=1
9.ColWidth=58
9.DisplayLabel=状态
9.Index=fstate
9.Visible=1
FieldCount=14
Last=2008-09-08 15:25:09.203

解决方案 »

  1.   

    try:
    declare @sql varchar(8000)
    set @sql=''select @sql=',['+xmmc+']='+id from Bset @sql='select '+stuff(@sql,1,1,'')+' from A'exec(@sql)
      

  2.   


    --生成测试数据
    create table A(nk1 int,nk2 int,nk3 int)
    insert into A select 700,500,300    
    insert into A select 800,400,600 
    create table B(id varchar(10),xmmc varchar(10))
    insert into B select 'nk1','岗位工资'
    insert into B select 'nk2','金额'    
    insert into B select 'nk3','工龄'    
    go--动态SQL处理
    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+',['+xmmc+']='+id from B
    set @sql='select '+stuff(@sql,1,1,'')+' from A'
    exec(@sql)--执行结果
    /*
    岗位工资        金额          工龄          
    ----------- ----------- ----------- 
    700         500         300
    800         400         600
    */
    go--删除测试数据
    drop table A,B
    go
      

  3.   

    select nk1 岗位工资,    nk2  金额,  nk3 工龄 from ta
      

  4.   

    如果是sql,需求有点特别,可以这样:select nk1,nk2,nk3 from (
    select 0 fo,(select xmmc from b where id='nk1') nk1,(select xmmc from b where id='nk2') nk2,(select xmmc from b where id='nk3') nk3
    union all
    select 1,* from a
    ) a 
    order by fo
      

  5.   


    这样也可以
    create table #A(nk1 int,nk2 int,nk3 int)
    insert into #A select 700,500,300    
    insert into #A select 800,400,600 
    create table #B(id varchar(10),xmmc nvarchar(10))
    insert into #B select 'nk1',N'gwgz'
    insert into #B select 'nk2',N'je'    
    insert into #B select 'nk3',N'gn'    
    godeclare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+','+id+' '+xmmc from #B
    print @sqlset @sql='select '+stuff(@sql,1,1,'')+' from #A'
    print @sql
    exec(@sql)