如标题!

解决方案 »

  1.   

    用“SELECT * FROM 临时表”产生一个记录集,再绑定记录集
      

  2.   

    这样和数据库的表绑定:Private Sub Form_Load()
    '工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)    Dim CN   As New ADODB.Connection                '定义数据库的连接
        Dim Rs   As New ADODB.Recordset
        CN.ConnectionString = "Provider=sqloledb;Data Source=pmserver;Initial Catalog=northwind;User Id=sa;Password=sa;"    CN.Open
        Rs.CursorLocation = adUseClient
        Rs.Open "select * from employees", CN, adOpenDynamic, adLockOptimistic
       Set DataGrid1.DataSource = Rs
    End Sub
      

  3.   

    但对于临时表,由于是生成的是在tempdb数据库中,而且名字是随机的
    所以绑定是不行的建议你绑定一个实实在在的表,而不是临时表
      

  4.   

    lihonggen0大师,请帮帮忙!但我是通过执行一个存储过程,将结果放到一个临时表里,然后将该临时表的数据绑定到DataGrid控件里,但无论如何都不行?
    附:存储过程代码:
    CREATE PROCEDURE [dbo].[fxlzs1]
    @mystring varchar(50), 
    @startday char(8),
    @endday char(8)
    ASselect substring(rtrim(flowlabel),14,3) as enginecode,
           
           count(measureworkid) as number into #o2_change
           from  changestatuslabel
           where storedate>=@startday and storedate<=@endday and substring(rtrim(flowlabel),14,3)=@mystring
           group by substring(rtrim(flowlabel),14,3)
           order by substring(rtrim(flowlabel),14,3)
    select substring(rtrim(flowlabel),14,3) as enginecode,
           
           count(measureworkid) as number into #o2_label
           from  enginelabelinfo
           where storedate>=@startday and storedate<=@endday and substring(rtrim(flowlabel),14,3)=@mystring
           group by substring(rtrim(flowlabel),14,3)
           order by substring(rtrim(flowlabel),14,3)insert #o2_label select * from #o2_change
    select enginecode,sum(number) as number 
           into #o2_labelinfo from #o2_label
           group by enginecode order by enginecodeselect substring(rtrim(flowlabel),14,3) as enginecode,
           count(repaircauseid) as number1 into #o2_change1 
           from  changestatuslabel
           where storedate>=@startday and storedate<=@endday and rtrim(repaircauseid)<>''
           and substring(rtrim(flowlabel),14,3)=@mystring
           group by substring(rtrim(flowlabel),14,3)
      --     having count(repaircauseid)>0
           --with rollup
           order by substring(rtrim(flowlabel),14,3)
    select substring(rtrim(flowlabel),14,3) as enginecode,
           count(repaircauseid) as number1 into #o2_label1  
           from  enginelabelinfo
           where storedate>=@startday and storedate<=@endday and rtrim(repaircauseid)<>''
           and substring(rtrim(flowlabel),14,3)=@mystring
           group by substring(rtrim(flowlabel),14,3)
    --       having count(repaircauseid)>0
           --with rollup
           order by substring(rtrim(flowlabel),14,3)
    insert #o2_label1 select * from #o2_change1select enginecode,sum(number1) as number1 into #o2_label1_1 from #o2_label1
           group by enginecode order by enginecodeselect l.enginecode,l.number,o.number1 as number1 
           into #o2_labelinfo1 from #o2_label1_1 o ,#o2_labelinfo l
           where l.enginecode=o.enginecode
    --       group by l.model,l.moment,l.number
           order by l.enginecode--insert o2_machine select * from #o2_labelinfo1 --temp where id>=@num and id<=@num1
    select m.enginecode as '机型代号',o.enginename as '机型名称',
           m.number as '测功台数', m.number1 as '返修台数',
           (rtrim(str((cast(m.number1 as decimal(11,3))/cast(m.number as decimal(11,3)))*100,4,1))+'%') as '返修百分比' 
           from #o2_labelinfo1 m,enginemodel o where m.enginecode=o.enginecode order by m.enginecode
    GO
      

  5.   


    在生成临时表的时候用##select * into ##tmp from 表名---------------------------------
    然后在客户端:    Dim CN   As New ADODB.Connection                '定义数据库的连接
        Dim Rs   As New ADODB.Recordset
        CN.ConnectionString = "Provider=sqloledb;Data Source=pmserver;Initial Catalog=bench;User Id=sa;Password=sa;"    CN.Open
        Rs.CursorLocation = adUseClient
        Rs.Open "select * from ##tmp", CN, adOpenDynamic, adLockOptimistic
        Set DataGrid1.DataSource = Rs这样就可以和临时表绑定的!----------------------------------#局部临时表的生命周期的会话!!##全局临时表的生命周期是全局的!
      

  6.   


    在生成临时表的时候用##select * into ##tmp from 表名---------------------------------
    然后在客户端:    Dim CN   As New ADODB.Connection                '定义数据库的连接
        Dim Rs   As New ADODB.Recordset
        CN.ConnectionString = "Provider=sqloledb;Data Source=pmserver;Initial Catalog=bench;User Id=sa;Password=sa;"    CN.Open
        Rs.CursorLocation = adUseClient
        Rs.Open "select * from ##tmp", CN, adOpenDynamic, adLockOptimistic
        Set DataGrid1.DataSource = Rs这样就可以和临时表绑定的!----------------------------------#局部临时表的生命周期的会话!!##全局临时表的生命周期是全局的!
      

  7.   

    lihonggen0大师,正如您所说。不能绑定临时表,因为结果集里是统计的数据,在客户端都可以统计,如果,在两个客户端同时统计同一个东西,但带入的参数不同,这样,会有问题吗?
    如有问题,该怎样解决呢?
      

  8.   

    在存储过程前加上
    set nocount on最后加上
    drop table #临时表名
    set nocount off
    在前台就可以得到记录集的多客户端也不会产生问题!