首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

一个关于BCB中怎么在运行中设置ADOStoredProc控件的有关问题

2013-06-25 
一个关于BCB中如何在运行中设置ADOStoredProc控件的问题我用SQL SERVER写了一个存储过程:create procedure

一个关于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();


请注意代码的细微差别。

热点排行