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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-06-2018
juniorSoft juniorSoft is offline
Miembro
 
Registrado: Apr 2005
Posts: 111
Poder: 14
juniorSoft Va por buen camino
Firedac añadiendo registro ya existente al paquete actual

Hola de nuevo Amigos,

Les planteo mi inquietud:

Utilizando Firedac con Delphi Berlin tengo lo siguiente

un Formulario con un DBGrid en el cual realizo busquedas conectado a un FDQuery, en dicho formulario un toolbar para realizar distintas tareas(insertar, modificar, etc) un (CRUD), estas tareas la realizo en un formulario modal conectado a otro FDQuery, la idea es que si realizo busquedas en el primer FDQuery y dicho FDQuery tiene ya un conjunto de resultados al yo añadir un registro en el formulario Modal con el otro FDQuery ver el nuevo registro sin perder el conjunto de resultados anterior del primer FDQuery.

Saludos,
Responder Con Cita
  #2  
Antiguo 08-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.472
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Y la pregunta es...
Responder Con Cita
  #3  
Antiguo 08-06-2018
juniorSoft juniorSoft is offline
Miembro
 
Registrado: Apr 2005
Posts: 111
Poder: 14
juniorSoft Va por buen camino
Hola Casimiro, disculpas

La Pregunta es ¿Como puedo incluir un registro insertado en un dataset A en el paquete de registros ya consultados de otro dataset B? Ojo con el metodo Refresh de los FDQuery se puede refrescar la consulta y obtener el registro siempre y cuando este coincida con las condiciones de los filtros actuales. Pero la idea es que aunque no coincidan los filtros actuales aparezca el registro insertado y que el usuario se percate de que este se inserto.
Responder Con Cita
  #4  
Antiguo 08-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.472
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Veamos si lo he entendido. Ejemplo, tienes un select:
Código SQL [-]
select codigo, nombre from tbClientes where pais='FRANCIA';
Y luego tienes otro select:
Código SQL [-]
select codigo, nombre from tbClientes where pais='RUSIA';
Y quieres que el registro del segundo select se añada al primer select.

Obviamente eso no es posible.


La verdad es que no se me ocurre el motivo de querer complicarte la vida con eso.
Responder Con Cita
  #5  
Antiguo 08-06-2018
juniorSoft juniorSoft is offline
Miembro
 
Registrado: Apr 2005
Posts: 111
Poder: 14
juniorSoft Va por buen camino
Cita:
La verdad es que no se me ocurre el motivo de querer complicarte la vida con eso.
Quizas no me he dado a entender muy bien

Tomando como ejemplo la misma consulta


Código SQL [-]
select codigo, nombre from tbClientes where pais='FRANCIA';

si tengo un FDQuery que tiene esta consulta y me las muestra en un grid a lo mejor trae muchos registros y las actualizaciones las estoy realizando en un FDQuery que se limita a un registro

Código SQL [-]
select codigo, nombre from tbClientes where idCliente=:idCliente;


Cuando inserto dicho registro utilizando este segundo FDQuery lo que deseo es que aparezca en el resultado del primero aunque el primero tenga una condición distinta al que estoy insertando para que el usuario se percate de que se inserto. Con los DatasetProvider y ClientDataset esto se realiza fácilmente por lo que en Firedac debe ser igual de fácil. En una aplicación en 3 capas en el afterApplyUpdate del Provider puedo realizar una consulta condicionándola por el registro insertado y añadiendola al paquete que registros que tiene cargado el primero y luego en el afterApplyUpdate del ClientDataset con el metodo AppendData() en la capa de presentación puedo visualizar el registro junto con los que tiene cargado.

Estoy evita tener que consultar de nuevo el paquete de registros completo ademas de que las actualizaciones se realizan utilizando un dataset configurado exclusivamente para actualizaciones mientras que el otro que esta orientado exclusivamente a consultas
Responder Con Cita
  #6  
Antiguo 09-06-2018
juniorSoft juniorSoft is offline
Miembro
 
Registrado: Apr 2005
Posts: 111
Poder: 14
juniorSoft Va por buen camino
Buscando y buscando ya lo encontre

Ahí esta por si alguno de los compañeros se le presenta algo similar.
Código Delphi [-]
FDCommand1.CommandText := 'select ... from ... where id= :id';
FDCommand1.Open;
FDCommand1.Fetch(ADQuery1.Table);
FDCommand1.Close;

Última edición por Casimiro Notevi fecha: 09-06-2018 a las 16:31:51. Razón: Etiquetas [delphi] [/delphi]
Responder Con Cita
  #7  
Antiguo 09-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.472
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Qué es ADQuery1.Table?
Responder Con Cita
  #8  
Antiguo 09-06-2018
juniorSoft juniorSoft is offline
Miembro
 
Registrado: Apr 2005
Posts: 111
Poder: 14
juniorSoft Va por buen camino
Hola Casimiro

Cita:
¿Qué es ADQuery1.Table?
Ahora que me fijo hay un error ahí, podriamos llamarlo FDQuery1 (A) el cual corresponde al fdquery al que le deseo agregar los datos del otro FDQuery(B), pero aun sigo teniendo inconvenientes porque me esta quitando los datos anteriores y me esta mostrando los del ultimo FDQuery(B) que es lo no deseo.

El link de donde busque la informacion esta aquí, si alguien lo ha podido mejorar, agradezco su colaboración.

Fetching and Populating Questions (FireDAC)
Responder Con Cita
  #9  
Antiguo 10-06-2018
juniorSoft juniorSoft is offline
Miembro
 
Registrado: Apr 2005
Posts: 111
Poder: 14
juniorSoft Va por buen camino
La programación se trata de prueba y error, al fin di con el cometido

Si se trata el FDQuery como un FDMemTable, con una sola linea esta resuelto

Código:
TFDMemTable(FDQuery1).AppendData(FDQuery2);

Con ello se incluye el registro insertado en el FDQuery2 al paquete de registros abiertos de FDQuery1
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
Generar Hash a partir de Registro Firedac juniorSoft Conexión con bases de datos 3 06-07-2016 11:30:07
Aviso de registro existente en BD radenf Varios 6 23-04-2009 03:00:10
Registro actual en quick report ctrl_attack Impresión 10 15-01-2009 05:51:13
Número de registro actual (DBGrid) FGarcia Varios 10 29-02-2008 23:38:48
SelectSQL del registro actual Tomás SQL 2 04-03-2004 00:23:18


La franja horaria es GMT +2. Ahora son las 18:53:09.


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