Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2009
Avatar de edgwin
edgwin edgwin is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guadalajara Jal. Mex
Posts: 163
Poder: 19
edgwin Va por buen camino
Red face Creando campos en tiempo de ejecucion

Que tal amigos del foro.

Estoy intentando lo siguiente.

Tengo una tabla hecha en firebird con una estructura en especifico. Necesito hacer una reestructuracion completa de esa tabla (renombrar campos y crear nuevos). El programa realiza la reestructuracion sin problemas, pero cuando intento accesar a algun nuevo campo creado, me marca un error indicandome que no existe dicho campo.

Utilizo los componentes BDE que vienen con Delphi (desafortunadamente no puedo utilizar otros como el Zeos).

Alguien sabe como puedo reestructurar una tabla y poder accesar a ella al instante? (porque si corro el programa nuevamente, ya me reconoce la estructura nueva)

Saludos!
Responder Con Cita
  #2  
Antiguo 31-03-2009
Avatar de JoseAntonio
JoseAntonio JoseAntonio is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lima - Ciudad de los Reyes.
Posts: 87
Poder: 19
JoseAntonio Va por buen camino
hola, intenta hacerle commit a la transaccion de tu componente Zeos con que haces tu modificacion de la base de datos (asumo que se llamaria algo asi como ZeosScript o algo asi, no conosco mucho dichos componentes)
__________________
nuestro carácter está reflejado en cada línea de código que escribimos.
Responder Con Cita
  #3  
Antiguo 31-03-2009
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 19
Kipow Va por buen camino
Creo que el utiliza los BDE no los Zeos. bueno en general al cambiar la estructura es casi seguro que te pida cerrar la conexion (TDatabase) y volvera a abrirla junto con las tablas.
Responder Con Cita
  #4  
Antiguo 31-03-2009
Avatar de edgwin
edgwin edgwin is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guadalajara Jal. Mex
Posts: 163
Poder: 19
edgwin Va por buen camino
Gracias Kipow por responder.

De hecho realizo una desconexion y una conexion a la base de datos. Lo que intento hacer es lo siguiente:

1) Realizo reestructura de la tabla.
2) Como esta tabla contiene informacion, la consulto (tambien mediante un TQuery con RequestLive = true) y edito el registro.

Pero cuando intento Editar el registro me marca un error de que el campo no existe. Pero curiosamente edito 2 campos, los cuales son nuevos. Pero solo uno de ellos me marca el error que no existe.

Código Delphi [-]

with Tabla do
begin
...
    SQL.Clear;
    SQL.Add('ALTER TABLE USUARIO ADD CODIINTE INTEGER NOT NULL');
    ExecSQL;
    Close;
...
    SQL.Clear;
    SQL.Add('ALTER TABLE MUSUA ADD CAMBPASE CHAR(1) DEFAULT ''N''');
    ExecSQL;
    Close;
...
    dm.dbase.Connected := false;
    dm.dbase.Connected := true;
    Close;
    SQL.Clear;
    SQL.Add('Select CODIINTE from MUSUA');
    Open;
    First;
    While not Eof do
    begin
       Inc(vX);
       Edit;
       FieldByName('CODIINTE').AsInteger := vX;
       FieldByName('CAMBPASE').asString := 'N'; //*******Aqui me marca el error *****
       Next;
    end;
end;
...

¿¿¿Alguna sugerencia!????
Responder Con Cita
  #5  
Antiguo 31-03-2009
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Cita:
SQL.Add('Select CODIINTE from MUSUA');
tansolo estas seleccionando el campo codiinte. Por otra banda, segun tu codigo CODIINTE pertenece a la tabla usuarios, no a musua.
Responder Con Cita
  #6  
Antiguo 31-03-2009
Avatar de Alexandro
Alexandro Alexandro is offline
Miembro
 
Registrado: mar 2008
Ubicación: Mayarí Holguín Cuba
Posts: 127
Poder: 17
Alexandro Va por buen camino
Seleciona el campo CODIINTE y el campo CAMBPASE, luego pasale los valores que quieras.
__________________
Cuando las cosas van mal, recuerda que aún pueden ir peor

Última edición por Alexandro fecha: 31-03-2009 a las 16:06:51.
Responder Con Cita
  #7  
Antiguo 31-03-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por coso Ver Mensaje
tansolo estas seleccionando el campo codiinte.
Hola, eso mismo digo yo, debes añadir en tu select el campo CAMBAPSE.

Código Delphi [-]
SQL.Add('Select CODIINTE, CAMBAPSE from MUSUA');

Cita:
Empezado por coso Ver Mensaje
Por otra banda, segun tu codigo CODIINTE pertenece a la tabla usuarios, no a musua.
Talvez tiene también el campo CODIINTE en la tabla Musua, sino le habría dado error también en la línea de arriba indicandole que no existía el campo CODIINTE.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 31-03-2009
Avatar de edgwin
edgwin edgwin is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guadalajara Jal. Mex
Posts: 163
Poder: 19
edgwin Va por buen camino
Jajajajaja!! si es cierto!!! tengo que seleccionar los dos campos para poderles asignar valores. Es que ayer ya tenia seco el cerebro y no vi semejante estupidez!!! ¿Les ha pasado que ven tanto codigo y errores tan simples no los pueden ver?

Gracias! y saludos a toda la comunidad ClubDelphi
Responder Con Cita
Respuesta



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
Creando componentes rave report en tiempo de ejecucion??? jbautista Impresión 3 19-07-2013 01:55:28
Creación de campos en tiempo de ejecución fjcg02 OOP 5 27-08-2008 08:05:35
Actualizar campos en QReport en tiempo de ejecucion Goyo Impresión 3 13-07-2007 01:18:02
Modificar campos en un DBGrid en tiempo de ejecuciòn maravert Conexión con bases de datos 3 14-05-2006 08:37:41
Agregando campos en tiempo de ejecucion Markoz Firebird e Interbase 3 31-10-2003 02:32:23


La franja horaria es GMT +2. Ahora son las 11:51:18.


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