Club Delphi  
    Paypal   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 27-01-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por delphijm Ver Mensaje
- Con los dos TClientDataSets disponibles, me interesaria copiar los
registros del segundo TClientDataSet en el primero.

- Lo que no quiero es que los registros que he insertado en el primer
TClientDataSet se actualicen en la Base de datos al hacer el
ApplyUpdates porque ya estan en ella...

Como puedo indicarle a un TClientDataSet que algunos de los registros que contiene no deben ser actualizados al hacer el ApplyUpdates???
Cuando dices "copiar registros" a qué te refieres?
¿Los has insertado? ¿Los has actualizado?

No acabo de entender cómo puedes diferenciar (y cómo lo va a hacer el ApplyUpdates) los unos y los otros.

Tal vez la lógica del proceso no sea la correcta, porque no acabo de entender el porqué de esos pasos. ¿Puedes explicar qué necesitas hacer (además del cómo que ya has explicado) para ver si hay otra forma de enfocarlo?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #2  
Antiguo 27-01-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
fjcg02 Va camino a la fama
Si aplicas applyupdates a nivel de registro ( evento afterpost del dataset), podías añadir un campo que indique el origen del registro.

En este caso, en el evento que te he indicado, podrías hacer lo siguiente:

( es pseudo código ...)
if dataset.fieldbyname('origen').AsString ='A' then
dataset.AppplyUpdates(0);


siendo origen el campo calculado que contendrá A en los registros cuyo origen sea la tabla a modificar y otro valor en el caso de que sean los registros insertados la otra tabla.

Incluso se podría controlar que en base a ese valor, unos registros sean editables y otros no.

Si no se indica la primera premisa, lo veo bastante más difícil.


Espero haberte ayudado en algo.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #3  
Antiguo 07-02-2011
delphijm delphijm is offline
Miembro
 
Registrado: abr 2008
Posts: 47
Poder: 0
delphijm Va por buen camino
Hola,

La idea del campo que actua como flag para conocer el origen del registro me parece muy buena... La aplicare... Muchas gracias a tod spor la ayuda...
Responder Con Cita
  #4  
Antiguo 08-02-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Sin menospreciar la aportación de Javier, me uno a las preguntas de Neftalí.

delphijm: ¿podrías dedicarnos un par de minutos para explicar con mayor detalle y contexto tu caso?

Fue un poco desconsiderado de tu parte que volvieras a escribir sin responder a las preguntas que él te hizo con el fin de ayudarte. Lo cortés no quita lo valiente, compadre.

En lo personal, conozco algunos de los mecanismos internos de TClientDataSet. Si aclaras el tema, quizá pueda proponerte alguna buena alternativa.

Un abrazo por el arco del triunfo.

Al González.
Responder Con Cita
  #5  
Antiguo 09-02-2011
delphijm delphijm is offline
Miembro
 
Registrado: abr 2008
Posts: 47
Poder: 0
delphijm Va por buen camino
Hola a todos,

Antes de nada, Al, tienes razon en lo de que fui desconsiderado al no responder a las preguntas de Neftali y Javier cuando me ofrecieron su ayuda... Perdon a todos y a ti tambien...

A continuacion os expongo lo que quiero hacer... El como, como dices ya lo dije pero quizas no sea la forma correcta...

El caso es que estoy desarrollando una aplicacion de gestion de planing de carga de vehiculos en diferentes centros de expedicion...

Existen varios centros de expedicion y tambien varios vehiculos...
Cada centro de expedicion tiene asignados unos vehiculos concretos...

Por ejemplo:
--> Centros de expedicion --> 1=Centro 1, 2=Centro 2
--> Vehiculos --> VEH01, VEH02, VEH03

El mecanismos del planing es que, en un centro de expedicion se visualizan los vehiculos que estan asignados al centro...

Por ejemplo:
--> En el centro de expedicion 1 --> Vehiculos asignados VEH01, VEH02
--> En el centro de expedicion 2 --> Vehiculos asignados VEH03

Cuando se gestiona el planing del centro de expedicion 1, se crean tantas expediciones a uno de los vehiculos como pueda realizar en el dia.

El tema esta en que puede ser que el vehiculo VEH03 que corresponde al centro 2 tambien puede añadirse, eventualmente, en el centro 1 para realizar alguna expedicion...

Asi, puede darse el caso que un vehiculo, por ejemplo VEH03 el mismo dia tenga una expedicion en el centro 1 i otra en el centro 2...

Ahora viene el problema:

Cuando se empieza a gestionar el planing, se pide al usuario que centro de expedicion quiere gestionar...

Cuando escoje, por ejemplo, el centro 1, yo recupero de la BBDD todas las expediciones asignadas al centro 1..

Centrandonos en el vehiculo VEH03, en el ClientDataSet de expediciones tendre la/las expediciones del vehiculo del centro 1, pero no tengo la expedicion que pudiera tener en el centro 2 (ya que estoy gestionando el centro 1)...

Me interesa que esa expedicion tambien aparezca para que el usuario sepa de la existencia de esa otra expedicion...

Lo que queria hacer, es, recuperar en otro dataset todas las expediciones del vehiculo VEH03, independientemente del centro.

Como me interesaria trabajar con unico dataset porque lo tengo enlazado con un control de agenda (al que claro, solo puedo enlazar un ClientDataSet), mi idea era añadir los registros del segundo al primero (y "general")... Una especie de "merge"...

Pero claro, para añadir los registros al primer dataset tendre que hacer append's y el ClientDataSet va a "pensar" que son nuevos registros (de hecho para el si, pero no para la BBDD), con lo que cuando haga el applyupdates intentara insertar y provocara un error de clave duplicada...

JAVIER --> Si, hago el applyupdates a nivel de registro en el afterpost... Por eso me parecia que tu idea podia ser factible...

NEFTALI --> Quizas lo que expongo aclare las dudas que veias y, si quizas no es la mejor forma de hacerlo...

AL --> Te agradecere cualquier alternativa mejor que puedas proponerme... Ademas me alegro que tengas experiencia en el trabajo con el TClientDataSet, yo los uso y los tendre que usar con cierta intensidad, en general todo el mecanismo de acceso a Datos de DbExpress... Soy relativamente nuevo en el desarrollo en Delphi y en ocasiones me trabo en los lugares mas insospechados!!!

Gracias a todos y un saludo

Josep Mª
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
Insertar Registros en Delphi para PHP ovasquez PHP 0 25-10-2008 23:24:54
Registros modificados en un TClientDataSet Dado de baja Conexión con bases de datos 0 06-10-2008 22:21:32
insertar registros hxochitemol Conexión con bases de datos 1 02-06-2007 01:21:56
Como Insertar por Procedimiento 10 o mas registros para un calendario de pagos? IcebergDelphi Firebird e Interbase 1 20-05-2007 22:23:56
Insertar registros en MySQL TONIAM MySQL 0 24-05-2005 15:47:49


La franja horaria es GMT +2. Ahora son las 09:37:35.


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