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 14-10-2010
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
Puedo Eliminar una columna de un dataset?

e estado un buen rato buscando y nada...

al grano...

1. tengo en un dataset el resultado de una consulta Y *
----> (digamos un select * from persona)

2. que me retorna X cantidad de columnas
----> (digamos Cedula,Nombre,Apellido1,Apellido2)

3. pero requiero tener en el dataset unicamente Z valores
---->(Digamos que la cedula,nombre y apellido1 unicamente)


Ahora bien lo que deseo es en este ejemplo eliminar del dataset, la columna apellido2, lo requiero eliminar del dataset,pues posteriormente guardo el resultado enun archivo xml... directamente del dataset...


Espero haber podido darme a entender, con mi consulta...

Nota: No puedo modificar el script a ejecutar, pues este podria ser un procedure almacenado, o un select o una vista, lo que sea que me devuelva valores

_________________________________________________________
*(la consulta es variable, no es siempre la misma)
Responder Con Cita
  #2  
Antiguo 14-10-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
En el dataset da clic derecho y en el menú contextual escoge "Fields Editor...". En la ventanita que se abre vuelve a dar clic derecho y en el menú selecciona "Add all fields". La ventanita se llenará con la lista de todos los campos. Ahora selecciona el que desees quitar y bórralo con Supr.

// Saludos
Responder Con Cita
  #3  
Antiguo 14-10-2010
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
Gracias por tu pronta respuesta

soloexiste un pequeno inconveniente con esto...

los campos son variables en cada ejecucion... osea se ejecuta un escript en tiempo de ejecucion... y los valores que me devuelve tambien son variables...

por ejemplo en lugar de: nombre, apellido1,apellido2
podria contener : Casa,ubicacion,Terreno

y el campo a eliminar tambien varia, de acuerdo a un txt de configuracion que recibo...

por lo que debo eliminar en tiempo de ejecucion...
Responder Con Cita
  #4  
Antiguo 14-10-2010
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
y si talves...?

No se tal ves se me ocurre, si no es posible eliminar una columna en tiempo de ejecucion...

se podria copiar en un dataset temporal, solo las columnas que deseo, y luego volver a asignar el resultado al dataset original?

no se si es posible...

agradescode antemano la ayuda que me brinden...
Responder Con Cita
  #5  
Antiguo 15-10-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 916
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Podrias cambiar la propiedad de los campos que no deseas a Visible:=False, y modificar tu rutina de exportacion a XML, verificando que si el campo es Visible lo exporte.

Si un campo tiene su propiedad Visible a False, en una grilla no sera mostrado.

Código Delphi [-]
Tabla.FieldByName('NUMERO').Visible:=False;
Tabla.Fields[0].Visible:=False;

IF Tabla.FieldByName('NUMERO').Visible THEN
BEGIN
        Exportar a XML...
ENDIF

Es solo una idea.
Responder Con Cita
  #6  
Antiguo 15-10-2010
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
podria servir

elproblema es que para guaradr en XML, utilizo simplemente
Código Delphi [-]
ClientDataSet1.SaveToFile('c:\ejemplo.xml')
si conocieses alguna otra forma de realizarlo... te agradesco mucho
Responder Con Cita
  #7  
Antiguo 15-10-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 916
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Entonces lo que podrias hacer seria eliminar los campos de la definicion del ClientDataset.

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
    index:=ClientDataSet1.FieldDefs.IndexOf('NOMBRE_CAMPO_A_ELIMINAR');
    if index>-1 then
       //Lo elimina de la lista de campos
       ClientDataSet1.FieldDefs.Delete(index);
end;

Saludos.
Responder Con Cita
  #8  
Antiguo 15-10-2010
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
gracias

una pregunta... como declaro la vatriable index ?
de que tipo? debe ser global?

gracias... por tu prontarespuesta, y tu ayuda...
Responder Con Cita
  #9  
Antiguo 15-10-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 916
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
No me fije que no la habia definido. Ahora si.

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var 
   Index:Integer;
begin
    index:=ClientDataSet1.FieldDefs.IndexOf('NOMBRE_CAMPO_A_ELIMINAR');
    if index>-1 then
       //Lo elimina de la lista de campos
       ClientDataSet1.FieldDefs.Delete(index);
end;

Saludos
Responder Con Cita
  #10  
Antiguo 15-10-2010
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
Gracias de nuevo

Probando tu solucion me encuentro con que...


Código Delphi [-]
 
index:=data.FieldDefs.IndexOf('Apellido1');
 if index>-1 then
 begin
 //Lo elimina de la lista de campos
  XXX:=   data.FieldCount ;
 data.FieldDefs.Delete(index);
  XXX:=   data.FieldCount ;
 end;


XXX antes y despues del delete sigue conteniendo la misma cantidad de columnas...

alguna otra idea?
Responder Con Cita
  #11  
Antiguo 19-10-2010
tcrews tcrews is offline
Registrado
 
Registrado: jun 2010
Posts: 4
Poder: 0
tcrews Va por buen camino
alguien?

tengo exacto el mismo problema... alguien sabe que se puede hacer? una copa de vino para quien lo solucione...
Responder Con Cita
  #12  
Antiguo 19-10-2010
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
Encontre la respuesta...

al final encontre una forma en que funiona... obviamente antes el dataset debe estar abierto... por aquello...

Código Delphi [-]
 
ClientDataSet1.Fields.Remove(ClientDataSet1.Fields[colX]);

esto para retroalimentar con la respuesta, pues al menos a mi me costo llegarle...
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
No puedo eliminar un registro de una tabla dbf jhcaboverde Conexión con bases de datos 0 01-07-2008 15:58:25
No puedo eliminar registros de una tabla Shikanda Conexión con bases de datos 4 24-09-2007 09:50:43
Como eliminar columna se un StringGrid gilberto_1126 OOP 1 29-01-2007 20:31:51
como puedo imprimir dos dataset en distintos qrgroup mik3l Impresión 3 28-08-2004 17:03:04
Eliminar columna(DbGrid) en tiempo de ejecucion bestiux Conexión con bases de datos 5 08-06-2004 18:06:44


La franja horaria es GMT +2. Ahora son las 00:43:15.


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