Ver Mensaje Individual
  #3  
Antiguo 09-04-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Reputación: 19
Angel.Matilla Va por buen camino
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.
Responder Con Cita