Estoy trabajando con FB 2.5. En una tabla tengo definidos un procedimeinto y un generador de la siguiente forma:
Código:
IbSql->Close();
IbSql->SQL->Text = "CREATE GENERATOR Id_poblacion";
try
{
IbSql->ExecQuery();
Query->Transaction->Commit();
}
catch(Exception *Exc)
{
Query->Transaction->Rollback();
}
IbSql->Close();
IbSql->SQL->Text = "CREATE PROCEDURE Gen_poblacion RETURNS (Codigo INTEGER) AS BEGIN Codigo = GEN_ID(Id_poblacion, 1); END";
try
{
IbSql->ExecQuery();
Query->Transaction->Commit();
}
catch(Exception *Exc)
{
Query->Transaction->Rollback();
}
Al cargar la tabla sobre la que trabaja actualizo el valor del generador así:
Código:
Query->Close();
Query->SQL->Text = "SELECT MAX(Codigo) Codigo FROM Poblacion";
Query->Open();
if (!Query->Transaction->InTransaction)
Query->Transaction->StartTransaction();
IbSql->Close();
IbSql->SQL->Text = "SET GENERATOR Id_poblacion TO " + FormatFloat("0", Query->FieldByName("Codigo")->AsInteger);
try
{
IbSql->ExecQuery();
Query->Transaction->Commit();
}
catch(Exception *Exc)
{
Query->Transaction->Rollback();
}
Esto me deja un valor, correcto, en el mismo de 58657. Sin embargo si trato de obtener el nuevo valor para una ficha nueva, al ejecutar el TIBStoredProc así:
Código:
spPoblacion->Close();
spPoblacion->UnPrepare();
spPoblacion->Prepare();
spPoblacion->ExecProc();
Poblacion->Tag = spPoblacion->ParamByName("Codigo")->Value;
El valor que me devuelve es el 22779, 22780, etc. en vez de 58658 como debiera ser. Y me tiene total. ¿Alguna idea de que puede estar pasando?