字符串的问题,已经缠了我好久了,请高手们帮忙解决一下啊

gou_xp 2006-04-22 12:56:37
var
str:string;

begin
str:='select sj01"人员编号",isnull(sum(sj05),0)"加款总额",count(*)"加款笔数" into #A from s_sj where sj12 like ''%加款'' group by sj01 select sj01"人员编号",isnull(sum(sj05),0)"减款总额",count(*)"减款笔数" into #B from s_sj where sj12 like ''%减款'' group by sj01 select sk01"人员编号",isnull(sum(sk05)/10,0)"消费总额",count(*)"消费笔数" into #C from s_sk group by sk01 select sd01"人员编号",sd14"卡中余额" into #D from s_sd select #D.人员编号,#A.加款总额,isnull(#B.减款总额,0) as 减款总额,isnull(#C.消费总额,0) as 消费总额,#D.卡中余额 into #T from #D inner join #A on #D.人员编号 = #A.人员编号 left join #B on #D.人员编号 = #B.人员编号 left join #C on #D.人员编号=#C.人员编号 select * from #T where 加款总额<>减款总额+消费总额+卡中余额';

"string"最多只能含有255个字符,可我的语句中已经超过了255,我该怎么办啊??
有没有比“string”功能更大一点的啊,在线等,大家帮帮忙啊
...全文
351 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellolongbin 2006-04-24
  • 打赏
  • 举报
回复
字符串最大可以到2G
gou_xp 2006-04-24
  • 打赏
  • 举报
回复
我也是这样做的哦,但是在点击button按扭时,就会报错的啊???
报错提示如下:
Project Project1.exe raised exception class ENoResultSet with message 'Error cresting cursor handle'.Process stopped.Use Step or Run to continue.
这是怎么了啊?我要怎么做啊?、请指点指点啊

语句在数据库中运行没有问题,
Jineral 2006-04-23
  • 打赏
  • 举报
回复
唉!
str:='select sj01"人员编号",isnull(sum(sj05),0)"加款总额", '+
'count(*)"加款笔数" into #A from s_sj '+
'where sj12 like ''%加款'' group by sj01 '+
'select sj01"人员编号",isnull(sum(sj05),0)"减款总额", '+
'count(*)"减款笔数" into #B from s_sj '+
'where sj12 like ''%减款'' group by sj01 '+
'select sk01"人员编号",isnull(sum(sk05)/10,0)"消费总额", '+
'count(*)"消费笔数" into #C from s_sk '+
'group by sk01 select sd01"人员编号",sd14"卡中余额" '+
'into #D from s_sd select #D.人员编号,#A.加款总额, '+
'isnull(#B.减款总额,0) as 减款总额, '+
'isnull(#C.消费总额,0) as 消费总额,#D.卡中余额 '+
'into #T from #D inner join #A on #D.人员编号 = #A.人员编号 '+
'left join #B on #D.人员编号 = #B.人员编号 '+
'left join #C on #D.人员编号=#C.人员编号 '+
'select * from #T where 加款总额<>减款总额+消费总额+卡中余额';

haha!
gou_xp 2006-04-22
  • 打赏
  • 举报
回复
哪位大哥,能否再把用+号的连接方法说详细点哦,这样做,可惜要报错的呀?、

是不是这样str:=''+''+''+''+''+'';
可惜要报错哦
gou_xp 2006-04-22
  • 打赏
  • 举报
回复
我把语句直接写在query1的属性sql中,可不可哦?我想可以,但我试了一下,运行时要报这样的错误:creating cursor handle
ZyxIp 2006-04-22
  • 打赏
  • 举报
回复
是代码编辑一行不能超过255.
你可以用+的方式呀.

是根本的解决办法:
1:将这样的语句保存在外部文件中,使用时载入.
2:用存储过程.
gou_xp 2006-04-22
  • 打赏
  • 举报
回复
唉,可惜我都试了,还是不得行哦
cuteant 2006-04-22
  • 打赏
  • 举报
回复
cuteant(今后只参与非技术区) ( ) 信誉:100 2006-04-22 13:25:00 得分: 0
默认情况下的string就是WideString
------
看错了,还以为是说AnsiString呢,默认的String是AnsiString
cuteant 2006-04-22
  • 打赏
  • 举报
回复
楼主提到的255问题应该是IDE的显示

将str截断就可以了
比如说str := 'abcdefghijklmn';
可以改为str := 'abcdefgh';
str := str + 'ijklmn';
laiqinghe 2006-04-22
  • 打赏
  • 举报
回复
strings
柯本 2006-04-22
  • 打赏
  • 举报
回复
用+就可以了:
str:='select sj01"人员编号",isnull(sum(sj05),0)"加款总额",count(*)"加款笔数" '+
+'into #A from s_sj where sj12 like ''%加款'' group by sj01 select '+
+'sj01"人员编号",isnull(sum(sj05),0)"减款总额",count(*)"减款笔数" into #B from '+
+'s_sj where sj12 like ''%减款'' group by sj01 select '+
+'sk01"人员编号",isnull(sum(sk05)/10,0)"消费总额",count(*)"消费笔数" into #C from '+
+'s_sk group by sk01 select sd01"人员编号",sd14"卡中余额" into #D from s_sd select '+
+'#D.人员编号,#A.加款总额,isnull(#B.减款总额,0) as 减款总额,isnull(#C.消费总额,0) '+
+'as 消费总额,#D.卡中余额 into #T from #D inner join #A on #D.人员编号 = '+
+'#A.人员编号 left join #B on #D.人员编号 = #B.人员编号 left join #C on '+
+'#D.人员编号=#C.人员编号 select * from #T where '+
+'加款总额<>减款总额+消费总额+卡中余额';
cuteant 2006-04-22
  • 打赏
  • 举报
回复
默认情况下的string就是WideString
踢踏 2006-04-22
  • 打赏
  • 举报
回复
或者用WideString类型
cuteant 2006-04-22
  • 打赏
  • 举报
回复
"string"最多只能含有255个字符
---------------
请问,这是谁告诉您的?有经过测试吗?

procedure TForm1.Button1Click(Sender: TObject);
var
Str: String;
begin
Str := 'a'; //1个'a'
Str := Str + Str + Str + Str + Str + Str + Str + Str + Str + Str; //10个'a'
Str := Str + Str + Str + Str + Str + Str + Str + Str + Str + Str; //100个'a'
Str := Str + Str + Str + Str + Str + Str + Str + Str + Str + Str; //1000个'a'
//Str := Str + Str + Str + Str + Str + Str + Str + Str + Str + Str; //10000个'a'
ShowMessage(Str);
end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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