Ke tal compañero espero te sirva este ejemplo que uso para claves...
utilizo XE2 con Interbase.
con un generador saco el número..
Código Delphi
[-]
dm.get_clave_clase.ExecProc;
if (dm.get_clave_clase.Params[0].Value < 10) then
edtclave.Text:='CL0' + inttostr(dm.get_clave_clase.Params[0].Value)
else
edtclave.Text:='CL' + inttostr(dm.get_clave_clase.Params[0].Value);
dm.clase_i.Params[0].Value:= edtclave.Text;
dm.clase_i.Params[1].Value:= edtclase.Text;
dm.clase_i.Params[2].Value:= cbxtipo.Text;
dm.clase_i.ExecProc;
Saludos...