a ver... yo retocaría tu código de esta manera:
Código Delphi
[-]
try
if dmcontactos.QContactos.RecordCount=0 then begin
id:=1;
dmcontactos.QContactos.Insert;
end else begin
dmcontactos.QContactos.Last;
id:=dmcontactos.QContactos.FieldByname('idcontacto').AsInteger+1;
dmcontactos.QContactos.Insert;
end;
dmcontactos.QContactos.FieldByName('idcontacto').AsInteger:= id;
dmcontactos.QContactosnombre.AsString:= edit1.Text;
dmcontactos.QContactosapellido.AsString:= edit2.Text;
dmcontactos.QContactosdireccion.AsString:= edit4.Text;
dmcontactos.QContactostelefono.AsString:= edit3.Text;
dmcontactos.QContactosdescripcion.AsString:= combobox1.Text;
dmcontactos.QContactos.Post;
FINALLY
secundario.refrescarcontactos(id);
dmcontactos.QContactos.EnableControls;
end;
fncontacto.Close;
secundario.DBContactos.SetFocus;
Posiblemente el error te lo de en esta linea:
Código Delphi
[-]
dmcontactos.QContactos.Fields[0].AsInteger + 1;
porque fields[0] sea el campo "familiares"
Saludos