Clipper/FiveWin - Abrir Archivos

   
Vista:

Abrir Archivos

Publicado por Juan Morales (37 intervenciones) el 16/11/2007 14:26:22
Que tal amigos
gusto en saludarlos

Necesito una recomendacion con respecto al abrir los archivos en un sistema en redes

si es recomendable abrirlos todos al momento de seleccionar una empresa o ir abriendo a medida que se vayan usando las opciones del programa uso fivewin 2.3
si pudieran orientarme de como debo abrir los archivos en redes le agradezo por favor
mi sistema demora mucho al abrir en diferentes terminales... de antemano gracias..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Abrir Archivos

Publicado por El Duro (121 intervenciones) el 16/11/2007 14:33:55
Juan:

Lo recomendable es ir abriendo los archivos de acuerdo a cómo los vayas necesitando y cerrarlos inmediatamente cuando ya no los necesites, en otras palabras cada PRG debe abrir los archivos que utitliza al inicio y cerrarlos al regresar al menú principal.

Doy por descontado que ya sabes que debes abrirlos compartidos.

El Duro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir Archivos

Publicado por Juan Morales (37 intervenciones) el 16/11/2007 15:13:27
Si Hermano muchas gracias lo que pasa estoy cambiando mi aplicacion de clipper dos a fivewin 2.3, y cambian un poquitos los terminos yo usaba closeall y ahora creo que es dbclosearea() o dbcloseall() y no se cual usar .. si puedes orientarme te lo agradezco..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir Archivos

Publicado por Mauricio Arevalo (152 intervenciones) el 16/11/2007 15:49:01
Juan:

dbcloseall() es una funcion equivalente al comando close all, y lo que hace es cerrar TODAS las bases de datos que tengas abiertas...

dbclosearea() es otra función, cierra el archivo o base de datos actual y obliga a la grabación de todos los datos que se encuentren en los buffers.

Cuando no manejas alias simplemente con escribir dbclosearea() se cierra la base actual, pero si utilizas alias tienes que indicarle el nombre del alias a cerrar:

Ej:

use mibase1 new shared alia base1
use mibase2 new shared alia base2

base1->(dbclosearea())

Espero que te sirva y a la espera que nuestro amigo el DURO lo complemente.

Saludos

Mauricio Arevalo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir Archivos

Publicado por El Duro (121 intervenciones) el 16/11/2007 15:49:17
Juan:

Debes usar DBCLOSEAREA(), si no recuerdo mal DBCLOSEALL() te cierra todos los archivos que haya en uso aun los archivos abiertos por otro usuario.

Tambien te recomiendo que hagas uso de los ALIAS, recuerda que ahora estas trabajando en RED.

El Duro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Agradecido..

Publicado por Juan Morales (37 intervenciones) el 16/11/2007 16:02:14
Muchas gracias hermano lo pondre en practica la unica duda que me queda es que necesito tener abiertos unos archivos de uso comun como los permisos para ciertas bases de datos entonces no puedo cerrar todos los archivos y debo ir cerrrando uno por uno los usadas en cada programa..

muy agradecido amigos seguro los estare molestando mas adelante..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Agradecido..

Publicado por Ricardo Ramírez Espinoza! (208 intervenciones) el 16/11/2007 19:49:38
Juan...

Puedes usar tamble la clase TDatabase que viene com FWH, ella se encarga de los trabajos en red tambien :)

revisa c:\fhw\samples\dbf01.prg

Saludos,
Ricardo Ramírez!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Agradecido..

Publicado por Ramon Paredes (47 intervenciones) el 19/11/2007 02:38:56
Hola a todos en este foro muy bueno,

Juan,

Al pensar en trabajar en Red se cambia el cihips en las aperturas y en los accesos a las tablas ( Ojo son tablas no bases de datos ), yo normalmente uso funciones para evitar tener que abrir cada tabla de modo compartido, te las proporciono y tal vez te sean de utilidad, son las siguientes :

//================================
Function ABRE_BD(FBase,fTipo) // APERTURA DE LA TABLA EN CUALQUIER MODO
//================================

LOCAL mSioNo, Regre

Do While .T.

If ftipo = .t.
Use (fBase) Exclusive // MODO EXCLUSIVO
Else
Use (fbase) Shared // MODO COMPARTIDO
Endif

If !NetErr() // CHEQUEA SI ES EXCLUSIVO QUE NO ESTE SIENDO UTILIZADA
Regre = .T.
Exit
Else
mSioNo = MsgNoYes("La base de datos " + fbase +" esta siendo utilizada por otro usuario, Desea Volver a Intentar? " , "Error al abrir")
If mSioNo
loop
Else
Regre = .F.
Exit
Endif

Endif

EndDo

Return Regre

//======================
Function BLK_REG() // PARA BLOQUEAR UN REGISTRO EN LO REEMPLAZOS (EDICION)
//======================

LOCAL mSioNo, Regre

Do While .T.

If Rlock()
Regre = .T.
Exit
Else
mSioNo = MsgNoYes("El Registro esta siendo utilizado por otro Usuario, Desea Volver a Intentar? " , "Error al bloquear")
If mSioNo
loop
Else
Regre = .F.
Exit
Endif

Endif

EndDo

Return Regre

//=========================
Function REG_APPEN() // PARA BLOQUEAR UN REGISTRO EN LOS REEMPLAZOS ( AGREGAR )
//=========================

LOCAL mSioNo, Regre

Do While .T.

Append Blank

If !NetErr()
Regre = .T.
Exit
Else
mSioNo = MsgNoYes("El Registro esta bloqueado por otro usuario, Desea Volver a Intentar? " , "Error al Bloquear")
If mSioNo
loop
Else
Regre = .F.
Exit
Endif

Endif

EndDo
If rlock()
Return .T.
endif

Return Regre

SU uso es sencillo :

si voy a abrir la tabla en modo exclusivo ::

SELECT A
IF ABRE_BD("TABLA1",.F.) = .F.
CLOSE DATA
RETURN
ENDIF
SET INDEX TO TABLA1

si voy a editar un registro :

SELECT A
IF BLK_REG()
Replace campo1 with mCampo1 etc....
commit
unlock
endif

si voy a adicionar un registro

SELECT A
IF REG_APPEN()
append blank
replace campo1 with mCampo.........etc.
commit
unlock
endif

Saludes y si tienes dudas, pues me las haces saber

Desde managua, Nicaragua
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Agradecido..

Publicado por Ramon Paredes (47 intervenciones) el 19/11/2007 02:43:19
Luis,

Te sugiero en FW cada vez que des ACTIVATE DOALOG oDlg En tu aplicacion ejecuta : DBCLOSEALL()

Aunque hayan usuarios trabajando no les afecta esto debido a cada uno de ellos trabaja como recurso compartido, yo asi lo utilizo y evito cerrar mi aplicacion y dejar tablas abiertas.

Saludes desde Managua, Nicaragua
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Agradecido..

Publicado por Juan Morales (37 intervenciones) el 19/11/2007 15:28:38
Muchas Gracias Hermanos , yo uso esas rutinas en clipper dos, pense que en fivewin era diferente, solo tengo una duda si uso dbcloseall() me cierra todas las tablas abiertas pero necesito tener siempre disponibles la tabla de empresas y una de parametros generales tendria que volverlas abrir en ese instante o tambien debo abrirlas en su momento.. y de nuevo les agradezco parece mentira que a travez de este foro se conozcan amigos de dierentes naciones Feliz de compartir con uds.. voy a probar todo eso ya les comentare...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar