零件號2k03085-00-001,是零件表(partlist)的主鍵
案號是2003085,是案件表(orderlist)的主鍵,有wwDblookupCombo1來顯示該字段
它們都含'03085'這個相同的字符串
我要通過從零件號的第2到第6位置的子字串與案件號的第2到第6位置的子字串相等作為查詢條件來進行查詢.
adoquery1.sql.add('select * from partlist where substr(零件號,2,6)=substr(wwDblookupComBo1.text,2,6) ');
這樣的sql語句應該怎麼寫//////////???????

解决方案 »

  1.   

    adoquery1.sql.add('select * from partlist where substr(零件號,2,6)=:p1');
    adoquery1.pamter.pamtervalues('p1'):=copy(wwDblookupComBo1.text,2,6);
      

  2.   

    可運行的時候報錯說'substr是未定義的函數'
    怎麼回事
      

  3.   

    我是照楼上的改的,不过应当可以解决问题:注意SQL中是subString啊adoquery1.sql.add('select * from partlist where substring(零件號,2,6)=:p1');
    adoquery1.pamter.pamtervalues('p1'):=copy(wwDblookupComBo1.text,2,6);
      

  4.   

    報錯'substr是未知的函數名';
    substr可是標準函數啊
    高手請指點一下.
      

  5.   

    adoquery4.sql.add('select * from partlist where substring(零件號,2,6)=:p1');
    adoquery4.Parameters.ParamByName('p1').value:=copy(wwDblookupComBo13.text,2,6);如上的寫法對嗎???
    運行沒有除錯,可是返回結果是一條記錄都沒有.
    跟預想的結果不一樣
      

  6.   

    将SubStr 或 SubString 改成 Mid试试。
      

  7.   

    改成midstr,加了strUtils到uses裡面
    還是一樣不出錯,但沒有返回結果
      

  8.   

    老兄呀:
    adoquery4.sql.add('select * from partlist where substring(零件號,2,5)=:p1');
    adoquery4.Parameters.ParamByName('p1').value:=copy(wwDblookupComBo13.text,2,5);
    SUBSTRING ( expression , start , length ),是LENGTH!!!!!
      

  9.   

    SUBSTRING ( expression , start , length )中的LENGTH是指从START开始,要截取的长度,而你的 2003085这个号你要读取第二位到第六位的话,就是截取了5位的长度,所以应该是
    SUBSTRING ( 零件號 , 2 , 5 ),而你写的SUBSTRING ( 零件號 , 2 , 6),所以得到的是空值了。
    明白了吗?去看看帮助。
      

  10.   

    一樣沒有結果返回我把substring()的參數改為substring(零件號,3,6),showmessage(copy(wwDblookupComBo13.text,3,6));顯示的是03085,如果是showmessage(copy(wwDblookupComBo13.text,2,5)),顯示的是00308,問題應該不在這裡的