Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 17-01-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Código Delphi [-]
DM.TblPedidos.First;
  while not DM.TblPedidos.Eof do
  begin
    DM.TblPedidos_seg.Insert;
    DM.TblPedidos_seg.FieldByName('Id').AsString := DM.TblPedidos.fieldbyname('Id').AsString;
...
//   no puedes empezar a grabar los detalles, porque la maestra todavia
//   no se ha guardado.
    dm.TblPedidos_seg.Post; //<<<< ahora si se ha guardado el maestro.
//                                 ya podemos empezar con los detalles.
    dm.tblArticulosPedidos.First; // claro, empezamos en el primero.
    while not DM.TblArticulosPedido.Eof do
      begin
        DM.TblArticulosPedido_seg.Insert;
        DM.TblArticulosPedido_seg.FieldByName('Articulo').AsString := DM.TblArticulosPedido.fieldbyname('Articulo').AsString;
...
        DM.TblArticulosPedido_seg.Post;
        DM.TblArticulosPedido_seg.Next; <<<<<end;
    DM.TblPedidos_seg.Post;<<<<<<<<< esto sobra
    DM.TblPedidos_seg.Next;<<<<<<<<< esto sobra
    DM.TblPedidos.Next; // exacto, la misma tabla del bucle.
  end;

Solo me queda un par de dudas.

No sé ni me voy a parar en mirar que campos son los que actuan en la relación maestra-detalle y cuales son claves primarias. Tú debes saberlo exactamente y debes tener mucho cuidado. Si en tblPedidos-tblArticulosPedido lo une un código que tiene el valor 10, puede que ese ya exista en tblPedidos_seg No sé pero es algo a tener en cuenta.

Para los indices, asegurate de que todas las tablas tengan en el evento afterpost ttable.FlushBuffers.

saludos y espero se entienda
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #22  
Antiguo 17-01-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Resumiendo:

Código:
maestra.first
while not maestra.eof do
begin
  otraMaestra.Insert
  copiar campos
  otraMaestra.Post

  Detalle.First
  while not Detalle.eof do
  begin
     OtraDetalle.Insert;
     copiar campos
    OtraDetalle.Post;

    Detalle.Next;
  end; 
  Maestra.Next;
end;
Ojo con poner instrucciones TTable.DisableControls, porque con tablas paradox y BDE se rompe la relación maestra-detalle, y entonces si que la liamos usa TTable.BlockreadSize := 1024 y ttable.BlockReadSize := 0; mira en la ayuda para más información.

saludos de nuevo
saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #23  
Antiguo 18-01-2006
Mathom Mathom is offline
Miembro
 
Registrado: nov 2005
Posts: 72
Poder: 19
Mathom Va por buen camino
Ante todo gracias a los dos por vustras respuestas, la verdad, hasta me resultaba incómodo pediros permiso para poner todo el código pero son las cosas que tiene la desesperación...diciendo eso voy por partes:

Contraveneno
Cita:
Con todo respeto, si pones todo el código yo no lo leería
No te preocupes, es muy lógico, el foro está para ofrecer soluciones, no trabajos enteros ni tener que estar 30 min. leyendo código..realmente el código no es tanto pero hubiese llamado la atención..de ahí que pidiese permiso. Lo dicho, no te preocupes y gracias...

Ahora ya, yendo al tema..gracias Lepe, ahora mismo voy a probarlo a ver que tal, sólo un par de cosillas:

Lepe
Cita:
Si en tblPedidos-tblArticulosPedido lo une un código que tiene el valor 10, puede que ese ya exista en tblPedidos_seg No sé pero es algo a tener en cuenta.
Antes de proceder al copiado de las tablas, borro todo el contenido de éstas para que no me pase exactamente eso, que intente copiar un registro que ya esté. Por lo tanto, es correcto lo que estoy intentando hacer, no??

Por último, que se pretende con TTable.BlockreadSize := 1024 y ttable.BlockReadSize := 0;??? De todos modos como tu dices ahora le echaré un vistazo en la ayuda.


Bueno, voy a intentar...gracias amigos!!
Responder Con Cita
  #24  
Antiguo 18-01-2006
Mathom Mathom is offline
Miembro
 
Registrado: nov 2005
Posts: 72
Poder: 19
Mathom Va por buen camino
Una cosilla más...Lepe comenta

Cita:
Para los indices, asegurate de que todas las tablas tengan en el evento afterpost ttable.FlushBuffers.
Sería exactamente ttable.FlushBuffers y ttable se refiere a la tabla en la cual estamos o sería TblPedidos.FlushBuffers, TblAlbaran.FlushBuffers, y así sucesivamente..(esto por supuesto cada una en su tabla).

Cuando te refieres a todas las tablas son todas todas o todas las que terminan en "_seg"???

De nuevo gracias y perdón por mi inexperiencia.
Responder Con Cita
  #25  
Antiguo 18-01-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Bueno... en realidad no es para los índices, pero si puede ayudar. Eso hace que los datos se escriban a disco desde la RAM, así despues de grabar auque haya un corte de luz, los datos no se pierden.

Puedes usar un solo evento AfterPost para todas los TTables. Seleccionas una tabla, te vas al inspector de objetos y en el evento Afterpost escribes "AfterPostTodasLasTablas"

En su interior escribes esto:
Código Delphi [-]
TTable(Sender).FlushBuffers

Ahora mantienes presionada la tecla Shift (alternar mayusculas y minúsculas) y vas dando clics a todas las tablas, una vez que las tienes todas seleccionadas a la vez, vuelves al inspector de Objetos, y en el evento AfterPost eliges de la lista desplegable el que tú has hecho.

Todas las tablas comparten el mismo evento, y puesto que el parámetro Sender es la tabla que se mande hacer el Post, hará el Flushbuffers para todas ellas

Cuando digo tablas, me refiero a todos los TTables que tengas en tu programa.

¿Perdonarte por tu inexperiencia? ni hablar, agradecerte que te intereses por todos los temas que se han comentado

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 18-01-2006 a las 11:54:30.
Responder Con Cita
  #26  
Antiguo 25-01-2006
Mathom Mathom is offline
Miembro
 
Registrado: nov 2005
Posts: 72
Poder: 19
Mathom Va por buen camino
Hola a todos, siento haber tardado en responder...estaba malito.

A ver, creo que es el último problemilla que se me presenta...resulta que si realizo la copia de seguridad me funciona correctamente, ahora...si le vuelvo a dar a realizar copia me da un error "Master Record Missing".

Si cierro la aplicación y la vuelvo a arrancar y pulso de nuevo copia de seguridad me lo vuelve a hacer correctamente, es decir, no puedo ejecutarlo dos veces en la aplicación sin cerrarla y arrancarla de nuevo...

...a que puede ser debido???

si soluciono esto habré terminado y seré feliz....al fin.

Gracias a todos...
Responder Con Cita
  #27  
Antiguo 26-01-2006
poniente poniente is offline
Registrado
 
Registrado: ene 2006
Posts: 9
Poder: 0
poniente Va por buen camino
no se como crear nuevo tema

Cita:
Empezado por Neftali
Seguramente en la tabla destino ya existe un valor igual al que estás intentando copiar.
Hola soy nuevo en este foro y no se como crear un nuevo tema,
agradeceria que me lo explicasen, muchisimas gracias y perdonad mi
ignorancia.

GRACIAS
Responder Con Cita
  #28  
Antiguo 26-01-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
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 poniente
Hola soy nuevo en este foro y no se como crear un nuevo tema
Hola y bienvenido.

(1) Desde la página principal de ClubDelphi: http://www.clubdelphi.com pulsa en Foros; Parte superior derecha.
(2) Selecciona el foro más adecuado para tu tema.
(3) Por encima de los mensajes verás un botón que pone "Nuevo Hilo".

Antes de escribir te recomiendo que leas la guía de estilo
Cuando escribas, escoge un título que describa bien el problema y explica lo que te pasa con detalle y dando datos de con qué trabajas (Delphi, Base de Datos, versiones que utilizas,...)
Si es referente a código, es bueno que también coloques algún trozo del código.

Un saludo.
__________________
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
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
Transacción en tablas InnoDB FunBit MySQL 1 02-01-2006 17:26:58
Copiar tablas Access TONIAM Conexión con bases de datos 0 22-04-2005 11:36:18
Copiar registros ordenados a otras tablas... Phacko Conexión con bases de datos 6 06-01-2005 01:08:27
ayuda al copiar dos tablas.... ronimaxh Firebird e Interbase 4 16-04-2004 17:34:39


La franja horaria es GMT +2. Ahora son las 11:57:14.


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