SQLServer 2000+ADO
看这条语句正确吗?
'Insert Into Prescription values('':PrescID'', :Status, :Time, :Money)';
Parameters.ParamByName('PrescID').Value:= 'abc';    //char(10)
Parameters.ParamByName('Status').value:= False;     //bit
Parameters.ParamByName('Time').value:= Now;         //DataTime
Parameters.ParamByName('Money').value:= singleMoney;//Money由于PrescID是Char(10)类型的字段。
还有DataTime,bit和Money类型的字段可以这样使用参数吗
有这方面的中文资料也很感谢!!!

解决方案 »

  1.   

    'Insert Into Prescription values(:PrescID, :Status, :Time, :Money)';
      

  2.   

    同样可以使用的
    with AdoQuery1 do 
    begin
      Close;
      Sql.Clear;
      Sql.Add('Insert Into Prescription values(:PrescID, :Status, :Time, :Money)');
      Parameters.ParamByName('PrescID').Value:= 'abc';    //char(10)
      Parameters.ParamByName('Status').value:= False;     //bit
      Parameters.ParamByName('Time').value:= Now;         //DataTime
      Parameters.ParamByName('Money').value:= singleMoney;//Money
      Prepared;
      Open;
    end;
      

  3.   

    但PrescID是Char(10)类型的字段
    应该需要引号('')的吧
    我是不是要把
    Parameters.ParamByName('PrescID').Value:= 'abc';  
    改为:
    Parameters.ParamByName('PrescID').Value:= '''abc''';
      

  4.   

    对于参数查询是不需要的,
    'Insert Into Prescription values('':PrescID'', :Status, :Time, :Money)';
    改为
    'Insert Into Prescription values(:PrescID, :Status, :Time, :Money)';
      

  5.   

    'Insert Into Prescription values(:PrescID, :Status, :Time, :Money)';
      

  6.   

    执行时用EXECSQL而不要用OPEN
    OPEN只有在SELECT时才用
      

  7.   

    1(:PrescID, :Status, :Time, :Money)可能和你的字段顺序不一致
    2 Parameters.ParamByName('PrescID').Value:= 'abc';    //char(10)
      而你的赋值为3字节
      

  8.   

    是的,应该用ExecSql {:[
    是不需要再额外加引号的///------------------
    但提示:截断字符串或者二进制数据将
    没见过,但你要注意字符串的大小问题