Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-01-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
La cara oculta de delphi 4 de ians marteens deja claro como hacerlo, aqui te pongo un trocito de código que yo uso.

notas:
MensajeAdd es simplemente un log de inicio de sesion que hago para detectar errores.
gl.db es un registro global de la aplicación donde se guarda las opciones (las inicializo desde un TiniFile)
Código:
if misession.Active then
  misession.Close;
     with MiSession do
  begin
  try
   MensajeAdd(true,'1   Configurar la sesion' );
   MensajeAdd(true,'1.1 Usando Carpeta de Red: '+gl.DB.NetFileDir );
     NetFileDir:=gl.DB.NetFileDir ;
   MensajeAdd(true,'1.2 Usando carpeta temporal: '+gl.DB.PrivateDir );
     PrivateDir:= gl.DB.PrivateDir  ;
   MensajeAdd(true,'1.3 Modo Sesion: cmAll');
   ConfigMode := cmAll;
   MensajeAdd(true,'1.4 Modo servidor: '+BooltoStr(ini.ReadInteger('Settings','RGClient',1)= 0,true));
   MensajeAdd(true,'2   Alias' );

   if IsAlias(gl.DB.Alias) then
   begin
    MensajeAdd (true,'2.1 Usando alias existente: '+gl.DB.Alias);
   end
   else
   begin
     MensajeAdd(true,'2.1 Creando Alias: '+gl.DB.Alias +' para la carpeta:'+gl.DB.DatabaseDir  );
     AddStandardAlias(gl.DB.Alias , gl.DB.DatabaseDir, 'Paradox');
   end;
  except
    on E:Exception do HandleException('Error al configurar la sesion',E);
  end;

  end;

  with dtbppal do
  begin
    try
       MensajeAdd(true,'3   Configurar Base de datos:');
    DatabaseName     := gl.DB.Alias ;
    MensajeAdd(true,'3.1 Asignando Controlador');
    DriverName:= 'STANDARD';
    MensajeAdd(true,'3.2 Carpeta de Base de Datos: '+ gl.DB.DatabaseDir );
   params.Add('PATH='+gl.DB.DatabaseDir );
   params.Add('DEFAULT DRIVER=PARADOX');
   params.Add('ENABLE BCD=FALSE');
      MensajeAdd ( true, '3.1 Asignado Alias a la Base de Datos. ');
   except
      on E:exception do HandleException('Error de BDE',E);
    end;

  end;   // dtbppal
    MensajeAdd(true,'4   Alias: '+ gl.DB.Alias );

try
  for i:=0 to pred(ComponentCount) do
     if (components[i] is TTable) then
        TTable(components[i]).DatabaseName:= gl.DB.Alias
     else
        if (components[i] is TQuery) then
          TQuery(components[i]).DatabaseName:=gl.DB.Alias;


    MensajeAdd(true,'4.1 Alias asignado' );

    Misession.Open;

    MensajeAdd(true,'5   Sesion Activa');

    dtbppal.Open;

    MensajeAdd(true,'6 **Conectado a Base de Datos**');
except
  on E:Exception do
    HandleException('No se ha podido Abrir la Base de Datos.',E);
end; // except
// saludos

Última edición por Lepe fecha: 11-01-2004 a las 20:18:14. Razón: jejeje
Responder Con Cita
  #2  
Antiguo 12-01-2004
lemon-club lemon-club is offline
Miembro
 
Registrado: jun 2003
Posts: 19
Poder: 0
lemon-club Va por buen camino
gracias Lepe, seguí pasao a paso lo que me indicaba ians marteens en la cara oculta de D4 pero:
¿¿hay que dejar la variable del Paradox->NETDIR en el BDEAdministrator vacía??

Así lo hice pero no me bloquea los registros al acceder varios usuarios si la dejo vacía. Si pongo el correspondiente directorio en el NETDIR del BDEAdministrator manualmente SÍ que funciona perfectamente.

Puede alguien responderme a la primera pregunta??

cenquiu
Responder Con Cita
  #3  
Antiguo 12-01-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
En mi caso, Si.

Yo asigno todo por codigo, si creas el alias en tiempo de ejecución y asignas ahí el NETFILEDIR de la Sesion, que yo sepa, no estas usando el driver NATIVE de paradox, sino que te basas en él, para crearte el alias.

No he podido arrancar la red ahora para hacer las pruebas, así que las he hecho mediante 2 instancias, eso si, cada una de ellas con alias distintos (creados dinamicamente) y controlando que el directorio TEMP para ambas sea distinto. Controla bien los bloqueos

ahhh, por cierto en el driver nativo de paradox NET DIR he puesto c:\pepito y desde luego esa carpeta no existe. Tambien he probado a dejarlo en blanco, y repito, los bloqueos van bien.

Imagina que usas 2 Databases y 2 componentes Sessions en la misma aplicación, para tranferir datos de una a otra. Si tuvieses que modificar el parámetro NATIVO NET DIR con el bdeAdministrator, seria imposible trabajar con dicha aplicación. Veo lógico dejar ese parámetro en blanco y configurarlo por cada sesión.

No puedo darte una respuesta 100 % segura y esto, es lo único que puedo asegurarte al 100 %
Responder Con Cita
  #4  
Antiguo 12-01-2004
lemon-club lemon-club is offline
Miembro
 
Registrado: jun 2003
Posts: 19
Poder: 0
lemon-club Va por buen camino
gracias otra vez.
Lo natural es dejar la variable del BDEAdministrator en blanco si asignamos el directorio de red en ejecución, eso es lo que intento desde hace tiempo pero no consigo que me funcione.
Partiendo de que se debe dejar esa variable en blanco sé que debo estar haciendo algo mal. Repasaré todas las propiedades del Tsession y del Tdatabase por enésima vez a ver qué se me ha escapao :S

hasta pronto
Responder Con Cita
  #5  
Antiguo 13-01-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
crees que el MensajeAdd ese lo hice por capricho?? Bastantes dolores de cabeza me dió.

PD: el modo de sesion yo puse cmAll en lugar del que viene por defecto cmConfig, en la ayuda explica mejor que hace cada modo.

Seguro que es una tonteria, de esas que cuando la encuentras es para darte de porrazos contra la pared, pero mientras se encuentra y no.....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 15:55:38.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi