一个关于BCB中如何在运行中设置ADOStoredProc控件的问题
我用SQL SERVER写了一个存储过程:
create procedure yu
@begindate datetime,
@enddate datetime
as
select distinct row_number() over(partition by date order by date) as ID,
@begindate as approvedate,count(*) over() as approvedatenumber
from calendar
where date>@begindate and date<@enddate and datetype=1
group by date,datetype
go
里面有两个输入参数@begindate和@enddate。
我想用ADOStoredProc控件在运行中来执行这个存储过程,我写了以下代码:
void __fastcall TForm1::Button7Click(TObject *Sender)
{
ADOStoredProc1->Close();
ADOStoredProc1->ProcedureName="yu";
ADOStoredProc1->Prepared=true;
ADOStoredProc1->Parameters->ParamByName("@begindate")->Value="2013-02-08";
ADOStoredProc1->Parameters->ParamByName("@enddate")->Value="2013-02-25";
ADOStoredProc1->Open();
}
可是在执行时点击Button7,提示@begindate参数没有发现。
如果我在添加ADOStoredProc控件的时候提前设置好ProcedureName和Prepared的属性,不在运行时设置,将上面红色代码删除,单击按钮可以执行。
请问各位高手们,这是怎么回事啊,为什么在运行时进行设置就会出问题啊
[解决办法]
Refresh一下就可以了
ADOStoredProc1->ProcedureName="yu";
ADOStoredProc1->Refresh();
ADOStoredProc1->ProcedureName = "yu";
ADOStoredProc1->Parameters->Refresh();
ADOStoredProc1->Parameters->ParamByName("@begindate")->Value = "2013-02-08";
ADOStoredProc1->Parameters->ParamByName("@enddate")->Value = "2013-02-25";
ADOStoredProc1->Open();