FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Propiedades de una columna
Estoy trabajando con una BB.DD. Firebird y necesito saber si en las propiedades de una columna se ha definido un valor por defecto. A través de las tablas RDB$ saco al información de las columnas de las tablas, pero no acabo de ver cómo saber si se ha definido un valor por defecto para una columna concreta y cuál es, llegado el caso, dicho valor.
Con este código debería poder ver dicho valor por defecto pero, probando con EMS SQL Manager, no me deja acceder al valor contenido en esa selección RDB$DEFAULT_VALUE. Veo que el "icono" en la rejilla es diferente, pero no puedo ver el contenido. Yo sé que el valor por defecto de esa columna poblacion es 1, pero ¿cómo puedo "leerlo"? Última edición por ecfisa fecha: 08-04-2016 a las 12:16:02. Razón: Corregir problema WYSIWYG |
#2
|
||||
|
||||
Creo recordar que el campo es "default_source"
|
#3
|
||||
|
||||
Hola.
Fijate si esto es lo que estas buscando:
Saludos Edito: (Casimiro fué mas rápido )
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#4
|
||||
|
||||
¡Perfecto! Muchas gracias a los dos. No se me ocurría como encontrarlo.
|
#5
|
||||
|
||||
Pues no logro modificar por código las propiedades. En principio, al crear la base de datos, la columna CODPRV no tiene valor por defecto lo que es un grave error tratándose de un campo de la clave primaria pero no puedo fijarlo desde la creación porque van a haber instalaciones diferentes.
He montado esto: Código:
Auxiliar->Close(); // Para saber que tablas he de modificar Auxiliar->SQL->Text = "SELECT A.RDB$RELATION_NAME FROM RDB$RELATION_CONSTRAINTS A JOIN RDB$INDEX_SEGMENTS B ON A.RDB$CONSTRAINT_NAME = B.RDB$INDEX_NAME WHERE A.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY' AND B.RDB$FIELD_NAME = 'CODPRV' ORDER BY RDB$RELATION_NAME"; Auxiliar->Open(); for (; !Auxiliar->Eof; Auxiliar->Next()) { Query->Close(); // Comprobar si ya se ha definido el valor DEFAULT Query->SQL->Text = "SELECT RDB$DEFAULT_SOURCE FROM RDB$RELATION_FIELDS WHERE RDB$RELATION_NAME = :Tabla AND RDB$FIELD_NAME = 'CODPRV' AND RDB$SYSTEM_FLAG = 0"; Query->ParamByName("Tabla")->AsString = Auxiliar->FieldByName("RDB$RELATION_NAME")->AsString; Query->Open(); if (Query->FieldByName("RDB$DEFAULT_SOURCE")->AsString.IsEmpty()) { // Si no hay valor, establecerlo 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 = Auxiliar->FieldByName("RDB$RELATION_NAME")->AsString; 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 = Auxiliar->FieldByName("RDB$RELATION_NAME")->AsString; Query->ExecSQL(); Query->Close(); Query->SQL->Text = "ALTER TABLE " + Auxiliar->FieldByName("RDB$RELATION_NAME")->AsString + " ALTER COLUMN CODPRV SET DEFAULT '" + ProvTit + "'"; Query->ExecSQL(); } } Todo se ejecuta bien, no da ningún error... Pero no modifica la estructura de la columna. Dentro del if los dos primeros querys los he puesto dado que cuando pruebo con EMS SQL Manager a establecer el valor DEFAULT para la columna, monta los tres querys que hay. |
#6
|
||||
|
||||
Acepto collejas por todos lados. ¡Se me había olvidado hacer el commit!
|
#7
|
||||
|
||||
#8
|
||||
|
||||
Deberíamos tener una etiqueta bb para esta imagen
LineComment Saludos |
#9
|
||||
|
||||
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Hacer que una columna de un DbGrid aparezca distinta según valor | Aprendiendo | OOP | 11 | 30-11-2018 14:47:20 |
Poner una columna de un DBGrid como columna Fija | rgstuamigo | OOP | 4 | 04-03-2009 21:54:38 |
Acceso a las propiedades de un objeto desde el editor de propiedades | Hugo | OOP | 0 | 24-11-2006 12:58:22 |
Columna calculada en base a otra columna calculada | Al González | Firebird e Interbase | 1 | 09-02-2004 23:51:57 |
Propiedades ADO | Zopi | Conexión con bases de datos | 4 | 10-10-2003 15:41:57 |
|