Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   BDE y terminal server (https://www.clubdelphi.com/foros/showthread.php?t=45975)

yogutero 19-07-2007 18:20:55

BDE y terminal server
 
Hola buenas tardes.

tratare de explicar el gran problema que tenemos en la empresa. Soy informatico de esta empresa y tenemos instalado un pardox 9 con su BDE en windows 2003 server , en red local funciona perfecto pero a través de terminal server en cuanto se conecta el primer cliente , el BDE se bloquea y no deja entrar a los demas.

Tengo entendido que esto es así, que al iniciar una sesion el BDE se utiliza en ella y no se puede ser usada para las demás.

Querría solucionar este problema, despueés de mirar por internet no h encontrado respuestas que lo hagan.

Muchas gracias.

Neftali [Germán.Estévez] 19-07-2007 18:31:17

El problema radica en Paradox no en el BDE.
Si la Base de Datos fuera otra (IB/FB, por ejemplo) no tendrías ningun problema.

yogutero 20-07-2007 07:35:35

Gracias por la respuesta, pero teniendo como tenemos una base de datos desarrollada en paradox desde hace años, hay algo que se pueda hacer?

Gracias de nuevo.

pepon386 20-07-2007 10:13:24

En mi empresa tubimos el mismo problema cuando empezamos a usar Citrix (una variante de Terminal Server). El problema radica (si mal no recuerdo) en que por defecto todos intentan usar el mismo directorio temporal para la sesión. Te adjunto un ejemplo para abrir una base de datos en AS/400, pero con pocos cambios podrás usarlo para archivos Paradox.

Código Delphi [-]
procedure TDMMain.DataModuleCreate(Sender: TObject);
var
  Tmp: PChar;
  FDirTemp: string;
  Condicionantes: string;
begin
  IniciaFormatos;
  if Database.Connected then
    Database.Close;
  GetMem(Tmp, 255);
  GetTempPath(255, Tmp);
  FDirTemp := Trim(string(Tmp)) + Copy(ExtractFileName(ParamStr(0)), 1,
    Length(ExtractFileName(ParamStr(0))) - Length(ExtractFileExt(ParamStr(0))));
  FreeMem(Tmp);
  if not DirectoryExists(FDirTemp) then
    CreateDir(FDirTemp);
  Session.PrivateDir := FDirTemp;
  
  try
    FLogin := TFLogin.Create(Application);
    if FLogin.ShowModal = mrOk then
    begin
      CfgInicio.Usuario := FLogin.Usuario.Text;
      Application.ProcessMessages; // necesario para el Splash Form
      ConectaBD(Database, FLogin.Usuario.Text, FLogin.Password.Text)
    end;
  finally
    FLogin.Free;
  end;
  if not Database.Connected then
  begin
    MessageDlg('No se pudo iniciar la aplicación', mtError, [mbOk], 0);
    Application.Terminate;
  end;
end;
 
 
procedure TDMMain.ConectaBD(DB: TDatabase; const UserID, Password: string);
begin
  DB.AliasName := 'AS400';
  DB.TransIsolation := tiReadCommitted;
  DB.Params.Clear;
  DB.Params.Add('user name=' + UserID);
  DB.Params.Add('password=' + Password);
  try
    DB.Open;
  except
    on e: exception do MessageDlg('Se ha producido el siguiente error: ' + #13#10 + e.Message,
      mtError, [mbOk], 0);
  end;
end;

Para que funcione correctamente debes de tener en el TDataModule un obteto TDatabase y un objeto TSession

yogutero 20-07-2007 20:29:14

Fantastica solucion
 
La verdad es que tiene pinta de funcionar pero lamentablemente yo no se programar en paradox, la aplicacion la hizo un hombre que ya esta jubilado y no quiere saber nada.

En red local funciona perefectamente pero a traves de terminal server es imposible, de todas formas intentare meter este codigo en alguna parte.

Gracias de todas formas.

yogutero 30-07-2007 09:33:08

Entiendo lo que hace el codigo pero me gustaria saber si se puede asignar un privatedir a mano en paradox en el BDE o algo, es que como ya comenté de programación en paradox ni idea.

Gracias.

yogutero 02-08-2007 15:30:01

Sigo con el problema
 
No sy capaz de hacer que funcione en teminal server paradox, puesto que el primer usuario que entra bloquea a los demas.


La franja horaria es GMT +2. Ahora son las 22:11:40.

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