ZJID:=SDXT_CT.Selected.Text;
...................
 ST_ADOQ.SQL.Add('select TypeID AS 类型,TM AS 题目,CZ AS 出自章节 From XuanZeTi');
  ST_ADOQ.SQL.Add('where CZ=ZJID');
参数zjid没有默认值

解决方案 »

  1.   

    ST_ADOQ.SQL.Add('select TypeID AS 类型,TM AS 题目,CZ AS 出自章节 From XuanZeTi');
      ST_ADOQ.SQL.Add('where CZ='+QuotedStr(ZJID));
      

  2.   

    ST_ADOQ.SQL.Clear;
    ST_ADOQ.SQL.Add('select TypeID AS 类型,TM AS 题目,CZ AS 出自章节 From XuanZeTi');
      ST_ADOQ.SQL.Add('where CZ=:ZJID');ST_ADOQ.Parameters.ParamByName('ZJID').Value := ZJID;
    ST_ADOQ.Open;
      

  3.   

    一个是where前面必须要有一个空格,你的没有;
    第二个是要对参数赋值:
    ST_ADOQ.SQL.Add(' where CZ=:ZJID');
    ST_ADOQ.Parameters.ParamByName('ZJID').Value := ZJID;
      

  4.   

    (1)关于空格问题:
    因为每ADD一次sql语句就增长一次,如果where前面没有空格的话,那这句SQL语句就成了:
    select TypeID AS 类型,TM AS 题目,CZ AS 出自章节 From XuanZeTiwhere CZ=ZJID
    肯定不对。
    (2)关于sql语句中的参数问题:
    就是用“=:”表示后面的为参数,可以为任意字符后字符串,也不用预先定义,只要在
    ST_ADOQ.Parameters.ParamByName中说明就可以了。
    还有一种方法是在ADOQuery的属性中说明参数,但用起来很不方便。