Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Cruzar datos desde Firebird con una tabla de MS Access e insertar los que no esten (https://www.clubdelphi.com/foros/showthread.php?t=94683)

olbeup 21-05-2020 21:52:26

Cruzar datos desde Firebird con una tabla de MS Access e insertar los que no esten
 
Hola Gente,


Hace tiempo que no realizo ninguna pregunta, como puedo hacer desde una consulta de SQL desde Firebird cruzar datos con una tabla de MS Access, la base de datos MS Access tiene que estar por que pertenece a un organimos público y lo que quiero hacer es crearme una tabla en firebird y sólo añadir los datos que no estén para no estar interrogando siempre a la MS Access y solo hacerlo con Firebird.


Código SQL [-]
INSERT INTO TablaFirebird
  (
    CAMPOFB1
    ,CAMPOFB2
    ,CAMBOFBx
  )
  SELECT
      CAMPOMSACC1
      ,CAMPOMSACC2
      ,CAMPOMSACCx
    FROM [Aquí vendría la tabla externa de MS Access]
Esto se podría hacer? :confused::confused:



Un saludo.

luisgutierrezb 22-05-2020 02:11:00

Si se puede, desde access con el controlador odbc vinculas la tabla de firebird y en access con una consulta puedes hacer join de las tablas y actualizar lo que necesites

olbeup 22-05-2020 08:37:57

Eso está muy bien, pero me puede poner un ejemplo?, la tabla access no la puedo manipular ni tampoco modificar.


Gracias.

Casimiro Notevi 22-05-2020 10:38:39

Una conexión a "Access", lees del primero al ultimo y vas consultando si existe en la de firebird.
Que no existe, lo das de alta. Que existe, pasas al siguiente.

Código:

access.conectar
firebird.conectar

mientras no access.eof
  valor = access.registroactual
  if not existe firebird.valor then
    firebird.crear(valor)
  access.siguiente
fin access

close.firebird
close.access


olbeup 22-05-2020 11:28:10

Hola Casimiro Notevi,


Eso ya lo tengo controlado, de hecho lo tengo así, pero va muy lento recorriendo mas de 200.000 registros, tarda unos 3 minutos y eso es mucho. No estoy muy puesto en Firebird lo mio es SQL Server y, con este motor no hay ningún problema en vincular base de datos.

Lo que yo queria era hacerlo todo en una SQL y solo insertar aquellos registros que no esten.

He visto que en Firebird existe la sentencia EXTERNAL, no se podría hay meter la tabla del acces?, quizas estoy diciendo un disparate.

Seguire buscando haber si encuentro lo que quiero hacer.


Un saludo.

Casimiro Notevi 22-05-2020 11:40:47

Cita:

Empezado por olbeup (Mensaje 537358)
Eso ya lo tengo controlado, de hecho lo tengo así, pero va muy lento recorriendo mas de 200.000 registros, tarda unos 3 minutos y eso es mucho. No estoy muy puesto en Firebird lo mio es SQL Server y, con este motor no hay ningún problema en vincular base de datos.
Lo que yo queria era hacerlo todo en una SQL y solo insertar aquellos registros que no esten.
He visto que en Firebird existe la sentencia EXTERNAL, no se podría hay meter la tabla del acces?, quizas estoy diciendo un disparate.
Seguire buscando haber si encuentro lo que quiero hacer.
Un saludo.

Supongo que te refieres a MS sql server, y es del mismo dueño que MS access, por eso podrás vincular ambos.
De todas formas, 3 minutos no es tanto, o acaso ¿tienes que repetir el proceso cada x tiempo?
Lo de external de firebird puedes usarlo, pero tendrás que exportar los datos de MS access a esa tabla externa que luego pueda leer firebird.
Eso sí puede ser rápido.

olbeup 22-05-2020 11:53:48

Cita:

Empezado por Casimiro Notevi (Mensaje 537360)
Supongo que te refieres a MS sql server, y es del mismo dueño que MS access, por eso podrás vincular ambos.
De todas formas, 3 minutos no es tanto, o acaso ¿tienes que repetir el proceso cada x tiempo?
Lo de external de firebird puedes usarlo, pero tendrás que exportar los datos de MS access a esa tabla externa que luego pueda leer firebird.
Eso sí puede ser rápido.


El MS SQL Server puedes vincular creo cualquier motor de base de datos y atacarlos como si fueran tus tablas.

La tabla MS Access se actualiza todos los meses y tengo que incorporar los nuevos registros a la tabla de Firebird 2.5, para que el programa pueda hacer un "SELECT, JOIN, ETC" sin que tenga que abrir la tabla del MS Access y vaya más fluido el programa.

Un saludo.


P.D: Debe de haber algo por hay y, lo encontraré.

Casimiro Notevi 22-05-2020 12:10:52

A lo mejor con ODBC.
Aunque para una vez al mes, puedes crear un proceso automático que lo haga a las 4 de la madrugada, total para 3 minutos.

olbeup 22-05-2020 12:56:59

Cita:

Empezado por Casimiro Notevi (Mensaje 537364)
A lo mejor con ODBC.
Aunque para una vez al mes, puedes crear un proceso automático que lo haga a las 4 de la madrugada, total para 3 minutos.


Eso lo tengo que hacer en cada cliente (1300 Clientes), y ellos apagan el ordenador, algunos se lo dejan encendidos, pero bueno, lo mejor es hacerlo en un Thread cuando lo encienda, de esta forma el programa ira fluido mientras se está actualizando los datos del MS Acces a Firebird sin que interfiera en el buen funcionamiento del programa.

Muchas gracias por estar hay. :D^\||/

Un saludo


La franja horaria es GMT +2. Ahora son las 19:31:01.

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