以下 的SQL语句 在VB环境中对 SQL SERVER 2000 数据库 进行查询时出错,显示“Isnull 函数要求2个参数”;但是同样的语句, 在VB环境中对 ACCESS 2003 数据库(两个数据库的表的内容是一样的) 进行查询时却能正常运行。
请大家帮忙解决这个问题,谢谢大家!
Sql = "select 合同编号,IIF(isnull(结算金额) or 结算金额='',合同金额,结算金额) as 工程造价,IIF(isnull(结算金额) or 结算金额='','合同价','结算价') as 造价性质,备注  from 数据集 where 所属项目  like '%" & MyTxt & "%' "

解决方案 »

  1.   

    isnull(结算金额)         结算金额 is null
      

  2.   

    谢谢!上述代码中  IIF(isnull(结算金额) or 结算金额='',合同金额,结算金额) as 工程造价  想要查询的是:如果 结算金额 字段 为“空”或“NULL”,则选取 合同金额 字段,否则选取 结算金额 字段。
    在 VB 环境 中对 SQL SERVER 2000 数据库进行这样的查询,代码应该如何写?谢谢大家!
      

  3.   

    select
    case
    when isnull(结算金额,'')='' then 合同金额
    else 结算金额
    end  as 工程造价 
    from ....应该是这样吧
      

  4.   

    请教大家:NULL 与 “空” 是否是一回事??谢谢!
      

  5.   

    谢谢楼上的朋友。问题是以下代码应该没有问题的,而且在VB环境对ACCESS数据库进行查询时可以正常运行。但在VB环境对SQL SERVER 数据库进行查询时就出错了。
    应该如何解决这个问题?谢谢大家!
    Sql = "select 合同编号,IIF(isnull(结算金额) or 结算金额='',合同金额,结算金额) as 工程造价,IIF(isnull(结算金额) or 结算金额='','合同价','结算价') as 造价性质,备注  from 数据集 where 所属项目  like '%" & MyTxt & "%' "
      

  6.   

    同意 Leftie(左手,为人民币服务):isnull(结算金额,合同金额)
    你在程序里面连接ACCESS数据库用Jet引擎,支持iif(,,)和isnull()函数
    而SQL Server里面不支持 只能用select...case...和 isnull( , )
      

  7.   

    ACCESS和SQL server中的SQL语句是不一样的。上面大家说的都很清楚了,你试试啊。
    SQL server不要用iif,直接isnull(结算金额,0)就行了
      

  8.   

    isnull和is null是2个不同的命令,isnull需要2个参数,意思是将指定字段为null的记录替换成指定的字符,而is null是判断某条具体记录上某1字段是否为null
    另NULL不是空的意思
    根据楼主的意思应该是
    Sql = "select 合同编号,IIF(is null(结算金额) or 结算金额='',合同金额,结算金额) as 工程造价,IIF(is null(结算金额) or 结算金额='','合同价','结算价') as 造价性质,备注  from 数据集 where 所属项目  like '%" & MyTxt & "%' "
    你可以试试,另外介绍你用命令的参考途径,去看SQL的联机丛书,会有帮助的
      

  9.   

    access的SQL语法与SQLSERVER的SQL语法稍有差别,不可直接套用
    楼主要求可case when ...end 法实现:
    Sql = "select 合同编号,工程造价=Case when isnull(结算金额) then 合同金额 when not isnull(结算金额) then 结算金额 end, 备注  from 数据集 where 所属项目  like '%" & MyTxt & "%' "
      

  10.   

    在操作access中的:
    x=IsNull(M)  if(M==null) x=true else x=false在SQL200中的:
    x=IsNull(M,0) if(M==null) x=0 else x=M
      

  11.   

    VB中才有IIF函数,SQL中没有吧 ,晕
      

  12.   

    Sql = "select 合同编号,工程造价=Case when isnull(结算金额) then 合同金额 when not isnull(结算金额) then 结算金额 end, 备注  from 数据集 where 所属项目  like '%" & MyTxt & "%' "   
    同样会出现同样的错误提示,请大家帮忙再改正错误,谢谢大家!
      

  13.   

    正确写法(如果[结算金额] 为无效值或 [结算金额] 为空,则取 [合同金额] 的值):Sql = "select 合同编号,Case when 结算金额 is null or 结算金额='' then 合同金额 else 结算金额 end as 结算金额, 备注  from 数据集 where 所属项目  like '%" & MyTxt & "%' "