使用一个查询。送3个参数。表名/表字段/字符值!!!函数部分:代码如下:
function TMlog_form.CheckItem(var tableN,fieldN,Fstring: string): boolean;
var
   strSQL:string;
begin
 with ADOQuery2 do
    begin
    if Active=True then Active:=False;
    SQL.Clear;
    strSQL:='select count(*) from :tname1 where :fieldN1=:type1';
    SQL.Add(strSQL);
    Parameters[0].Value:=tableN;
    Parameters[1].Value:=fieldN;
    Parameters[2].Value:=Fstring;
    open;    if Fields[0].AsInteger=1 then
    result:=true
    else
    result:=false;
    close;
    end;
end;//调用部分
var
  p1,p2,p3:string;
begin
  p1:='MalfunctionCode';
  p2:='MalCode';
  p3:=dbcombobox2.Text;
  if  CheckItem(p1,p2,p3)=false then showmessage('NOT');
end;这样的错误该如何解决呢?请大家指教!!!谢谢!!!

解决方案 »

  1.   

    好像表名和字段名称不能用Parameters。楼主去掉试试。
      

  2.   

    SQL.Clear;
    strSQL:='select count(*) from :tname1 where :fieldN1=:type1';
    SQL.Add(strSQL);
    Parameters[0].Value:=tableN;
    Parameters[1].Value:=fieldN;
    Parameters[2].Value:=Fstring;
    open;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    sql.clear;
    strSQL:='select count(*) from '+tableN+' where '+fieldN+'='+Fstring;
    sql.add(strsql);
    open;
      

  3.   

    有这个count(*) ,就不能带参数进行查询
      

  4.   

    好象光光这样也不行  啊。!!!SQL.Clear;
    strSQL:='select * from :tname1 where :fieldN1=:type1';
    SQL.Add(strSQL);
    Parameters[0].Value:=tableN;
    Parameters[1].Value:=fieldN;
    Parameters[2].Value:=Fstring;
    open;
      

  5.   

    var
      a,s:string;
    begin
      a:='test';
      s:=Format('select * from %s',[a]);
      ShowMessage(s);
    end;
    楼主表名不可以当参数传递的