Ver Mensaje Individual
  #3  
Antiguo 15-03-2011
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Reputación: 22
gatosoft Va camino a la fama
completamente de acuerdo con oscarac, la idea es que siempre que escribas una línea de código pienses como afecta tu arquitectura "multi-base de datos"

Por tanto lo mejor (o por lo menos lo que yo recomiendo) es que separes todo el codigo SQL en una capa de acceso a datos...

cuando hablamos de "separar en otra capa" no necesariamente significa utilizar tecnologias "avanzadas" como datasnap o corba... sencillamente hablamos de ordenar tu codigo de tal manera que no dejes regado por ahi todo tu SQL, sino mas bien encapsularlo en uno o mas datamodule's para que sea mantenible.

--- Agregado ---

Se me olvidaba, si puedes utilizar dbExpress como dices, cambiando los parametros iniciales de conexión en tiempo de ejecución, debes tener enc uenta que las opciones de dbExpress son limitadas... puedes tambien hacer este trabajao con ZEOS, ADO, o cualquier otro, inclusive a través de ODBC... que se yo... pero como ya se trató en otro foro, yo recomiendo dbExpress por que es nativo, y es a loq ue le está apostando embarcadero hacia el futuro...


para las consultas, un breve ejemplo:

Código:
Unit1:
-----------
TFactura = class(TObject)
Public
  Function Grabar: Boolean;
end;

Function TFactura.Grabar: Boolean;
begin
  // Validaciones ...
  Datamodule1.GrabarFactura(Self);
end;

Datamodule1:
-----------

Procedure TDatamodule1.GrabarFactura(LaFactura: TFactura);
Begin
  if (strTipoBase = 'SYBASE') then
     strSQL := 'Insert into....';

  if (strTipoBase = 'SQL-SERVER', 'ORCALE') then
     strSQL := 'Insert into....';

  SqlQuery.SQl.text := strSQL;
  SqlQuery.ExecSQL;

End;

Última edición por gatosoft fecha: 15-03-2011 a las 22:42:04.
Responder Con Cita