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 13-07-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo nada más quiero acotar que jamás he utilizado rutas en notación UNC directamente.

Instalo la aplicación en una carpeta "sistema" con una subcarpeta "tablas" para las tablas:

Código:
C:\
  |__sistema
          |__ tablas
en el "servidor" y comparto esta carpeta. En las pc "cliente" mapeo una unidad a la carpeta compartida:

S: --> \\servidor\sistema (aquí sí UNC pero vía Windows no en código)

y configuro el alias del bde para que apunte a S:\tablas. En el "servidor" configuro el alias directamente a c:\sistema\tablas.

La aplicación, ahora sí el código, contiene una componente TDataBase que, además del alias, inicializo así:

Código Delphi [-]
Database.Session.NetFileDir := ExpandFileName(Database.Directory + '..');
Database.Session.PrivateDir := GetWindowsTempDir;

Nada de agregar una componente TSession que para eso Delphi da una por defecto.

Entonces el directorio Net es el mismo que donde está el ejecutable.

No es exactamente lo que recomienda el artículo pero huelga decir que accedo sin ningún problema desde el mismo "servidor" y desde cualquier "cliente" sea éste Win9x, Win2k o WinXP. El único problema que ocasionalmente se presenta es el de "Index Out Of Date" pero sólo cuando por alguna razón se cierra el Windows del "servidor" "a la mala" estando tablas abiertas.

// Saludos

Última edición por roman fecha: 13-07-2004 a las 19:53:30. Razón: Etiqueta mal colocada
Responder Con Cita
  #2  
Antiguo 14-07-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Roman, solo hay un detalle que se me escapa, en esta línea
Código Delphi [-]
Database.Session.NetFileDir := ExpandFileName(Database.Directory + '..');

el Database.Directory, lo asignas tú en código, en diseño....

Yo primero confguro el Session y despues el Tdabase, por tanto, esa propiedad me devuelve la cadena vacia al consultarla


Saludos
Responder Con Cita
  #3  
Antiguo 14-07-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
Yo primero confguro el Session y despues el Tdabase, por tanto, esa propiedad me devuelve la cadena vacia al consultarla
Cierto. Se me fué en el "recorta y pega". Antes de asignar NetFileDir y PrivateDir debes conectar el Database:

Database1.Connected := true;

Luego de esto, Directory debe ya contener la ruta a la que apunta el alias.

// Saludos
Responder Con Cita
  #4  
Antiguo 21-07-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Hola de nuevo:

Hartito de hacer pruebas llego a la conclusión de que los 2 Hordenadores deben estar encendidos para que funcione todo bien.

Todas las pruebas tienen la misma conclusión: "la red debe estar habilitada y funcionando para que windows permita el acceso." (Parece lógico, pero no lo fue para mi en alguna situación)

Básicamente es lo que decíais en los primeros mensajes, pero mi ignorancia no me dejaba ver el por qué de todo eso, así que me he recalentado las neuronas, y me ha servido para entender esa "nubecita" que era el BDE, localshare y algunas cosas más sobre la red.

El hecho: nada más apagar el ordenador "cliente" aparece en el "servidor" el cartelito de "Cable de red desconectado", y a partir de aquí toda la red se inhabilita. Desde internet explorer puedo acceder a \\WinXP, donde aparece mi carpeta compartida, pero al intentar entrar en ella dice:

Cita:
Empezado por Maravilloso Windows XP Profesional
No tiene acceso a \\winxp\sistema. Puede que no tenga permiso para utilizar este recurso de red. Póngase en contacto con el administrador de este servidor para comprobar si tiene permisos de acceso.

No es posible el acceso a la ubicación de red. Para obtener información para solucionar problemas de red, vea la Fabulosa ayuda de Windows.
Este mismo error se obtiene desde microsoft OFFICE, al escribir: \\winxp\sistema(espacio) e intentar acceder al recurso de red.


Desde mi programa, accediendo desde el "servidor" con rutas UNC el error que da es:
Cita:
Network initialization failed.
Unknown internal operating system error.
File: \\WINXP\sistema\PDOXUSRS.NET
Directory: \\WINXP\sistema\
Invalid file name.
---------------------------- 2ª PRUEBA --------------------------------
Si en el "servidor" uso el NetFileDir y DatabaseDir con rutas UNC, y los 2 ordenadores de la red están encendidos todo va de miedo, al intentar bloquear un mismo registro en ambos ordenadores, sale un messagebox programado indicando que ya está bloqueado por el usuario: nombre_usuario_de_mi_programa

Todo correcto!!!

---------------------------- 3ª PRUEBA --------------------------------
Si en el "servidor" uso el NetFileDir y DatabaseDir con rutas locales, cuando entra el "cliente" con rutas UNC, los bloqueos de registros no funcionan correctamente, es decir, me deja bloquear el mismo registro en ambos ordenadores a la vez, en este caso "peculiar", El registro queda con los datos del último usuario que grabó el registro, además da algún error físico en las tablas (missing .val de alguna tabla, corrupt index, index out of date).

Cuando digo error físico, me refiero a "Physical Data Corruption" que los mencioné en mi primer mensaje. A mí personalmente me ha dado estos:

Corrupt table/index header.
Corrupt index.
Corrupt or missing .VAL file.

BBDD corrupta, echa mano de la copia de seguiridad Caaaaatalina

(Corrupt index, puede solucionarse borrando los indices y volviendolos a crear... pero si tienes un Backup, es más cómodo tirar de él).

---------------------------- 4ª PRUEBA --------------------------------
Configurando la red Local manualmente:

- Instalación por "asistente de red" por más que quiera hacerlo a mano, Windows XP Professional se mete en medio, (estupenda carabina no??)

- Despues, Añado direcciones ip: 192.168.0.X y mascara de subred 255.255.255.0 a los dos Protocolos TCP/IP de red, donde "X" es 1 para el "servidor" y 2 para el "cliente"
Código:
Pruebas realizadas desde la consola de Winxp, ("servidor")

Ping Winxp // si funciona en todos los casos.

net view winxp //siempre funciona y muestra la carpeta compartida.

Ping 192.168.0.1 //"Host de destino inaccesible" si el otro ordenador de la red está apagado

Ping 192.168.0.1  //da valores correctos si el otro ordenador de la red está encendido
Nota: todas estas notaciones son idénticas:
Código:
\\127.0.0.1\sistema
\\winxp\sistema       el nombre del equipo en el panel de control, sistema es "winxp"
\\192.168.0.1\sistema  la direccion IP asignada en el protocolo tcp/ip es esa misma.
que pueden probarse desde el mismo internet explorer.

---------------------------- 5ª PRUEBA --------------------------------

Mapeando una unidad.

Según mis pruebas, sirve para quitarte el engorro de rutas UNC al configurar los "clientes", pero al fin y al cabo estas usando rutas UNC. No me ha quedado claro el uso de ExpandFileName, revisando esa funcion y sus relacionadas, yo hubiese usado intuitivamente ExpandUNCFilename, el cual traduce S:\tablas a \\servidor\sistema\tablas en los "clientes"; en el "servidor" el uso de rutas locales no me cuadra jejejeje.

Roman tu configuración es muy interesante, pero son demasiados parámetros para contrastar, Creación de Alias, BDE, Sessiones, Tdabase, Directorios....Que tengan encendidos los 2 ordenadores o que compren otro ordenador para tenerlo de "servidor exclusivo".

PD: Gracias por decirme que existen ExpandFileName y ExpandUNCFilename

Agradezco toda la información que me han proporcionado, sin ellas, no sabía ni por donde empezar a recalentarme las neuronas.

Espero que toda esta parrafada también le sirva a alguien más.

Saludos y a ver que nos propone el windows Loghorn (o como se llame)
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 14:28:54.


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