![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
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
Última edición por Lepe fecha: 11-01-2004 a las 20:18:14. Razón: jejeje |
|
#2
|
|||
|
|||
|
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 |
|
#3
|
||||
|
||||
|
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 % ![]() |
|
#4
|
|||
|
|||
|
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 ![]() |
|
#5
|
||||
|
||||
|
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..... ![]() |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|