Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-05-2020
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 20
olbeup Va camino a la fama
Question 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?



Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #2  
Antiguo 22-05-2020
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 20
luisgutierrezb Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 22-05-2020
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 20
olbeup Va camino a la fama
Eso está muy bien, pero me puede poner un ejemplo?, la tabla access no la puedo manipular ni tampoco modificar.


Gracias.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #4  
Antiguo 22-05-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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
Responder Con Cita
  #5  
Antiguo 22-05-2020
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 20
olbeup Va camino a la fama
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.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #6  
Antiguo 22-05-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por olbeup Ver Mensaje
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.
Responder Con Cita
  #7  
Antiguo 22-05-2020
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 20
olbeup Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
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é.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #8  
Antiguo 22-05-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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.
Responder Con Cita
  #9  
Antiguo 22-05-2020
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 20
olbeup Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
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.

Un saludo
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
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
Como Insertar Datos a una tabla desde Un Sp DasGrun Firebird e Interbase 2 31-05-2014 02:50:14
Insertar datos en una tabla desde consulta en un SP subzero MS SQL Server 2 05-12-2007 17:18:19
Error de Sintaxis al Insertar datos a una tabla desde otra alastor SQL 9 28-09-2006 19:27:09
insertar datos en una tabla desde fichero XML??? mguixot Conexión con bases de datos 2 17-05-2006 17:18:04
insertar datos en una tabla desde otra Giniromero SQL 5 17-06-2004 20:37:16


La franja horaria es GMT +2. Ahora son las 19:52:35.


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