一个TAdoQuery控件,sql语句是insert...   values(:v1,...),其中一个参数是日期类型的,如何给这个日期类型的参数赋空值? 
if   V_CBRQ < > " "   then 
begin 
      StrToDate(V_CBRQ); 
      ADOQuery_Insert.Parameters.ParamValues[ "V_CBRQ "]   :=   StrToDate(V_CBRQ); 
end   
else   
      ADOQuery_Insert.Param.Parameters.ParamByName( "V_CBRQ ").Value   :=   null; 
置为null后,ADOQuery_Insert.ExecSQL就报错       

解决方案 »

  1.   

    以上else语句抄错了,
    else       
       ADOQuery_Insert.Parameters.ParamByName('V_CBRQ').Value := null;   
    问题依旧
      

  2.   

    "V_CBRQ   "]这里应该是: 'v_cbrq'注意是单引号
    关于日期的赋值要看数据库的类型. 
      

  3.   

    else 后面的是() 也应该改为['v_cbrq'].value
      

  4.   

    又抄错了,不是引号的问题。我现在问的是怎么给insert语句的param赋空值
      

  5.   

    我都是交到后台或直接在后台,我用(CASE WHEN V_CBRQ = ''' + ''' THEN NULL ELSE ''' + V_CBRQ  + ''' END);直接在存储过程里写用单引号
      

  6.   

    我那个语句的语法正确,但执行结果不对,不是tmanje说的问题
      

  7.   

    (CASE   WHEN  ''' + V_CBRQ + '''  =   " " "   +   " " "   THEN   NULL   ELSE   " " "   +   V_CBRQ     +   " " "   END)
      

  8.   

    我的sql是在ADOQuery中写好了的,我不想这样拼字符串,难道没有其他办法吗
    其实我只想实现日期类型字段参数赋空的问题
      

  9.   

    比较简单,
    定义一个varient变量,不需要对varietn变量初始化,此时将为null值.
    我在delphi5中已经用了多次.var 
         v_date:varient;
    begin
         .....
         .....
         ADOQuery_Insert.Parameters.ParamValues[   "V_CBRQ   "]  := v_date; 
         ...
        
    end;
      

  10.   

    我的应用是这样的:
    从一个excel中顺次取单元格数据,赋到insert的ADOquery控件中。var   
              v_date:varient; 
    begin 
              ..... 
              ..... 
              ADOQuery_Insert.Parameters.ParamValues[       "V_CBRQ       "]     :=   v_date;   
              ... 
            
    end; 
    我也是这样写的,但是我发现当日期值取出来的为空时,
    ADOQuery_Insert.Parameters.ParamValues["V_CBRQ"]     :=   v_date;本身没问题,但是
    ADO控件insert时就报错了