Application["AcademicYear"] 是否为空?

解决方案 »

  1.   

    你的SET @sql 里引用 变量了的,如:@ListName.
    你没有给这个变量指定值
    exec(@sql)时自然会报错,因为你执行的是一个带变量而未给值的SQL脚本
    你可以把变量值拼到SQL里去如:
    set @sql='select top 20 Number,StuName,Specialty,Class,AwardLevel,CollegeCheck,DepartmentCheck from ApplicationResult where LIstName='+@ListName+' and CollegeCode='+@CollegeCode+' and AcademicYear='+@AcademicYear
    注意各变量的类型,或许要进行适当的转化,你自己去处理...
    或者使用系统函数 sp_executesql 给参数指定值
    如何使用查SQL 联机帮助
      

  2.   

    代码里的参数名必须和存储过程里的参数名一致.如:
     Oda.SelectCommand.Parameters.Add("ListName", System.Data.OleDb.OleDbType.VarChar).Value = ddlListName.SelectedValue.ToString();那个"ListName"应该改为和存储过程中一致的"@ListName"
      

  3.   

    我按照sbqcel(空空儿)的方法做了,可还是报错,把变量值当成了列名,抱错找不到列名
      

  4.   

    代码里的参数名必须和存储过程里的参数名一致.如:
     Oda.SelectCommand.Parameters.Add("ListName", System.Data.OleDb.OleDbType.VarChar).Value = ddlListName.SelectedValue.ToString();那个"ListName"应该改为和存储过程中一致的"@ListName"
    上面对的```你添加参数的时候  变量名都是没加@符号````
      

  5.   

    肯定是你的@sql语句不正确了。在查询分析器中测试一下你赋值后的@sql。应该能找出问题