adoquery1.SQL.add('select czy_dmid , czy_kl from xs_czy where czy_dmid='+ combobox1.Text +'and czy_kl ='+ edit1.Text );
我想法是用SQL语句来判断和COMBOBOX和EDIT与表里字段的值相匹配。
请问有其他什么办法,请快点告诉我
急~~~~~~~~

解决方案 »

  1.   

    错了吧?字符串需要引号!adoquery1.SQL.add('select czy_dmid , czy_kl from xs_czy where czy_dmid='''+combobox1.Text+'''and czy_kl ='''+edit1.Text+'''');
      

  2.   

    如果这样用SQL语句,需要先在程序中对字符串本身所含有的单引号进行屏蔽!
      

  3.   

    原来在这
    我看是
    SQLScript:=Format('Select * from PresentTable where %s = "%s"', [combobox1.Text, Edit1.Text]);
      

  4.   

    adoquery1.SQL.add('select czy_dmid , czy_kl from xs_czy where czy_dmid=:value1 and czy_kl =:value2');
    adoquery1.SQL.parambyname('value1').value:=combobox1.Text;
    adoquery1.SQL.parambyname('value2').value:=edit1.Text ;
      

  5.   

    yczyk的方法较严谨和灵活......
      

  6.   

    adoquery1.SQL.add('select czy_dmid , czy_kl from xs_czy where czy_dmid='+ QuotedStr(combobox1.Text) +'and czy_kl ='+ QuotedStr(edit1.Text) );不管你有多少撇号都行
      

  7.   

    我已写好了一个屏蔽单引号和相应规范的字符转换的Function, 请参考:
    function ChangeStarChar(sourStr : string): string ;
    var
         i : integer;
    begin
      sourStr:=StringReplace(sourStr,'_','[_]',[rfReplaceAll]);
      sourStr:=StringReplace(sourStr,'"','""',[rfReplaceAll]);
      sourStr:=StringReplace(sourStr,'''','',[rfReplaceAll]);
      while  pos('*',sourStr)>0 do
        sourStr[pos('*',sourStr)]:='%' ;
      result:=sourStr;
    end;
    当使用SQL语句前,做好一些准备工作
    var
      str1, str2: string;
    begin
      str1 := ChangeStarChar(combobox1.Text);
      str2 := ChangeStarChar(edit1.Text);
    ........
      adoquery1.SQL.add('select czy_dmid , czy_kl from xs_czy where czy_dmid='''+str1+'''and czy_kl ='''+str2+'''');
    .......
    end;
    我想这应该是你想要的结果吧?
      

  8.   

    我想我知道了''''可以表示为{'}
    原来可以
    adoquery1.sql.clear;
    adoquery1.sql.add('select czy_dmid , czy_kl from xs_czy');
    adoquery1.sql.add('where czy_dmid="'+ combobox1.Text +'"'+'and czy_kl ="'+ edit1.Text+'"' );
    我后来想到在SQL里边'和"好像是一个意思。
      

  9.   

    使用Format,比用+号效率高又好理解,容易阅读
    adoquery1.sql.add(Format('Select * from PresentTable where %s = "%s"', [combobox1.Text, Edit1.Text]));
      

  10.   

    如果你怕出錯的話你可以這樣寫不過比較麻煩
    sql.add('select * from ****.db where field1='''+edit1.text+'''');
    sql.add('and field2='''+combobox1.text+'''');
    ....
    open;
    這樣子好看又比較不會出錯.