Esta dica é bem util para pessoas que estão desenvolvendo aplicativos comerciais, nesta dica eu crio os componentes em tempo de execurção, pois assim posso chama-la em qualquer lugar sem ter que me preocupar em usar units que estejam conectadas ao banco
veja:
primeiro declaramos a função
function autoincremento(conexao: TSQLConnection; campo, tabela:string) :integer;
lembrando que devemos por obrigação colocar no 1º uses o SqlExpr
depois cria-se a função
function autoincremento(conexao: TSQLConnection; campo, tabela:string) :integer; var
qrconexao : TSQLDataSet;
begin //********** criando os componentes em tempo de execucao
qrconexao := TSQLDataSet.Create(nil); //******************** recebendo a conexao como parametro
qrconexao.SQLConnection := conexao;
qrconexao.MaxBlobSize := -1; //*********************
with qrconexao do begin
CommandText := ('SELECT MAX('+ Campo + ') FROM ' + Tabela);
open;
Result := Fields[0].AsInteger +1; //showmessage(inttostr(Result));
close; end;
end;
após a sua criação é so chamar no evento beforepost de qualquer clientedataset