ADOQuery1.SQL.ADD如下declare @partner varchar(100)
declare @saleman varchar(100)set @partner = :业务单位
set @saleman = :业务员insert 业务员收益表(销售流水,收益名称,金额,
日期,业务员编号,业务单位编号)
select  0,:收益名称,:金额,:日期,
(select top 1 编号 from 业务人员表 where
 cast(编号 as varchar(10)) like @saleman
 or 姓名 like @saleman
 ),
 (
 select top 1 单位编号 from 业务单位表 where
 cast(单位编号 as varchar(10)) like @partner
 or 单位名称 like @partner
 )
SQL探查器监视到结果居然如下exec sp_executesql N'declare @partner varchar(100)
declare @saleman varchar(100)
set @partner = @P1
set @saleman = @P2insert 业务员收益表(销售流水,收益名称,金额,
日期,业务员编号,业务单位编号)
select  0,@P3,@P4,@P5,
(select top 1 编号 from 业务人员表 where
 cast(编号 as varchar(10)) like @saleman
 or 姓名 like @saleman
 ),
 (
 select top 1 单位编号 from 业务单位表 where
 cast(单位编号 as varchar(10)) like @partner
 or 单位名称 like @partner
 )', N'@P1 varchar(4),@P2 text,@P3 varchar(6),@P4 varchar(4),@P5 float', '三江', '', '承兑汇', '1000', 3.859636995857640e+004'三江'实际输入的是'三江公司';承兑汇,应该是承兑汇票.
为什么数据会发生如此变化?

解决方案 »

  1.   

    给ADOQuery1赋参数后的SQL可以查看到吗?
      

  2.   

    adoquery1.parameters.parambyname('业务单位).size:=length('三江公司')
    adoquery1.parameters.parambyname('业务单位').value:='三江公司'
    在为参数赋值时改成这样试试.
      

  3.   

    我遇到过,用ADO会有这样的情况,如果用BDE不会,原因是ADO用的语句中不能同时出现两条以上的参数名,即使是传同一个数,也要把参数名设为不同才可以!楼主可以试试
      

  4.   

    adoquery1.parameters.parambyname('业务单位').value:='三江公司'