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 02-03-2005
Avatar de EstebanWeb
EstebanWeb EstebanWeb is offline
Miembro
 
Registrado: dic 2004
Posts: 15
Poder: 0
EstebanWeb Va por buen camino
Exclamation Paradox en Red con WinXP y Win98

Hola Gente,

Tengo un problema... tengo una aplicación que trabaja en red con una BD hecha en Paradox. La cosa es que en mi trabajo la probe en una red con todas maquinas con XP y funciona de diez , pero cuando fui a mi cliente resulta que tiene el "Servidor" con XP y los "Clientes" con W98 y me manda un cartel de que el directorio está siendo controlado por otro PDOXUSRS.NET .

Alguien tuvo alguna vez el mismo problema?, o alguien sabe si el tema es porque uno esta en XP y la otra en w98? probé invirtiendo los papeles (poniendo la de w98 como server pero no funciona tampoco) o alguien sabe por donde podria venir el tema?. Aclaro, por las dudas, que ya me se casi de memoria el articulo que trata sobre paradox en red que se encuentra en este sitio (el cual me ayudo mucho al momento de desarrollarlo).

Gracias,
Esteban
__________________
Saludos,
Esteban

www.EstebanWeb.com.ar
Porque la vida esta en constante movimiento,Tu Sitio no puede quedarse quieto.
Responder Con Cita
  #2  
Antiguo 02-03-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Por lo que veo puede deberse a una mala configuración del alias, si te has leido el artículo, sabrás que todos los equipos que se conecten tienen que tener instalado el BDE y apuntanto a la misma carpeta del Servidor el fichero de bloqueos .Net

Por ejemplo.
\\Servidor\Datos\Net

No se aconseja que se encuentre en la misma carpeta que los datos.

Todos los equipos incluso el propio servidor si es un puesto más, deberan de acceder por el mismo camino.

Todos los equipos tendrán que tener instalado el BDE y configurado debidamente.

Yo tengo algun sistema sobre XP y 98 simultaneamente y no me ha dado ningún problema.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 02-03-2005
Avatar de EstebanWeb
EstebanWeb EstebanWeb is offline
Miembro
 
Registrado: dic 2004
Posts: 15
Poder: 0
EstebanWeb Va por buen camino
Marcos y publico en general,
Gracias por tu respuesta pero todo lo que enuncias lo tengo hecho y lo verifique. Tengo el BDE instalado en ambas maquinas y apuntan a la misma carpeta del servidor.

Te copio el codigo por si se me escapo algo...

Código Delphi [-]
   procedure TDM.DataModuleCreate(Sender: TObject);
   begin
   ok:=true;
   getdir(0,dir);
    try
     database1.AliasName:='taco';
     database1.Connected:=true;
     
     if ((anterior=1))
           then
           begin
           //restaurar la BD
 if( messagedlg('La última ejecución fue en modo local,'+#13+'desea restaurar la Base de Datos de la red?',MTWarning,mbOKCancel,0)=mrok)
                   then
            
                  begin
                  database1.Connected:=false;
                  Database1BeforeConnect(sender);
                 windows.WinExec(pchar(dir+'\Restauracion\Restauracion.exe'),1);
                  database1.Connected:=true;
                  end;
           end;
     database1.Session.NetFileDir:=ExpandUNCFileName(Database1.Directory+'\NET');
     database1.Session.PrivateDir:='C:\WINDOWS\temp';//GetWindowsTempDir;
     activarTablas;
     logfile(0);
    except
     if (messagedlg('La red no está funcionando,' +#13+'desea trabajar en forma local?', MTerror, mbOKCAncel,0)=mrok)
      then
       begin
        database1.Directory:='c:\';
        database1.Connected:=false;
        database1.AliasName:='tacoloc';
        database1.Connected:=true;
       
        database1.Session.NetFileDir:=ExpandFileName(Database1.Directory+'\NET');
        database1.Session.PrivateDir:='C:\WINDOWS\temp';//GetWindowsTempDir;
        activarTablas;
        logfile(1);
       end
       else
        ok:=false;
    end;
   
   end;

a que te referis con apuntar con...
Cita:
Empezado por marcoszorrilla
apuntanto a la misma carpeta del Servidor el fichero de bloqueos .Net

Por ejemplo.
\\Servidor\Datos\Net
Vale aclarar que si se conecta una sola no hay problemas, la cuestion surge cuando se quiere conectar la segunda

Gracias
__________________
Saludos,
Esteban

www.EstebanWeb.com.ar
Porque la vida esta en constante movimiento,Tu Sitio no puede quedarse quieto.

Última edición por EstebanWeb fecha: 02-03-2005 a las 15:54:28.
Responder Con Cita
  #4  
Antiguo 02-03-2005
Avatar de EstebanWeb
EstebanWeb EstebanWeb is offline
Miembro
 
Registrado: dic 2004
Posts: 15
Poder: 0
EstebanWeb Va por buen camino
De paso pregunto si es normal que me cree dos PDOXUSRS.NET ??? uno en el C:\ y otro en el \\servidor\datos\net o si esto puede ser la punta del problema???

gracias de nuevo
__________________
Saludos,
Esteban

www.EstebanWeb.com.ar
Porque la vida esta en constante movimiento,Tu Sitio no puede quedarse quieto.
Responder Con Cita
  #5  
Antiguo 02-03-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues por ahí puede venir el problema ya que este archivo debe de crearse únicante en el Servidor en la carpeta correspondiente.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 03-03-2005
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
Sick boy Va por buen camino
A mi me ha pasado lo mismo.

Borra todos los .net y .lck en todos los equipos.
Si ya tenias todos los BDE bien configurados, deberia de arrancar sin problemas.

El problema es que tu puedes arrancar en red o local, y cada configuracion crea distintos .net, por eso tienes varios.

Solucion: Buscar y borrar los ficheros *.lck y *.net ANTES de modificar el NET DIR.

Un saludo
Responder Con Cita
  #7  
Antiguo 03-03-2005
Mariana Mariana is offline
Miembro
 
Registrado: sep 2003
Posts: 50
Poder: 21
Mariana Va por buen camino
Mismo Problema

Hola a todos, yo tengo el mismo problema, quería preguntarles si puede ser porque no configuré el localshare en true en el servidor, los alias si están bien definidos.
Gracias
Mariana
Responder Con Cita
  #8  
Antiguo 03-03-2005
Avatar de EstebanWeb
EstebanWeb EstebanWeb is offline
Miembro
 
Registrado: dic 2004
Posts: 15
Poder: 0
EstebanWeb Va por buen camino
un pequeño avance

Gente,

primero gracias por sus comentarios, Logre un pequeño avance cuando, formateo mediante, instale win98 en una de las PC de mi trabajo. La cosa es que no se si es por un tema de configuración de la red o que, que me salta que esta bloqueado con el famoso ".lck" cuando intento acceder a una tabla, aun cuando nadie lo está haciendo.
Esta configurado el LOCALSHARE y ambos BDE correctamente pero es como que no le da permiso de acceso o bien que no acepta compartir los recursos y bloquea todas las tablas.

Hay que configurar algo en la red, además de compartir la carpeta?
Recuerdo que estoy trabajando con el "server" en XP y el "cliente" en win98

gracias de nuevo
__________________
Saludos,
Esteban

www.EstebanWeb.com.ar
Porque la vida esta en constante movimiento,Tu Sitio no puede quedarse quieto.
Responder Con Cita
  #9  
Antiguo 03-03-2005
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
Quiza te ayude....

Mi servidor esta en winXP y tengo 7 "clientes" en win98.

Yo logre que funcionara de esta forma:

1.- Instale el BDE (con minireg) en cada maquina con win98.

2.- En el datamodule Agregue un componente session y lo configure asi:

Session1.NetFileDir := '\\SISTEMAS\DB\DB'; // El directorio de bases de datos
session1.PrivateDir := '\\SISTEMAS\DB\NET; // Directorio .net
session.name:='nose';

En cada TQuery configure asi:

q1.DatabaseName:= 'miAlias';
q1.SessionName:='nose';

3.- configure en la maquina con XP el BDE asi:
Cree un alias llamado miAlias
coloque en path \\SISTEMAS\BD\BD

4.- Copie el archivo idapi32.cfg desde : C:\Archivos de programa\Archivos comunes\Borland Shared\BDE.

y lo copie en cada maquina con win98 en el mismo directorio de instalacion del BDE. (Me diran neófito pero con la instalacion con el tal "minireg BDEinstal.dll" , no pude despues crea el alias en cada maq Win98, por eso copia la configuracion desde el servidor)

de esta manera todas las maquinas con win98 funcionan sin problemas.
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
  #10  
Antiguo 08-03-2005
Mariana Mariana is offline
Miembro
 
Registrado: sep 2003
Posts: 50
Poder: 21
Mariana Va por buen camino
tsession

Hola a todos, aún no logro solucionar el problema, haciendo un debug me doy cuenta que surge cuando la segunda máquina arranca y quiere conectarse a la BD, y activar las tablas, la primera solución que se me ocurrió es ver si ya están activas y no activarlas nuevamente, con esto la segunda máquina ingresa al sistema pero las tablas están vacías (cerradas). Ahora mi pregunta es si debo tener un Tsession por cada conexión?, o si como lo estaba haciendo con la session por default está bien y entonces es otro el problema. Esto me tiene muy complicada así que les agradezco toda la ayuda.
gracias
Mariana
Responder Con Cita
  #11  
Antiguo 08-03-2005
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
Al hacer las configuraciones que comente antes uso un solo Tsession. ¿Por que no haces esa prueba?. Otra cosa, asegurate que no queden querys o tablas abiertas al momento de finalizar los programas. Y no dejes en tiempo de diseño que el tsession activo. (Asi lo tengo yo y me funciona )
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
  #12  
Antiguo 09-03-2005
Mariana Mariana is offline
Miembro
 
Registrado: sep 2003
Posts: 50
Poder: 21
Mariana Va por buen camino
sigue el mismo problema

Alfredo, te agradezco la ayuda y a todos los que contestaron, pero el problema continúa, he hecho todas las pruebas (con lo que me han sugerido) e igualmente no lo puedo solucionar. Si a alguien se le ocurre algo más que pueda probar les adrdezco me lo cuenten.
Muchas Gracias a todos.
Mariana.
Responder Con Cita
  #13  
Antiguo 11-03-2005
Avatar de Pablo Carlos
Pablo Carlos Pablo Carlos is offline
Miembro
 
Registrado: jun 2004
Ubicación: Mendoza - Argentina
Posts: 270
Poder: 20
Pablo Carlos Va por buen camino
Talking

Holas.. te comento lo que hice y funciona en 16 maq con w95, w98, nt, 2000 sin problemas (hasta ahora)
en el ejecutable del prg agrego esto...
Código Delphi [-]
// al uses agrega inifiles a todos los form donde leas o escribas un ini
// que hago aqui? simplemente leo un ini
var
  i : TIniFile;
begin
   i := TIniFile.Create('Servidor.ini');
   i.ReadString('Datos','Servidor', Servidor );
   i.Free;
  frmInicio := TfrmInicio.Create(Application);
  frmInicio.Show; //Formulario de presentacion
  frmInicio.Update;
  Application.Initialize;
en el formulario de inicio agrego esto
Código Delphi [-]
//Funcion para borrar el archivo .net
function ALaPapelera(Fichero:string):boolean;
 var
   FileOp: TSHFileOpStruct;
 begin
   if FileExists(Fichero)then
   begin
     FillChar(FileOp,SizeOf(FileOp),#0);
     With FileOp do
     begin
       Wnd:= Application.Handle;
       wFunc:= FO_DELETE;
       pFrom:= PChar(Fichero+#0#0);
       fFlags:= FOF_SILENT or FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
     end;
     Result:= (ShFileOperation(FileOp)=0);
   end else
     Result:=False;
 end;


procedure TfrmInicio.FormCreate(Sender: TObject);
//en este evento si el archivo ha sido borrado ... mensaje
// si no existe el ini llamo a otro form donde indico la ruta del servidor o la
// ruta local
begin
 if ALaPapelera ('c:\PDOXUSRS.NET') then
  ShowMessage('Ha sido borrado con éxito el archivo .NET');
 if FileExists('c:\windows\Servidor.ini') = False then
  begin
    frmPath := TfrmPath.Create(Application);
   try
    frmPath.ShowModal;
   finally
    frmPath.Free;
   end;
  end;
en algun evento (el mio en un boton) creo el ini donde eRuta es un edit que debe llenar el usuario con los datos precisamente de la localización de la tabla
Código Delphi [-]
var
  i : TIniFile;
  Servidor : String;
begin
   Servidor := eRuta.Text;
   i := TIniFile.Create('Servidor.ini');
   i.WriteString('Datos','Servidor', Servidor );
   i.Free;
end;

uso un solo Tsession para tablas y querys... en la propiedad de tablas y querys ni DataBaseName ni Alias.
En el evento oncreate de tablas y querys digo que lea el ini de alli saco la propiedad DatabAseName de cada componente
Código Delphi [-]
procedure TdmTablas.DataModuleCreate(Sender: TObject);
var
 i : TIniFile;
 Ruta : String;
begin
 i := TIniFile.Create('Servidor.ini');
 Ruta := i.ReadString('Datos','Servidor', '');
 i.Free;
 Session1.NetFileDir := Ruta;
 Session1.Active := True;
 dbEscuela.DataBaseName := Ruta;
 dbEscuela.Connected := True;
 tblDatosPersonales.DataBaseName := Ruta;

Antes de ejecutar borra todos los *.net de cada maquina y los *.lck donde este alguno... luego ejecutas y no tendrás problema.. el ini creado teoricamente sera escrito una sola vez ya que primero veo si esta y si es asi No paso al frmPath para crearlo (esto por si se borra o lo borran)
Bueno te comento que seguramente abra otras formas pero es la que hice
__________________
Por qué todas las personas saben exactamente cómo debemos vivir nuestra vida, y nunca tienen idea de cómo deben vivir sus propias vidas.
Responder Con Cita
  #14  
Antiguo 11-03-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por Mariana
Hola a todos, yo tengo el mismo problema, quería preguntarles si puede ser porque no configuré el localshare en true en el servidor, los alias si están bien definidos.
Gracias
Mariana
DEBE estar a true en el "servidor" y a false en los "Clientes".
Si despues de modificar eso, sigue fallando, habrá otros problemas
adicionales.

EDITO: El mejor método para saber si todo está bien configurado, es editar
un registro desde 2 ordenadores simultaneamente, debe dar un error (record
locked by another user o algo así).

Si permite que el mismo registro se edite en varios ordenadores
simultaneamente, el BDE, la sesion, net dir, etc. no está bien configurado.

Ya que el BDE es lo "mas abstracto", se empezaría mirando que la red
funciona (que deje ver archivos compartidos).

Borrar los .net, ojo, delphi y el database desktop tambien usan sus propios
net dir, no confundiros con esos. Mostrar la ruta del netFiledir en un
showmessage o en un log, puede que ExpandUNCFilename no haga lo que se
espera; yo prefiero guardar la ruta en modo \\servidor\carpeta y cargarla
desde un .ini

Borrar los .lck (archivos de bloqueo) y cuando se edite el mismo registro
desde varios ordenadores, buscar esos archivos, solo deben estar en el
servidor, en la carpeta de las tablas.

Y como han dicho Cerrad, el TDatabase, la sesión, tablas y consultas en modo diseño.

El caso del Alias, pues hay muchas formas, crearlo manualmente usando
el BDE administrator, Usar Session.AddStandarAlias, y despues guardar la
session. (Session.Saveconfig), etc.

Saludos y espero que sea de utilidad.

Última edición por Lepe fecha: 11-03-2005 a las 11:41:11.
Responder Con Cita
  #15  
Antiguo 11-03-2005
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Caso similar

El problema que me surge a mi es el siguiente.
Tengo varios pc conectados unos con Win98 y otros con XP y trabajan bien, pero hay uno en que la aplicaciòn corre de una manera anormal es decir con una gran lentitud, se demora en conectarse al Programa y cuando trabaja demora bastante en realizar las cosas, incluso para escribir se demora en mostrar las letras.
¿A que se podrà deber eso? ¿es por un problema de la red? aunque se pueden ver perfectamente todos los pc.
Responder Con Cita
  #16  
Antiguo 11-03-2005
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
Vicvil:
Por lo que cuentas, si todas las demas maquinas manejan los mismos parametros de conexión, usan el mismo programa ytrabajan perfectamente... es claro que el problema esta relacionado directamente con el equipo (quiza un virus, problemas con el disco duro, alguna incompatibilidad, corrupción del windows) y no con la aplicación en sí. Aunque no nos dices si el equipo trabaja bien con otros programas o como se conecta. Deberias chequear eso primero.
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
  #17  
Antiguo 11-03-2005
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Respuesta

El equipo fue formateado, esta bien configurado, no tiene problemas con otros programas. es con esta aplicacion en particular que se torna demasiado lento. Lo he revisado por todas partes y no encuentro razon.
Responder Con Cita
  #18  
Antiguo 11-03-2005
samantha jones samantha jones is offline
Miembro
 
Registrado: ago 2004
Posts: 46
Poder: 0
samantha jones Va por buen camino
Cuando realizo una app con Paradox, lo que hago es lo siguiente y nunca me ha dado problemas, bueno, más alla de los normales.

a) en cada cliente instalo el BDE ('se instala ')
y cambio el parametro local share a true

b) en el servidor comparto 2 directorios con todos los permisos, uno para datos y otro para el net.

c) en el programa, coloco un componente Tsession, el cual ligo a todos los datasets de la aplicación, y desde un ini cargo la propiedad de NEtfiledir, por lo cual todos las instancias del programa apuntan al mismo directorio de NET

d) de igual manera coloco un componente Tdatabase, el cual tambien lo ligo a todos los demás datasets y cargo desde un ini el parametro de path

el tdatabase lo configuro de la sig manera

tdatabase.databasename := 'MIBASEDEDATOS';
{cualquier nombre que le querramos poner}
tdatabase.params.clear;
tdatabase.params.add('PATH=' + valor_leido_del_ini);
tdatabase.params.add('DEFAULT DRIVER=PARADOX');
tdatabase.params.add('ENABLE BCD=FALSE');

e) de esta manera no tengo que configurar un alias en cada máquina cliente.

Espero y les sirva.

Saludos
Samantha Jones
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


La franja horaria es GMT +2. Ahora son las 18:35:27.


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