string connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection objConnection = new SqlConnection(connString);
        objConnection.Open();        SqlCommand strSQL = new SqlCommand("UP_ReceiptBankView_search", objConnection);
        strSQL.CommandType = CommandType.StoredProcedure;        SqlParameter FId = strSQL.Parameters.Add("@FId", SqlDbType.Int);
        FId.Value = Convert.ToInt32(DDLFiliale.Text);
        FId.Direction = ParameterDirection.Input;        SqlParameter StartTime = strSQL.Parameters.Add("@StartTime", SqlDbType.DateTime);
        StartTime.Value = Convert.ToDateTime(TBStartTime.Text);
        StartTime.Direction = ParameterDirection.Input;        SqlParameter EndTime = strSQL.Parameters.Add("@EndTime", SqlDbType.DateTime);
        EndTime.Value = Convert.ToDateTime(TBEndTime.Text);
        EndTime.Direction = ParameterDirection.Input;
        SqlParameter HValue = strSQL.Parameters.Add("@HValue", SqlDbType.Int, 32);
        HValue.Direction = ParameterDirection.Output;        SqlDataReader objDataReader = strSQL.ExecuteReader(CommandBehavior.CloseConnection);        GridView1.Visible = true;
        PTotal.Visible = true;       
        int abc;
        abc=Convert.ToInt32(strSQL.Parameters["@HValue"].Value) ;        Response.Write(abc);
        //LBTotal.Text = abc;
        this.GridView1.AllowSorting = false;
        this.GridView1.AllowPaging = false;
        GridView1.DataSource = objDataReader;
        GridView1.DataBind();        objConnection.Close();
USE [Excellent8]
GO
/****** 对象:  StoredProcedure [dbo].[UP_ReceiptBankView_search]    脚本日期: 02/12/2009 11:03:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[UP_ReceiptBankView_search]@FID int,
@StartTime datetime,
@EndTime datetime,
@HValue int outputas
set @HValue=(select sum(RMB) as HValue1 
from [ReceiptBankView] where (Time1   between   @StartTime   and   @EndTime) and (FID=@FID ) and (win=1)
 GROUP BY Fid )select * from [ReceiptBankView] where (Time1   between   @StartTime   and   @EndTime) and (FID=@FID ) and (win=1) ORDER BY [Time1] DESC
go

解决方案 »

  1.   

    select sum(RMB) as HValue1 
    from [ReceiptBankView] where (Time1   between   @StartTime   and   @EndTime) and (FID=@FID ) and (win=1)
     GROUP BY Fid
    这个单独运行一下,看看是什么东西
      

  2.   

    abc=Convert.ToInt32(strSQL.Parameters["@HValue"].Value) ;
    你把上面那一行换成abc=HValue.value 再试一次。。
      

  3.   

    select @HValue=sum(RMB) as HValue1 
    from [ReceiptBankView] where (Time1   between   @StartTime   and   @EndTime) and (FID=@FID ) and (win=1)
     GROUP BY Fid )
      

  4.   

    set @HValue=(select sum(RMB) as HValue1 
    from [ReceiptBankView] where (Time1   between   @StartTime   and   @EndTime) and (FID=@FID ) and (win=1)
     GROUP BY Fid )这样子 写 @HValue的值  是 ()里面的select子句的 返回值
    这样子写
    select @HValue=sum(RMB)
    from [ReceiptBankView] where (Time1  between  @StartTime  and  @EndTime) and (FID=@FID ) and (win=1) 
    GROUP BY Fid ) 
      

  5.   

    还有就是不要用ExecuteReader 
    用ExecuteNonQuery();
      

  6.   

    我的这个数据是绑定GridView的啊
      

  7.   

    你可以这样 ,声明一个dataset,然后用 SqlDataAdapter把数据给fill进dataset里面去,再用dataset来绑定,girdview,这样一定会取出来的。。
      

  8.   

    girdview现在可以显示出数据
    但是计算的合计值出来不了~!
      

  9.   

    那么一定就是的sql出问题了。vs 2005可以对存储过程设断点的,你可以试一下。
    你可以按照6楼说的,先试一下。
      

  10.   

    好像那个OutPut参数是不用加 @的吧???
    SqlParameter HValue = strSQL.Parameters.Add("@HValue", SqlDbType.Int, 32);
            HValue.Direction = ParameterDirection.Output;
    ("@HValue",  >>("HValue", 
      

  11.   

    用 ExecuteReader 执行带有 输出参数 的 sql或者sp, 需要先关闭当前的 DataReader 才能访问 输出参数 !因此,你的代码可能需要变化》SqlDataReader objDataReader = strSQL.ExecuteReader(CommandBehavior.CloseConnection);        GridView1.Visible = true;
            PTotal.Visible = true;       
            int abc;
            // abc=Convert.ToInt32(strSQL.Parameters["@HValue"].Value) ; // 此时 objDataReader 还没 close 是无法访问到 output param 的        //Response.Write(abc);
            //LBTotal.Text = abc;
            this.GridView1.AllowSorting = false;
            this.GridView1.AllowPaging = false;
            GridView1.DataSource = objDataReader;
            GridView1.DataBind();       objDataReader.Close();
           abc=Convert.ToInt32(strSQL.Parameters["@HValue"].Value) ; // 此时 objDataReader 已 close 
           Response.Write(abc);
      

  12.   

    改成那个双向的试试,好像是inputout
      

  13.   

    Jinglecat 
    的方法是对的
    我刚测试过了
    也非常感谢dolphin683 的热情
    谢谢大家,问题已解决
    结贴了