各位高手:
    您们好!
    在delphi环境下,用adoquary 控件查询包括多个表的记录,select语句超过255个字节,程序报错,该如何解决,请高手指点!谢谢!

解决方案 »

  1.   

    'select * from table '+#13
    +' where ……'+#13
    +' and ……';
      

  2.   

    adoquary.sql.text:=adoquary.sql.text+'and (超长的语句)';
      

  3.   

    把SQL语句分一下,分成两部分,
    adoquary.sql.text:='少于255个SQL语句';
    adoquary.sql.text:=adoquary.sql.text+'and (超长的语句)';
      

  4.   

    //定义SQL语名变量procedure TForm1.Button1Click(Sender: TObject);
    var str1:string;
    begin
      str1:='select * from 表名'
      str1:=str1+' where 字段名='条件值'';
      //还有的话继续写str1:=str1+...
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add(str1);
      adoquery1.Open;
    end;
      

  5.   

    可以直接这样写:Str := 'Select * from table1 ' +
      ' where .....'   +
      ' and ......' +
      ' order by .....'
    即直接在后面用+连接即可
      

  6.   

    不建议使用 3-5楼的方案,这样写的是可以,但调试时得到的sql语句太长,可读性极差,应该写的时候就进行好断句,以后调试时才容易理解,否则过一段时间连自己都看不懂
      

  7.   

    6楼和3-5楼一样,  我晕呀,你都一个星了,你这种句子有几十行加起来,在sql查询器里怎么调呀!
      

  8.   

    自由界面和报表的完美解决方案!
    http://www.anylib.com
      

  9.   

    to: zsjzwj(北极熊) 
    你的方法,固然可以,但不能否认别人方法!
    你不会是写程序总是想着在sql查询器调吧,
    即使在里面调也没关系,你在sql查询器中截断分行也未尝不可!
      

  10.   

    to  hqhhh(枫叶) :    有时一句sql 就有一两屏,多达几千字符,自己截的话,一句就要用一个小时呀!还要考虑嵌套、多重嵌套,那么这句话调好要多久? 
        sql语句如果发生错误,用sql查询器调是最方便快捷的,不是吗?
      

  11.   

    Str := 'Select * from table1 ' +
      ' where .....'   +
      ' and ......' +
      ' order by .....'
    这样写是可以的,如果"有时一句sql 就有一两屏,多达几千字符,自己截的话,一句就要用一个小时呀!还要考虑嵌套、多重嵌套"
    那就在adoquery1.sql.add(str)之前加上一句:edit1.text:=str;或者直接输出到文本(比如日志),然后拷出来调试,找出错误再回去改源代码说起来麻烦,调起来很简单,我们一直都是这么做的
      

  12.   

    真不知道什么系统需要多达几千字符的sqL
      

  13.   

    adoquary有这问题?
    超过255个字节会报什么错?
      

  14.   

    sql.clear;
    sql.add('.....');
    sql.add('.....');
    sql.add('.....');
    sql.add('.....');写多少字都可以,sql是个Tstrings类。
      

  15.   

    To: zsjzwj(北极熊)
    -----------
        有时一句sql 就有一两屏,多达几千字符,自己截的话,一句就要用一个小时呀!还要考虑嵌套、多重嵌套,那么这句话调好要多久? 
        sql语句如果发生错误,用sql查询器调是最方便快捷的,不是吗?
    ------------------- sql语句如果发生错误,用sql查询器调是最方便快捷的,这个是不可否认的!
     但 如果一句sql 有一两屏,多达几千字符,如果再不考虑用视图或存储过程之类写,就不可思议了!
      

  16.   

    我的工作环境是delphi+mssql2000, 程序的代码中几乎有一半是sql语句,有时处理复杂的数据逻辑时几十上百行一句的sql语句一但出现错误,调试就是非常复杂的一个工作了。特别不是自己写的,如果可读性不好,就更晕了。
      

  17.   

    楼主你还想borland德源代码改了不成!如果可以改那应该就...
    哈哈哈
      

  18.   

    谢谢大家的讨论!存储过程我不熟悉,我还是想用断句的方式来写SQL 语句,用sql查询器调试,不失为一种比较好的方法,本人在实际编程经常用到。