Gracias por la respuesta. He hecho una prueba, basándome en el código que monta EMS: Los dos primeros querys que hay en el código que puse (los dos
UPDATE RDB$FIELDS que hay en
Propiedades de una columna) los he sacado de ahí y los he llevado al CREATE TABLE asi:
Código:
Query->Close();
Query->SQL->Text = "CREATE TABLE ...";
Query->ExecSQL();
if (Query->SQL->Text.Pos("PRIMARY KEY (CodPrv") != 0)
{
cAux = Query->SQL->Text.SubString(14, Query->SQL->Text.Length());
cAux = UpperCase(cAux.SubString(1, cAux.Pos(" ")).Trim());
Query->Close();
Query->SQL->Text = "UPDATE RDB$FIELDS SET RDB$CHARACTER_SET_ID = NULL WHERE RDB$FIELD_NAME = (SELECT RDB$FIELD_SOURCE FROM RDB$RELATION_FIELDS WHERE "
"RDB$FIELD_NAME = 'CODPRV' AND RDB$RELATION_NAME = :Tabla)";
Query->ParamByName("Tabla")->AsString = cAux;
Query->ExecSQL();
Query->Close();
Query->SQL->Text = "UPDATE RDB$RELATION_FIELDS SET RDB$COLLATION_ID = NULL WHERE RDB$FIELD_NAME = 'CODPRV' AND RDB$RELATION_NAME = :Tabla";
Query->ParamByName("Tabla")->AsString = cAux;
Query->ExecSQL();
}
Query->Transaction->CommitRetaining();
Dejando el otro trozo (
ALTER TABLE) donde está ¡Y funciona a la perfección! No lo entiendo, pero funciona.