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”功能更大一点的啊,在线等,大家帮帮忙啊

解决方案 »

  1.   

    "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;
      

  2.   

    默认情况下的string就是WideString
      

  3.   

    用+就可以了:
    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 '+
    +'加款总额<>减款总额+消费总额+卡中余额';
      

  4.   

    楼主提到的255问题应该是IDE的显示将str截断就可以了
    比如说str := 'abcdefghijklmn';
    可以改为str := 'abcdefgh';
            str := str + 'ijklmn';
      

  5.   

    cuteant(今后只参与非技术区) ( ) 信誉:100  2006-04-22 13:25:00  得分: 0  
    默认情况下的string就是WideString
    ------
    看错了,还以为是说AnsiString呢,默认的String是AnsiString
      

  6.   

    我把语句直接写在query1的属性sql中,可不可哦?我想可以,但我试了一下,运行时要报这样的错误:creating cursor handle
      

  7.   

    哪位大哥,能否再把用+号的连接方法说详细点哦,这样做,可惜要报错的呀?、是不是这样str:=''+''+''+''+''+'';
    可惜要报错哦
      

  8.   

    唉!
       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!
      

  9.   

    我也是这样做的哦,但是在点击button按扭时,就会报错的啊???
      报错提示如下:
          Project Project1.exe raised exception class ENoResultSet with message 'Error cresting cursor handle'.Process stopped.Use Step or Run to continue.
    这是怎么了啊?我要怎么做啊?、请指点指点啊
                    
    语句在数据库中运行没有问题,