String literals may have at most 255 elements 何解???

dooluby 2003-10-20 03:17:35
小弟用Delphi 5.0 (Build 5.62)在Win2K编写了一个3层的程序,数据库用Oracle 8.15,不在本机。

客户端用SocketConnection、ClientDataSet、DataSource连接服务层。
服务端就只有Database1、Query、DataSetProvider。

在程序中有一个保存按钮,它的事件有这么一段代码:
ClientDataSet.CommandText:='insert into MMS_STOCKEQUIP(PINDEX,PNAME,PNAMENO,PTYPE,PMEASURERANGE,PVERACITYCLS,PFRACTNAME,PFACTORYNO,PLEAVEFACTDATE,PINITNO,PSTARTDATE,PNO,PSTOCLPLAC,PSTOCKPLACNO,PCHECKPLAC,PCHECKPLACNO,PCHECKCYC,PKINDNAME,PKIND,PSUBKINDNAME,PSUBKIND,PVALIDTIME)values('+tmpInsertstr+','''+strESPname+''','''+tmpESPnameNo+''','''+strESPtype+''','''+strESPmeasurerange+''','''+strESPveracitycls+''','''+strESPfractname+''','''+tmpESPfractnameNo+''',To_Date('''+strESPleavefactdate+''',''YYYY-MM-DD'''+'),'''+strESPinitno+''',To_Date('''+strESPstartdate+''',''YYYY-MM-DD'''+'),'''+strESPno+''','''+strESPstockplac+''','''+tmpESPstockplacNo+''','''+strESPcheckplac+''','''+tmpESPcheckplacNo+''','''+strESPcheckcyc+''','''+strESPkind+''','''+tmpESPkindNo+''','''+strESPsubkind+''','''+tmpESPsubkindNo+''',To_Date('''+strESPvalidtime+''',''YYYY-MM-DD'''+'))';

当我按下F9以后,编译器报错:
String literals may have at most 255 elements
Could not compile used unit 'aa.pas'

这是怎么回事呀??要怎么解决??

BTW:
如果我将上面的那个SQL语句中的字段改为:
ClientDataSet.CommandText:='insert into MMS_STOCKEQUIP(PINDEX,PNAME,PNAMENO,PTYPE,PMEASURERANGE,PVERACITYCLS,PFRACTNAME,PFACTORYNO,PLEAVEFACTDATE,PINITNO,PSTARTDATE,PNO,PSTOCLPLAC,PSTOCKPLACNO,PCHECKPLAC,PCHECKPLACNO,PCHECKCYC,PKINDNAME,PKIND,PSUBKINDNAME,PSUBKIND,)values('+tmpInsertstr+','''+strESPname+''','''+tmpESPnameNo+''','''+strESPtype+''','''+strESPmeasurerange+''','''+strESPveracitycls+''','''+strESPfractname+''','''+tmpESPfractnameNo+''',To_Date('''+strESPleavefactdate+''',''YYYY-MM-DD'''+'),'''+strESPinitno+''',To_Date('''+strESPstartdate+''',''YYYY-MM-DD'''+'),'''+strESPno+''','''+strESPstockplac+''','''+tmpESPstockplacNo+''','''+strESPcheckplac+''','''+tmpESPcheckplacNo+''','''+strESPcheckcyc+''','''+strESPkind+''','''+tmpESPkindNo+''','''+strESPsubkind+''','''+tmpESPsubkindNo+''')';

就不会出错,但是加上一个字段和这个字段的值就会出错。

救救偶吧。。。
...全文
1241 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dooluby 2003-10-20
  • 打赏
  • 举报
回复
to snowfog(秋风舞) 试过了,不行的。:)
yown 2003-10-20
  • 打赏
  • 举报
回复
我也遇到过,不过我用的是Adoquery,后来我把语句拆开分成几段,一段一段的赋值,可以通过。你可以想办法拆开喽!
snowfog 2003-10-20
  • 打赏
  • 举报
回复
可以把这段SQL拆为多段,每段存在一个字符串变量中,最后再将这些段加到一起赋给CommandText。
dooluby 2003-10-20
  • 打赏
  • 举报
回复
to tiexinliu(铁心刘),我用ShowMessage(IntToStr(Length(ClientDataSet.CommandText)))
的结果是421。

呵呵,我对存储过程不太了解,只好用笨办法了。

我用一个Insert+一个Updata来解决了。
tiexinliu 2003-10-20
  • 打赏
  • 举报
回复
用存储过程解决吧
tiexinliu 2003-10-20
  • 打赏
  • 举报
回复
delphi中字符串类型长度不能超过256,你看看是不是你ClientDataSet.CommandText的值长度是不是大于256
dooluby 2003-10-20
  • 打赏
  • 举报
回复
帮帮忙吧,我一直在线等。

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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