小弟遇到的难题
在edit3与edit4中输入的是 教师名字 和 题目,教师名字 和 题目对应表table3中同名的列,小弟要做的是要在选择之前查询某个老师的某个题目是否被选过,我写的代码如下:
ADOQuery2.sql.add('select * from TABLE3 where 指导教师='+edit4.Text+',题目编号='+edit3.Text+'');
if ADOQuery2.RecordCount>0 then
begin//则进行选课
这样写是否妥当,还有在运行时,出错显示“此上下文只能用变量...”我这么写'+edit4.Text+'为什么不对??小弟是初学,还望指教,最好详细点,谢谢~~

解决方案 »

  1.   

    ADOQuery2.sql.Text := 'select * from TABLE3 where 指导教师='''+edit4.Text+''' and 题目编号='''+edit3.Text+'''';
    ADOQuery2.Open;
    if not ADOQuery2.IsEmpty then
    begin
      

  2.   

    ADOQuery2.sql.add('select * from TABLE3 where 指导教师='+QuotedStr(edit4.Text)+',题目编号='+QuotedStr(edit3.Text));
      

  3.   

    ADOQuery2.close;
    ADOQuery2.sql.clear;
    ADOQuery2.sql.Text := 'select * from TABLE3 where 指导教师='''+edit4.Text+''' and 题目编号='''+edit3.Text+'''';
    ADOQuery2.Open;
      

  4.   

    ???高手们,我已经按照他家给的代码作了,run也没有错误,可是在edit4  edit3中填好后提交就错,还是出现"再次上下文中不允许使用"text",只允许使用变量,常量。不允许使用列名“我弄不懂了???
      

  5.   

    sql数据库
    教师    varhcar
    题目    char
      

  6.   

    ADOQuery2.Close;
    ADOQuery2.sql.Text := 'select * from TABLE3 where 指导教师 = ''' + edit4.Text + ''' AND 题目编号 = '''+ edit3.Text + '''';if ADOQuery2.RecordCount>0 then
    begin//则进行选课
      

  7.   

    在程序中把sql语句show出来看看,估计是引号没有的原因
      

  8.   

    ADOQuery2.close;
    ADOQuery2.sql.clear;
    ADOQuery2.sql.Text := 'select * from TABLE3 where 指导教师=:a and 题目编号=:b';
    Query1.Params.ParamByName('a').AsString := Trim(edit4.Text);
    Query1.Params.ParamByName('b').AsString := Trim(edit3.Text);
    ADOQuery2.Open;