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-05-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Como clonar un TIBDataSet ?

Hola amigos !

He consultado este hilo, pero no me aclaro del todo.

Quiero hacer lo mismo que el compañero AGAG4, buscar en un DataSet 'paralelo' o 'clonado'. Haciendo uso del DisableControls y posterior EnableControls, no me deja el DBGrid que tiene asociado el IBDataSet de idéntica manera que antes de mi búsqueda y operaciones. Al final acaba subiéndome una fila, o al fin de cuentas, con algunos registros 'traspuestos' después de mis operaciones.

Por eso pensé en 'clonar', como aconsejó Neftalí en el hilo arriba indicado, el DataSet que ya había obtenido con anterioridad. No quiero hacer la consulta SQL de nuevo ya que pueden haber cambiado los registros en la base de datos y por lo tanto obtener un Set de Datos diferente.

Como puedo entonces incorporar a un nuevo DataSet exáctamente los registros que se encuentran en otro dataset diferente ?

He probado :
Código Delphi [-]
...
var
  Aux_DataSet : TIBDataSet;
 
begin
 
  Aux_DataSet := TIBDataSet.Create(Self);
  Aux_DataSet.DataBase    := DM0.IBDatabase1;
  Aux_DataSet.Transaction := DM0.IBTransaction1;
pero cuando Neftalí se refería en su hilo a asociar la misma consulta, no sé como interpretarlo.

Otra opción que no sé como realizarla sería algo así como 'Insertar' en un nuevo DataSet los registros que pueda obtener del DataSet original.

Gracias de nuevo por vuestras ayudas.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #2  
Antiguo 31-05-2007
ramiretor ramiretor is offline
Miembro
 
Registrado: may 2003
Ubicación: México
Posts: 196
Poder: 22
ramiretor Va por buen camino
Hola:
Para poder copiar los registros de un DataSet, puedes usar un ClientDataSet que te va a permitir insertarle todos los registros que necesites.

Saludos
__________________
Ernesto R.
Responder Con Cita
  #3  
Antiguo 31-05-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Pero entiendo que tendría que recorrer todos los datos de mi IBDataSet original, e ir insertando los registros en el nuevo ClientDataSet, no ?

Es precisamente lo que en teoría no quiero, tener que mover el puntero del IBDataSet original.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #4  
Antiguo 31-05-2007
ramiretor ramiretor is offline
Miembro
 
Registrado: may 2003
Ubicación: México
Posts: 196
Poder: 22
ramiretor Va por buen camino
Sí lo que quieres es no moverte del registro actual, puedes usar un bookmark
con eso aseguras moverte, pero regresar a donde estabas originalmente que no?

Saludos
__________________
Ernesto R.
Responder Con Cita
  #5  
Antiguo 31-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
¿Para qué quieres clonar el dataset? ¿vas a realizar alguna búsqueda? ¿quizás comprobar que un dato no se repita?

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 31-05-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Es un poco complicado explicar por qué no me funciona como yo quiero.

Estoy haciendo un gestor de correo electrónico en mi propia aplicación. Recibo correos, y los muestro en un DBGrid. Logro hacer un Multiselect propio ya que el que viene con el propio TDBGrid no me convence para mis preferencias.

Cuando hago un multiselect con Shift - Click del ratón, hago un DisableControls y posterior EnableControls del DBGrid. También guardo el Bookmark en una variable privada. Para que sea funcional el Shift - Click, necesito moverme dentro del DataSet para ver 'primeros' y 'ultimos' registros marcados, para después volver a completar una lista propia (con una numeración propia interna) que me lleva la lista de los registros marcados.

Al recorrer el DataSet, aun con el DisableControls activado, y terminar de llenar mi lista de marcados con los registros correspondientes, intento volverl a la misma e idéntica situación del Grid que había antes del DisableControls. Aun utilizando el Bookmark correspondiente, al final resulta que como no puedo saber cual era el primer registro que se mosrtaba en la primera línea visible del DBGrid, y al volver al registro original mediante el Bookmark correspondiente, el DBGrid al final hace lo que quiere y puede o no subirme o bajarme una o varias líneas de las que originalmente se mostraban.

Efecto desagradable para el usuario. Si pulsa Shift - Click los registros marcados no están donde está el cursor del ratón y es un poco desconcertante.

Solución que pensé, clonar el DataSet, y completar mi lista de seleccionados con los números internos que contenga el DataSet clonado, y de esta manera no mover el puntero de mi DBGrid original, y con un Repaint conseguir el efecto de marcado de todos los registros que habré seleccionado en el DataSet clonado.

Espero haberme explicado correctamente. No sé de qué otra manera hacerlo con el DBGrid propio del Delphi. Descartado utilizar componentes de terceros.

A lo mejor me dais otros consejos diferentes.

Gracias a todos.
__________________
Piensa siempre en positivo !
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
Duplicar / Clonar tabla con ADO Marcb3 Conexión con bases de datos 2 30-01-2007 13:15:37
Como Clonar un ibDataset???? AGAG4 Firebird e Interbase 4 28-10-2004 17:21:36
IBX TIBDataset ¿cómo lanzar las distintas sentencias en él? trastamara Firebird e Interbase 5 08-09-2004 00:36:14
Búsquedas y TIBDataSet Clantt Conexión con bases de datos 0 12-08-2004 01:01:07
Orden en TIBDataset barman Firebird e Interbase 6 24-11-2003 21:26:00


La franja horaria es GMT +2. Ahora son las 22:04:09.


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