在delphi中当我用sql语句查询时,总是提示我的字符串数据右截位,请教一下怎样解决这个问题呢??

解决方案 »

  1.   

    你测试一下,字符串先用memo.lines.add()
    然后query.text:=memo.text
    然后执行,能执行么?
      

  2.   

    把你的sql语句提取出来直接拿到数据库端执行看能否成功,如果也是不行说明是SQL语句的问题,需要修改SQL语句,反之就是dlephi加载的问题,sql语句太长了,分割一下逐个add进去执行xxx.sql.add('select xxxxxx')//不要超过256
    xxx.sql.add('where xxxxxx')
    xxx.sql.add('group by xxxxxx')
      

  3.   

    如果是oracle 数据库 ,那么oralce 有自带的左截字符串函数leftstr(string,count);//左起
    和右截字符串函数rightstr(string,count);//右起
    如果要在delphi 中进行处理就要使用copy('字符串',1,10) 函数, 含义是从左往右取一个字符串前10个字节
      

  4.   

    还有,在问一句,如果是象hellolongbin(一个人[年长资深少男]) 所说是sql 语句太长,存在转行,那么就要用字符串进行动态sql 语句的拼接.
      

  5.   

    以下是我delphi中的代码:
    adoquery1.SQL.Clear;
    adoquery1.SQL.Add('select * from customer_loan where(customer_id=:a and loan_pak_no=:b and card_type=:c)');
     adoquery1.Parameters[0].Value:=Edit4.Text;
     adoquery1.Parameters[1].Value:=Edit5.Text;
     adoquery1.Parameters[2].Value:=ComboBox2.Text;
     adoquery1.Open;
    问题是:ComboBox2.Text的赋给adoquery1.Parameters[2].Value后,adoquery1.Parameters[2].Value的内容确是乱码,不知怎么回事??然后提示说字符串数据右截位,怎么解决这个问题呢?望大家多多指教!
      

  6.   

    adoquery1.SQL.Clear;
    adoquery1.SQL.Add('select * from customer_loan where(customer_id=:a and loan_pak_no=:b and card_type=:c)');
     adoquery1.Parameters[0].Value:=trim(Edit4.Text);
     adoquery1.Parameters[1].Value:=trim(Edit5.Text);
     adoquery1.Parameters[2].Value:=trim(ComboBox2.Text);
     adoquery1.Open;
    试试看,另外,注意card_type字段类型.
      

  7.   

    SQL绝对没有超长。楼主:把异常给出的错误串全贴出来吧?其中应该有错误代码,这样好确认一点。
    还有,card_type的类型是什么?如果是非串类型,转换一下试试。如:整型的话,adoquery1.Parameters[2].Value := StrToInt(ComboBox2.Text);
    ComboBox2.Text 的内容无论是什么都会错吗?出错时的串是什么?
      

  8.   

    是不是Combobox2.text的长度超出了字段Card_type设定的长度?