![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Reemplazar en lugar de insertar
He buscado por el foro pero no supe encontrarlo. Antes de todo gracias por la ayuda.
Uso Delphi 7 y firebird. En un momento determinado creo una tabla y en ella grabo unos registros, estos los paso mediante sql a una segunda tabla. Lo hago así... Cita:
No sé cómo puedo hacer para que los registros si ya existen se reemplacen y si son nuevos se añadan. Pd- Antes usaba el batchmove pero va muy lento... Gracias de nuevo. |
|
#2
|
||||
|
||||
|
Pues creo que no te queda otra que primero hacer la búsqueda (por clave primaria) y dependiendo de si lo encentra o no realizar el INSERT o UPDATE.
Otra opción, pero que en el fondo es lo mismo, es realizar el INSERT, capturar el error de clave duplicada y en ese momento realizar el UPDATE.
__________________
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. |
|
#3
|
||||
|
||||
|
Busca detalles sobre el comando MERGE de Firebird.
Por ejemplo aqui :http://www.firebirdsql.org/refdocs/l...d21-merge.html ... y te sorprenderás, al igual que lo hice yo en su día, del potencial de esa instrucción. ![]()
__________________
Piensa siempre en positivo ! |
|
#4
|
|||
|
|||
|
Gracias mi miraré Merge... y si no a hacer lectura sequencial...
|
|
#5
|
||||
|
||||
|
Aunque me llama la atencion del motivo de insertar muchas veces los mismo datos, pues no acabo de enteder el por qué
, a no ser que ciertos campos cambien, excepto los campos primarios, pero si los datos no cambian en ningun momento, entonces es en vano estar modificando a cada rato...Bueno.. en MySQL existe la sentencia REPLACE que funciona exactamente como INSERT, excepto que si un valor de la tabla tiene el mismo valor que un nuevo registro para un índice PRIMARY KEY o UNIQUE , el antiguo registro se borra antes de insertar el nuevo. Yo no uso Firebird pero supongo que debe existir algo similar aunque viendo el link del amigo gluglu veo que existe el comando MERGE en firebird supongo que debe ser similar.![]() Saludos... ![]()
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 |
|
#6
|
||||
|
||||
|
No había oído sobre este comando. Curioso e interesante.
![]()
__________________
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. |
|
#7
|
|||
|
|||
|
Gracias rgstuamigo, ya vi que MySql daba la posibilidad, pero Firebird no...
Explicaré porque debo hacer lo que parece una cosa ilógica... El programa lanza un pac de albaranes, estos puede que sean los definitivos o no... En el caso de que lo fueran, los albaranes se graban en un archivo definitivo. El problema es que algunas veces, antes de sacarlos se dan cuenta que deben hacer modificaciones... Con lo que vuelven a lanzarlos y la información se debe reemplazar en el archivo definitivo. No nos sirve editar el albaran uno a uno, las modificaciones suelen ser en bloques, y la gestión de modificar es más complicada por la forma de trabajo que la de volver a lanzar y reemplazar... No sé si me habré explicado bien. En cualquier caso es lo que necesito. A todos muchos gracias. Si consigo algo con MERGE lo publico. |
|
#8
|
|||
|
|||
|
Cita:
![]() Gracias gluglu y a todos los que habeis aportado algo. Para que funcionara he tenido que actulizar Firebird a una versión más moderna, pues esta instrucción funciona a partir de la 2.1. Una vez realizada la actualización he implantado este código... Ahora estoy probando si funciona bien o no, el código es este. Cita:
Última edición por campiki fecha: 31-03-2011 a las 12:18:55. |
|
#9
|
|||
|
|||
|
Funciona bien y rápido...
|
|
#10
|
||||
|
||||
|
Me alegro !
![]()
__________________
Piensa siempre en positivo ! |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Insertar registro en grilla en un lugar particular | zugazua2001 | Varios | 3 | 05-02-2010 16:14:06 |
| Como insertar una tabla en un lugar especifico....WORD | juliobuitrago | Servers | 3 | 02-10-2008 18:00:05 |
| Cada cosa en su lugar | jcarteagaf | Humor | 2 | 22-05-2008 15:58:53 |
| Lugar en un String | Carmelo Cash | Varios | 2 | 13-08-2004 15:20:47 |
| El mas novato del lugar | pepelu1975 | OOP | 1 | 10-02-2004 16:55:39 |
|