function DaBmIsUse(ACn:TAdoConnection;vtablename:string;vbmfield:string;vbm:string):Boolean;
var
    Sp:TAdoStoredProc;
    iOk:Integer;
    vInfo:string;
begin
    vInfo:='';
    Sp:=TAdoStoredProc.Create(nil);
    try
        Sp.Connection:=ACn;
        Sp.ProcedureName:='p_bmisuse';
        with Sp do
        begin
            Close;
            Parameters.Clear;
            Parameters.CreateParameter('@vtablename',  ftString,  pdInput,30,  vtablename);
            Parameters.CreateParameter('@vbmfield',    ftString,  pdInput,30,  vbmfield);
            Parameters.CreateParameter('@vbm',         ftString,  pdInput,30,  vbm);
            Parameters.CreateParameter('@iOk',         ftSmallint,pdOutput,4,  iOk);
            Parameters.CreateParameter('@vInfo',       ftString,  pdOutput,100,vInfo);
            Prepared:=true;
            ExecProc;
            Result:=Parameters.ParamValues['@iOk']<>0;
        end;
    finally
        Sp.Close;
        Sp.Free;
    end;
end;