En tu código ejecutas el query de aux. En su lugar deberías abrirlo.
Si lo ejecutas no obtendrás resultados. Esta instrucción está pensada para ejecutar cosas como un insert/update/delete que no devuelvan nada.
No recuerdo si la instrucción es Open u OpenSQL.
Código Delphi
[-]
procedure TFerreteria.insercliente(cliente:Tcliente);
begin
dm:=Tconsultas.Create(nil);
dm.SQLQuery2.Close;
dm.SQLQuery2.SQL.Add ('insert into clientes(idpersona,cuit,cuil) values (:idpersona,:cuit,:cuil);');
with dm.SQLQuery2 do
begin
dm.aux.SQL.Add('select max(idpersona) from persona as idp;');
dm.aux.Open;
ParamByName('idpersona').Value:=dm.aux.ParamByName('idp').AsInteger;
ParamByName('cuit').Value:=cliente.cuit;
ParamByName('cuil').Value:=cliente.cuil;
end;
dm.SQLQuery2.ExecSQL();
dm.SQLQuery2.Close;
end;
De todos modos yo organizaría un poco mejor el código y creo además que te falta liberar el objeto creado (Tconsultas).
Si me permites:
Código Delphi
[-]
procedure TFerreteria.insercliente(cliente:Tcliente);
begin
dm := Tconsultas.Create(nil);
try
dm.aux.SQL.Add('select max(idpersona) from persona as idp;');
dm.aux.Open;
with dm.SQLQuery2 do
begin
Close;
SQL.Add ('insert into clientes(idpersona,cuit,cuil) values (:idpersona,:cuit,:cuil);');
ParamByName('idpersona').Value:=dm.aux.ParamByName('idp').AsInteger;
ParamByName('cuit').Value:=cliente.cuit;
ParamByName('cuil').Value:=cliente.cuil;
ExecSQL();
Close;
end;
dm.aux.Close;
finally
dm.Free;
end;
end;