急求!!为什么总是提示"至少一个参数没有被指定制"??? ( 积分: 50 )

  • 主题发起人 主题发起人 ouchuanlong
  • 开始时间 开始时间
O

ouchuanlong

Unregistered / Unconfirmed
GUEST, unregistred user!
var
sqltext1:string;
items1,items2,items3,items4,items5:string;
str1,str2,str3,str4,str5:string;
strtext:string;
begin
items1:=ComboBox1.Text;
items2:=combobox2.Text;
items3:=ComboBox3.Text;
items4:=combobox4.Text;
items5:=combobox5.Text;


if ComboBox1.Text='所有' then str1:='1'
else str1:='0';
if ComboBox2.Text='所有' then str2:='1'
else str2:='0';
if ComboBox3.Text='所有' then str3:='1'
else str3:='0';
if ComboBox4.Text='所有' then str4:='1'
else str4:='0';
if ComboBox5.Text='所有' then str5:='1'
else str5:='0';
strtext:=str1+str2+str3+str4+str5;
if strtext='00000' then
sqltext1:='select 姓名,工作内容,技术职责,项目名称,设计阶段,sum(加班工时) as 加班工时,sum(正常工时) as 正常工时,sum(工时) as 总工时 from ';
sqltext2:='(select 姓名,工作内容,技术职责,项目名称,设计阶段,iif(加班=''是'' ,工时) as 加班工时, iif(加班='' '',工时) as 正常工时, 工时 from sheet1)';
sqltext3:='where 姓名='''+items1+''' and 工作内容='''+items2+''' and 项目名称='''+items3+''' and 设计阶段='''+items4+''' and 技术职责='''+items5+''' and 起止日期 between :Date1 and :Date2 group by 姓名,工作内容,技术职责,项目名称,设计阶段';

ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add(SqlText1);
ADOQuery2.SQL.Add(SqlText2);
ADOQuery2.SQL.Add(SqlText3);
ADOQuery2.Parameters.ParamByName('Date1').Value := formatdatetime('yyyy-m-d',DateTimePicker1.Date);
ADOQuery2.Parameters.ParamByName('Date2').Value := formatdatetime('yyyy-m-d',DateTimePicker2.Date);
ADOQuery2.open;

end;
 
var
sqltext1:string;
items1,items2,items3,items4,items5:string;
str1,str2,str3,str4,str5:string;
strtext:string;
begin
items1:=ComboBox1.Text;
items2:=combobox2.Text;
items3:=ComboBox3.Text;
items4:=combobox4.Text;
items5:=combobox5.Text;


if ComboBox1.Text='所有' then str1:='1'
else str1:='0';
if ComboBox2.Text='所有' then str2:='1'
else str2:='0';
if ComboBox3.Text='所有' then str3:='1'
else str3:='0';
if ComboBox4.Text='所有' then str4:='1'
else str4:='0';
if ComboBox5.Text='所有' then str5:='1'
else str5:='0';
strtext:=str1+str2+str3+str4+str5;
if strtext='00000' then
sqltext1:='select 姓名,工作内容,技术职责,项目名称,设计阶段,sum(加班工时) as 加班工时,sum(正常工时) as 正常工时,sum(工时) as 总工时 from ';
sqltext2:='(select 姓名,工作内容,技术职责,项目名称,设计阶段,iif(加班=''是'' ,工时) as 加班工时, iif(加班='' '',工时) as 正常工时, 工时 from sheet1)';
sqltext3:='where 姓名='''+items1+''' and 工作内容='''+items2+''' and 项目名称='''+items3+''' and 设计阶段='''+items4+''' and 技术职责='''+items5+''' and 起止日期 between :Date1 and :Date2 group by 姓名,工作内容,技术职责,项目名称,设计阶段';

ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add(SqlText1);
ADOQuery2.SQL.Add(SqlText2);
ADOQuery2.SQL.Add(SqlText3);
ADOQuery2.Parameters.ParamByName('Date1').Value := formatdatetime('yyyy-m-d',DateTimePicker1.Date);
ADOQuery2.Parameters.ParamByName('Date2').Value := formatdatetime('yyyy-m-d',DateTimePicker2.Date);
ADOQuery2.open;

end;
 
总是提示“至少一个参数没有被指定制”,不知道是什么原因?,很急,谢谢各位达人了
分不够再加:)
 
自己顶一下
谢了
 
是不是formatdatetime('yyyy-m-d',DateTimePicker1.Date)在提取参数的时候有问题,
你自己试着改改看看
 
出错的是在这里:
ParamByName('Date1').Value :=
你的Date1是一个变量,但你这样写的话就是‘date1’字符串了
应该是:
ParamByName(Date1).Value :=
又或者是:
ADOQuery2.Parameters[0].Value := formatdatetime('yyyy-m-d',DateTimePicker1.Date);
ADOQuery2.Parameters[1].Value := formatdatetime('yyyy-m-d',DateTimePicker2.Date);
 
我刚学的,能告诉我怎么改吗,谢谢
 
去试试吧
ADOQuery2.Parameters[0]就是第一个变量date1
ADOQuery2.Parameters[1]就是第二个变量date2
 
if strtext='00000' then
sqltext1:='select 姓名,工作内容,技术职责,项目名称,设计阶段,sum(加班工时) as 加班工时,sum(正常工时) as 正常工时,sum(工时) as 总工时 from ';
如果strtext不等于'00000',sqltext1是什么呢?
 
ADOQuery2.Parameters.ParamByName('Date1').Value := quotedstr(formatdatetime('yyyy-m-d',DateTimePicker1.Date));
ADOQuery2.Parameters.ParamByName('Date2').Value := quotedstr(formatdatetime('yyyy-m-d',DateTimePicker2.Date));
 
来自:scs1120, 时间:2005-7-12 8:42:25, ID:3131365
去试试吧
ADOQuery2.Parameters[0]就是第一个变量date1
ADOQuery2.Parameters[1]就是第二个变量date2
----------------------------------------------------------
还是提示'至少一个参数没有被指定值'
 
来自:Walnut_Tom, 时间:2005-7-12 8:44:04, ID:3131369
ADOQuery2.Parameters.ParamByName('Date1').Value := quotedstr(formatdatetime('yyyy-m-d',DateTimePicker1.Date));
ADOQuery2.Parameters.ParamByName('Date2').Value := quotedstr(formatdatetime('yyyy-m-d',DateTimePicker2.Date));
-------------------------------------------------------------------------------
还是提示'至少一个参数没有被指定值'
 
来自:lichengbin, 时间:2005-7-12 8:42:31, ID:3131366
if strtext='00000' then
sqltext1:='select 姓名,工作内容,技术职责,项目名称,设计阶段,sum(加班工时) as 加班工时,sum(正常工时) as 正常工时,sum(工时) as 总工时 from ';
如果strtext不等于'00000',sqltext1是什么呢?
------------------------------------------------------------------------
我没有全部贴完strtext的各种情况,太多了,其他的都差不多
 
来自:lichengbin, 时间:2005-7-12 8:42:31, ID:3131366
if strtext='00000' then
sqltext1:='select 姓名,工作内容,技术职责,项目名称,设计阶段,sum(加班工时) as 加班工时,sum(正常工时) as 正常工时,sum(工时) as 总工时 from ';
如果strtext不等于'00000',sqltext1是什么呢?
--------------------------------------------------------------------------------
其他情况我用{}括起来了,都是用if then 来写的
 
自己顶一下
 
单就你写的CODE看不出问题,建议 Tools -- Debugger options -- integrated debugging 开启,然后逐行检查吧,应该不难找出问题
 
我只所以那么问,就是怀疑楼主你的sqltext1可能不是你期望的值,if ... then 如果这些条件都不满足的话,就没有赋值,就是初始的空字符串,那你这个SQL查询当然就会出一些稀奇古怪的错误。其实非常简单的,在ADOQuery2.open;这一句设个断点,运行时看一下ADOQuery2.SQL.Text的值不就知道SQL对不对啦。
如果是满足 if strtext='00000' then 的sqltext1和sqltext2,sqltext3,那么这个SQL语句是没有问题的。
 
后退
顶部