我写了一段自动生成编号的程序如下:
function TF_EpIqSyHCV.GetUniID(FieldName:string;TableName:string):integer;
var
  SqlStr:string;
begin
  SqlStr:='select isnull(max('+FieldName+'),0)+1 from '+TableName;
  with ADOQry_ID do
  begin
    close;
    SQL.Clear;
    SQL.Add(SqlStr);
    open;
    result:=Fields[0].AsInteger;//执行到这里出错
  end;
end;
调用时,提示“用于函数参数的个数不对,在查询表达式xxx中”
参数明明都是2个啊,怎么会不对呢?请指教!

解决方案 »

  1.   

    代碼沒有錯,就看這個字段是不是有非整型數字,或者你這個 AdoQry_ID  是不是靜態化的一些字段你跟下 sqlstr  返回來的是什麼。
      

  2.   


    SQL.Text := 'select iif(isnull(max(a)),0,'+FieldName+')+1 as Num from '+TableName;
      

  3.   

    sqlstr  返回的结果是‘insull(max(Seq_ID),0)+1 from table_SeqSav’,证明参数是传过去了的。我用的Access数据库,这段代码是使用SQL数据库写的,不知道用在Access行不行?
      

  4.   

    不能用于access,access中isnull不能用于返回值,只是个判断