是下面这两句有问题吧:
parameters[1].value:=datetimepicker1.Datetime;
parameters[2].value:=datetimepicker2.datetime;
是不是两个参数的类型不正确,导致日期值没穿过去。或者检查存储过程中@Date1,@Date2的初始值,是不是值不对,导致循环没执行。

解决方案 »

  1.   

    parameters[1].asdatetime:=datetimepicker1.Datetime;
    parameters[2].asdatetime:=datetimepicker2.datetime;
      

  2.   

    CREATE PROCEDURE pro_delete (@goodsn varchar (12),@date1 datetime,@date2 datetime) 
    AS declare @t datetime
    select @t=@date1
    delete from da_date
    while @t<=@date2 
    begin
    insert da_date ([goodsn],[impdat])
    values(@goodsn,@t)
    select @t=dateadd(day,1,@t)
    endDELPHI中的调用:
    with dm.ADOQuery1 do
    begin
      Close;
      Sql.Clear;
      Sql.Text := 'EXECUTE pro_delete(:goodsn,:date1,:date2)';
      Parameters.ParamByName('goodsn').DataType := ftString;
      Parameters.ParamByName('goodsn').Value    := TRIM(Edit1.Text);
      Parameters.ParamByName('Date1').DataType := ftDateTime;
      Parameters.ParamByName('Date1').Value    := DateTimePicker1.DateTime;
      Parameters.ParamByName('Date2').DataType := ftDateTime;
      Parameters.ParamByName('Date2').Value    := DateTimePicker2.DateTime;
      ExecSQL;
    end;
      

  3.   

    @date1,@date2参数无初始值,,两个参数的类型都是datetime型的,没有类型不对到底是什么问题,大家帮帮忙,很急
      

  4.   

    既然你在分析器里调试成功,应该是delhpi的问题再检查一下参数的顺序是否正确?
      

  5.   

    Datetimepicker1.datetime指的是yyyy-mm-dd hh:mm:ss 的时间格式
      过程里并不严格是这样的,可能是yyyy-mm-dd 这样就会出现一条记录都找不到的情况,也就不能添加了.
      

  6.   

    lianghu(山人):
    没有asdatetime的属性genphone_ru(票票):
    我运行之后,系统报错说:Line1:incorrect syntax near @P1
    可是我怎么也找不到参数@P1,这是怎么回事
      

  7.   

    ADOQuery的DataBase指向对不对呢?
      

  8.   

      Sql.Text := 'EXECUTE pro_delete :goodsn,:date1,:date2';
    测试过了,可以的!
      
      

  9.   

    adoquery是通过一个统一的adoconnection连接的,没有错
    不是的,不能运行,系统报错说,@P1, 可是我的程序和存储过程里都没有@P1
      

  10.   

    genphone_ru(票票):
    谢谢,已经可以了,为什么用ADOSTOREDPRO调用不可以,用ADOQUEYR就可以呢,12点结帐欢迎大家讨论
      

  11.   

    问题出在这里:set @t=@date1
    delete from da_date
    while @t<=@date2 应该是:
    set @t=@date1
    delete from da_date
    while OneDateTimeField<=@date2 and OneDateTimeField>= @t
    吧 
      

  12.   

    在Parameter中,第0个Value是返回值,你的存储过程的参数从第1个Value开始。
    看看是不是设得不对...在设计期先看一看那几个Parameters,实在不行用
    Parameters.ParamByName('@...').Value来做,别忘了前面加上@号
      

  13.   

    回复人: genphone_ru(票票):
    已经解决了,谢谢你,为什么用adostoredpro调用传递参数不行,要用adoquery才行呢,我12点结贴欢迎讨论
      

  14.   

    楼上的:
    解释一下 OneDateTimeField的意思
      

  15.   

    对啊,V_Lucky(Lucky)
    按照我写的存储过程,你指的OneDatetimeField是什么
    不懂,
    追加50分,欢迎来讨论
    我将迟点结贴
      

  16.   

    insert into tablename(...) values(...)
      

  17.   

    用ADOStoreProc的话,你可能是没有指定参数的类型。
    应该是可以的。
      

  18.   

    我觉得好象代码没有问题啊你不妨在代码相应的地方用@@rowcount 或 @@error检查一下看看insert 操作有没有执行仔细调试吧
      

  19.   

    to genphone_ru(票票)
    参数的类型我都是指定为DATETIME,
    所有我觉得很奇怪,应该是很容易调用的一个存储过程为什么就是用adostroeproc调用不了
      

  20.   

      parameters.ParamByName('@aa').Value:=TRIM(edit1.text);
      parameters.ParamByName('@d1').value:=datetimepicker1.Datetime;
      parameters.ParamByName('@d2').value:=datetimepicker2.datetime;
      

  21.   

    OK拉,怎么用parameters[0]赋值不行
    一定得用parameters.ParamByName('@aa')赋值,这是奇怪