Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-04-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
BB.DD. FB: Establecer valor por defecto

Después de la ayuda recibida de Casimiro y ecfisa en Propiedades de una columna, me está apareciendo otro error del que no soy capaz de encontrar el origen.

Para fijar el valor por defecto de una columna uso el código del hilo que comentaba más arriba. Sin embargo al tratar de actualizar una de las tablas con este código:
Código SQL [-]
ALTER TABLE ELECTOS ALTER COLUMN CODPRV SET DEFAULT '45'

teniendo la tabla esta definición:
Código SQL [-]
CREATE TABLE Electos (CodPrv VARCHAR(2) NOT NULL, 
                      Codigo INTEGER NOT NULL, 
                      Cargo INTEGER NOT NULL, 
                      Junta SMALLINT DEFAULT 1,
                      CONSTRAINT PK_Electos PRIMARY KEY (CodPrv, Codigo, Cargo, Junta))

Se genera este error:
Cita:
Partner index segment no 1 has incompatible data type
Hasta donde soy capaz de entender y he podido encontrar, o eso creo, me está indicando que los tipos de datos de la definición de la columna y del valor que intento introducir no son compatibles, como si quisiera meter un número en un varchar.
Responder Con Cita
  #2  
Antiguo 08-04-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

El siguiente enlace: Partner index segment no 1 has incompatible data type, explica que ese error generalmente se produce por incongruencias de tipo en una clave externa.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 09-04-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 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
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Establecer directorio por defecto Delphi al Abrir ingabraham Varios 4 17-06-2008 22:19:19
Valor Por Defecto DBlookupComboBox hcalero Conexión con bases de datos 0 22-01-2008 11:54:17
Establecer un valor por defecto en un campo ya creado David Firebird e Interbase 2 13-06-2007 01:58:39
Valor por defecto en DBLookUpComboBox Durbed OOP 1 08-07-2005 20:05:54
Valor por defecto en un dbgrid NuncaMas Conexión con bases de datos 3 28-01-2004 21:31:19


La franja horaria es GMT +2. Ahora son las 06:13:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi