Club Delphi  
    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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Sistema MultiBase de Datos

buenas madrugadas....

Tengo una inquietud ahora que me he visto obligado avanzar mi sistema en 2 lugares distintos....
en uno de ellos uso access y en el otro MS SQL Server

entonces... en las consultas hago algo asi....

Código Delphi [-]
 
if Casa then
..... StrSql := 'Select..... // Query que funcione en SQL Server
Else
..... StrSql := 'Select.... // Query que funcione en Access

existe o alguien sabe un mejor metodo?

gracias
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 30-03-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Podrías hacer una función a la que le pases una sentencia SQL y te devuelva una traducida para el motor de base de datos que necesites.

Lo que desconozco son las diferencias entre las sintaxis SQL de uno y otro motor.

Código Delphi [-]
{Le envías un sentencia SQL que funcione en MSSQL y te devuelve una que funciona en Access}
procedure TraduceSQL(SQL : string) : string;
begin
   if (Casa) then
      Result := SQL;
   else
   begin
      // Aquí viene lo dificil
      // modificar las partes del sql que no funcionen en Access
      ...
   end;
end;

StrSql := TraduceSQL('SELECT ...');
Responder Con Cita
  #3  
Antiguo 30-03-2011
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.282
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
En mi caso era un sistema bastante más complejo, ya que se trataba de tener algo similar pero para 5 SGBD's distintos. En nuestro caso utilizamos herencia.

Una clase genérica TGenSQL con los métodos necesarios para generar todas las SQL. A partir de ahí se derivan las clases para cada motor concreto, de forma que debes redefinir sólo aquellas propiedades que en cada motor son diferentes.
__________________
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
  #4  
Antiguo 30-03-2011
Avatar de RICTAPIA5
RICTAPIA5 RICTAPIA5 is offline
Miembro
 
Registrado: mar 2010
Posts: 41
Poder: 0
RICTAPIA5 Va por buen camino
dephi access & sql server

Oscar

ya tengo una aplicacion que funciona el mismo fuente en acces y sqlserver

siempre y cuando uses TADO y sus conectores
y que la base de datos de sql server la hayas migrados desde la herramienta de exportación de access

vas a tener problemas con campos bit por lo que te recomiendo usar el 0 y 1 para asignar datos

y algunos temas de como se hacen group by

pero practicamente todo es lo mismo
Responder Con Cita
  #5  
Antiguo 30-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por RICTAPIA5 Ver Mensaje
Oscar

ya tengo una aplicacion que funciona el mismo fuente en acces y sqlserver
y como lo has echo? tienes nu ejemplo?

[quoted]
siempre y cuando uses TADO y sus conectores
y que la base de datos de sql server la hayas migrados desde la herramienta de exportación de access
[/quote]
uso ADO y exporte la base de datos del SQL Server a Access
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 31-03-2011
Avatar de RICTAPIA5
RICTAPIA5 RICTAPIA5 is offline
Miembro
 
Registrado: mar 2010
Posts: 41
Poder: 0
RICTAPIA5 Va por buen camino
Access & SQL Server

1)desde el acces 2007 (y hasta donde recuerdo el 2003 tambien puede)

crea tu BD y ponle las tablas que usarás y luego dale exportar a sqlserver


2)Para conectarme con SQL server usando Tadoconnection y esto lo leo desde un ini dependiendo de mi cliente

conxString= Provider=SQLNCLI.1;Password=1234567;Persist Security Info=True;User ID=sa;Initial Catalog=donativosleon13;Data Source=pragmatica\sqleng



3)
Para conectarme con Acces usando el MISMO Tadoconnection y esto lo leo desde un ini dependiendo de mi cliente

conxString= Provider=Microsoft.ACE.OLEDB.12.0;Password="";User ID=Admin;Data Source=C:\Donativos\donantivos.accdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDBatabase Password="";Jet OLEDB:Engine Type=6;Jet OLEDBatabase Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDBon't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False


4)Éste es un query en un TADOQUERY y funciona en los dos

SELECT
DONANTE.DOMICILIO_FISCAL,
DONANTE.COLONIA_FISCAL,
DONANTE.MUNICIPIO_ENVIO,
DONANTE.ESTADO_ENVIO,
DONANTE.RFC,
DONANTE.EMPRESA,
DONANTE.PUESTO,
DONANTE.CLAVE_SAE,
C_DESTINO_RECURSO.DESTINO_RECURSO,
DONATIVO.ID_DESTINO_RECURSO,
DONANTE.ID_DONANTE AS IDDONANTE, DONATIVO.ID_DONANTE, DONATIVO.ID_DONATIVO, DONANTE.DIA_COBRO_TARJETA, DONANTE.TITULO, DONANTE.NOMBRE, DONANTE.APELLIDO_PATERNO, DONANTE.APELLIDO_MATERNO, DONANTE.RECIBO_A_NOMBRE_DE, DONANTE.TELEFONO_OFICINA, DONANTE.TELEFONO_CASA, C_FORMA_PAGO.D_FORMA_PAGO, LAPSO_COBRO.D_LAPSO_COBRO, DONATIVO.COMENTARIO, DONATIVO.COMENTARIO_2, DONATIVO.MONTO_SUGERIDO, DONATIVO.MONTO_X_COBRAR, DONANTE.ID_BANCO
FROM C_BANCO INNER JOIN (LAPSO_COBRO INNER JOIN (DONANTE INNER JOIN (C_ESTADO_DONATIVO INNER JOIN (DONATIVO INNER JOIN C_FORMA_PAGO ON DONATIVO.ID_FORMA_PAGO = C_FORMA_PAGO.ID_FORMA_PAGO) ON C_ESTADO_DONATIVO.ID_ESTADO_DONATIVO = DONATIVO.ID_ESTADO_DONATIVO) ON DONANTE.ID_DONANTE = DONATIVO.ID_DONANTE) ON LAPSO_COBRO.ID_LAPSO_COBRO = DONANTE.ID_LAPSO_COBRO) ON C_BANCO.ID_BANCO = DONANTE.ID_BANCO
INNER JOIN
C_DESTINO_RECURSO C_DESTINO_RECURSO
ON (DONATIVO.ID_DESTINO_RECURSO = C_DESTINO_RECURSO.ID_DESTINO_RECURSO)
WHERE DONATIVO.ID_CAMPANIA=:PID_CAMPANIA
ORDER BY DONANTE.APELLIDO_PATERNO,DONANTE.NOMBRE

5)Desde mi humilde modo de ver a tu cliente que tiene acces deberías instalarle el sql server 2005 o 2008 la version EXPRESS y esa es gratuita y funciona perfectamente en una PC

cualquier cosa por favor dime
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
Cosmos con Multibase? Luprix Conexión con bases de datos 2 25-11-2010 11:35:48
¿Alguien conoce Multibase? vicacos Conexión con bases de datos 4 17-10-2008 15:21:17
Multibase Transtools WEdit NTVDM ha encontrado un error raulcarrasco SQL 0 22-01-2008 17:25:53
Nesecito ayudo Transtools Multibase armadillo Conexión con bases de datos 1 10-06-2005 14:20:40
Passar de Multibase a SqlServer aitken MS SQL Server 1 11-05-2004 22:35:49


La franja horaria es GMT +2. Ahora son las 07:51:12.


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