¡Soy muy burro! Pero mucho
La solución era tan fácil como esta:
Código:
Query->Close();
if (lNuevo)
{
Query->SQL->Text = "INSERT INTO Persona (Apellidos, Nombre, Nif, Sexo, F_nacim, Domicilio, Cpostal, Poblacion, Provincia, Profesion, "
etc.
}
else
{
Query->SQL->Text = "UPDATE Persona SET Apellidos = :Apellidos, Nombre = :Nombre, Nif = :Nif, Sexo = :Sexo, F_nacim = :F_nacim, "
"Domicilio = :Domicilio, Cpostal = :Cpostal, Poblacion = :Poblacion, Provincia = :Provincia, Profesion = :Profesion, "
"C_electronico = :C_electronico, Telefono_1 = :Telefono_1, Telefono_2 = :Telefono_2, Telefono_3 = :Telefono_3, "
"Situacion = :Situacion, Correo = :Correo, Lo1599 = :Lo1599, F_alta = :F_alta, N_afiliado = :N_afiliado, "
"Afiliacion = :Afiliacion, Junta = :Junta, Referencia = :Referencia, PerPago = :PerPago, ForPago = :ForPago, "
"Cuota = :Cuota, Iban = :Iban, Cuenta = :Cuenta, Bic = :Bic, Observaciones = :Observaciones, UsuMod = :UsuMod, "
"FecMod = :FecMod WHERE CodPrv = (SELECT Literal FROM Instalacion WHERE Etiqueta = 'Provincia') AND Codigo = :Codigo";
Query->ParamByName("Codigo")->AsInteger = GroupBox1->Tag; // Lo subo aquí
}
Query->ParamByName("Apellidos")->AsString = Apellidos->Text;
Query->ParamByName("Nombre")->AsString = Nombre->Text;
Query->ParamByName("Nif")->AsString = Nif->Text;
etc.
Si no está declarado el parámetro en el query, ¿para qué complicarme la vida comprobando DESPUÉS si existe o no?