List index out of bounds(1)!

gegangqiao 2003-05-28 04:44:32
我在使用存储过程的时候,使用了下面的语句:
where field1= case
when @a1='' then field1
else @a1 end
后,在DELPHI中使用存储过程这个数据源来打开数据库时,就会有提示List index out of bounds(1).不知道这里有没有人知道这是怎么回事,关且在括号中的数字可能是如果正确返回时的记录条数!
请帮忙!
...全文
307 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangzisiyun 2003-07-25
  • 打赏
  • 举报
回复
好像是越界了。看看是不是SQL语法有问题。
older 2003-07-25
  • 打赏
  • 举报
回复
单独执行存储过程,看有没有错;
我觉得应该是delphi中调用部分的错,从存储过程中看不出有什么问题。
shuixia 2003-05-29
  • 打赏
  • 举报
回复
其实这并不是因为数组从第几个下标开始的问题,下标为[0]的参数其实是一个返回值,我们不用给它赋值,但上面的问题我也有遇过,最后是我自己解觉的,兄弟们不妨试一下!
在你给参数赋值的时候不要使用数组的下标,而直接使用StoredProc的ParamsByName()这个属性来给参数赋值,这样就不会引起上面的问题!
microjuz 2003-05-28
  • 打赏
  • 举报
回复
风焱兄好像很强的样子,keke~~
mrtxc 2003-05-28
  • 打赏
  • 举报
回复
赞同 firetoucher(风焱)的看法
gegangqiao 2003-05-28
  • 打赏
  • 举报
回复
那只是WHERE 字句的后半段,前面的SELECT 子句没有抄下来!
blueshrimp 2003-05-28
  • 打赏
  • 举报
回复
晕,我都没写过这么长的程序
gegangqiao 2003-05-28
  • 打赏
  • 举报
回复
存计过程如下:-------------------------------------

t4.fdate >=isnull(@BEGDATE,t4.fdate) and t4.fdate <= isnull(@ENDDATE,t4.fdate)
--销售单号
-- and t4.fbillno >=isnull( @BILLNOS,t4.fbillno) and t4.fbillno <= isnull(@BILLNOE,t4.fbillno)
and t4.fbillno >= case
when @BILLNOS ='' THEN t4.fbillno
when @BILLNOS is null THEN t4.fbillno
when @BILLNOS = 'all' THEN '0'

else @BILLNOS end
and t4.fbillno <= case
when @BILLNOE ='' THEN t4.fbillno
when @BILLNOE is null THEN t4.fbillno
when @BILLNOE = 'all' THEN 'ZZZZZZZZZZ'
else @BILLNOE end
--客户税纳税号
and t1.ftaxnum = case when
@SWDJH ='' then t1.ftaxnum
when @SWDJH is null then t1.ftaxnum
when @SWDJH='all' then t1.ftaxnum
else @SWDJH end
--客户名称
and t1.fname= case when
@CLIENTN ='' then t1.fname
when @CLIENTN is null then t1.fname
when @CLIENTN = 'all' then t1.fname
else @CLIENTN end


还请各位帮忙!----------------------重分答谢!---------------
foreveryday007 2003-05-28
  • 打赏
  • 举报
回复
可能沒有返回記錄數
在你的程序代碼中又使用了
就會有以上錯誤信息
你查找類似這樣的代碼
......[i]
I是否 超出了?界的可能
mdf2008 2003-05-28
  • 打赏
  • 举报
回复
看看你的代码,,
RuinRice 2003-05-28
  • 打赏
  • 举报
回复
赞同 firetoucher(风焱)的看法
firetoucher 2003-05-28
  • 打赏
  • 举报
回复
1 你可以直接写field1=IsNUll(@a, field1)
2 不太懂你的意思,为什么会在where利用这样的语句
3 语句应该没有语法错误,可能是你其他的地方引用错误,把代码贴出来吧
crystaltam 2003-05-28
  • 打赏
  • 举报
回复
這種情況一般是給參數賦的值多于實際參數或都數據集沒有那么多字段

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧