Lentitud al abrir una dbf en red

Lentitud al abrir una dbf en red

Postby lgolexyn » Thu Jul 06, 2023 2:06 pm

Hola a todos.
Antes que nada agradecer a la tan buena información que siempre encuentro en este foro.
Adelanto que investigue en este foro durante una semana, y hasta ahora no puede solucionarlo.

Espero puedan orientarme con un problema.
Tengo una vieja aplicación que ahora la pase a FWH 2.5 y xHar 1.0, para que corra en 32Bits y utilizo TDBF para abrir las bases.
No puedo usar un FWH mas nuevo porque, de entrada tengo problemas con la TDBF y pensar en modificar toda la aplicación a por ej TDatabase, no
tiene mucho sentido, porque el cliente quiere usar un tiempo mas y luego migrar a otro sistema.
Todo funciona bien accediendo de una PC a la ves. Cuando accedo con por ej 2 PC a un mismo modulo del sistema, el primero que ingresa
lo hace bien, el segundo tarda una eternidad.
Es un modulo simple en este caso de Pacientes, el cual tiene 23.400 registros.
Haciendo pruebas, detecte que si no activo los indices, todo se normaliza.
Mi pregunta es esto tiene alguna solución simple, o no tiene arreglo.

Nota: Es una red con cableado Ethernet, todas la PC con placas Gigabit y cableado nuevo, los switch también Gigabit
Todas con window 10, probé desactivar los antivirus, probé en otra red, y varios otro métodos que viendo durante varios días
en este foro, no logre solucionar el problema.

Desde ya muchas gracias.
Leonardo G. Olexyn

Adjunto parte del modulo de pacientes :

//----------------------------------------------------------------------------//
// FWH 2.5 - Paciente
// (c) Leonardo Olexyn 2023
//----------------------------------------------------------------------------//
#include "FiveWin.ch"
#include "Report.ch"
#include "Mesdbf.ch"
#include "TSButton.ch"
#include "XBrowse.Ch"


static oLocal, nLocal, cTexAfil :="", oTexAfil, nK:=0
static cTexLocali :="", oTexLocali, cTexSucur :="", oTexSucur
static oPaci, oFlt, oBtn[ 6 ]

function Paci_ABM( tUser )

local oDlg, oLbx, oBusco, cBusco := SPACE(20) //, cAlias:=cGetNewAlias('Sample')
set deleted on

AbrePaci( )
oPaci:SetFocus()
oPaci:SetOrder( 2 )

DEFINE DIALOG oDlg RESOURCE "FONDO_PACIENTE" TITLE "ABM de Pacientes"

REDEFINE LISTBOX oLbx FIELDS str(@oPaci:Codigo,6), @oPaci:Apynom,;
@oPaci:Documento, @oPaci:Obrasoci;
HEADERS "Código", "Apellido y Nombre", "Documento", "Obra Social" ;
FIELDSIZES 60,320,110,180 ;
ALIAS oPaci:cAlias ;
ID 650 OF oDlg COLOR CLR_BLACK, RGB( 255, 255, 235) UPDATE

oPaci:SetBrowse( oLbx, .f. )

REDEFINE GET oBusco VAR cBusco ID 400 OF oDlg ;
ON CHANGE ( oBusco:Assign(), ;
oPaci:Seek( AllTrim(UPPER(cBusco))+;
IF( ISALPHA( CHR(nKey) ) .OR. ISDIGIT( CHR(nKey) ) ;
.OR. nKey = 32, UPPER(CHR(nKey)), "" ) ), ;
oLbx:refresh() )

// REDEFINE BUTTON ID 170 OF oDlg ACTION EditPaci( oLbx, oPaci, @tUser, .t. ), oDlg:Update()
REDEFINE SBUTTON oBtn ID 170 OF oDlg ACTION EditPaci( oLbx, oPaci, @tUser, .t. ), oDlg:Update()

REDEFINE BUTTON ID 180 OF oDlg ACTION EditPaci( oLbx, oPaci, @tUser, .f. ), oDlg:Update()
REDEFINE BUTTON ID 190 OF oDlg ACTION DelPaci( oLbx, oPaci )
REDEFINE BUTTON ID 200 OF oDlg ACTION BuscaPaci( oLbx, oPaci )
REDEFINE BUTTON ID 240 OF oDlg CANCEL ACTION oDlg:End()


ACTIVATE DIALOG oDlg CENTERED

oPaci:End()

return nil

//----------------------------------------------------------------------------//



//----------------------------------------------------------------------------//
// Abre Paciente
Function AbrePaci( )

DEFINE DATABASE oPaci FILE "PACIENTE.DBF" ALIAS PACIENTE

FIELD NAME "CODIGO" TYPE "N" LEN 06 DEC 00 OF oPaci
FIELD NAME "APYNOM" TYPE "C" LEN 45 DEC 00 OF oPaci
FIELD NAME "DIREC" TYPE "C" LEN 40 DEC 00 OF oPaci
FIELD NAME "CODPOST" TYPE "C" LEN 08 DEC 00 OF oPaci
FIELD NAME "OBRACOD" TYPE "N" LEN 03 DEC 00 OF oPaci
FIELD NAME "OBRASOCI" TYPE "C" LEN 35 DEC 00 OF oPaci
FIELD NAME "NAFIALIADO" TYPE "C" LEN 10 DEC 00 OF oPaci
FIELD NAME "DOCUMENTO" TYPE "C" LEN 10 DEC 00 OF oPaci
FIELD NAME "GSANGUINEO" TYPE "C" LEN 04 DEC 00 OF oPaci
FIELD NAME "LOCPROV" TYPE "C" LEN 25 DEC 00 OF oPaci
FIELD NAME "TELEF" TYPE "C" LEN 20 DEC 00 OF oPaci
FIELD NAME "FENACIM" TYPE "D" LEN 08 DEC 00 OF oPaci
FIELD NAME "EDAD" TYPE "N" LEN 03 DEC 00 OF oPaci
FIELD NAME "NACIONALI" TYPE "C" LEN 20 DEC 00 OF oPaci
FIELD NAME "ESTCIVIL" TYPE "C" LEN 10 DEC 00 OF oPaci
FIELD NAME "_" TYPE "C" LEN 01 DEC 00 OF oPaci
FIELD NAME "OCUPACION" TYPE "C" LEN 20 DEC 00 OF oPaci
FIELD NAME "FEINITRAT" TYPE "D" LEN 08 DEC 00 OF oPaci
FIELD NAME "ANTQUIRUR" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "ANTFAMIL" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "ANTPATOLOG" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "ENFACTUAL" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "HABTOXICO" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "MOTCONSUL" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "EXAMGERAL" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "DIAGMEDICO" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "DIAGKINES" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "EMAIL" TYPE "C" LEN 35 DEC 00 OF oPaci
FIELD NAME "BAJA" TYPE "L" LEN 01 DEC 00 OF oPaci
FIELD NAME "MEDICO" TYPE "C" LEN 35 DEC 00 OF oPaci
FIELD NAME "TELMEDICO" TYPE "C" LEN 20 DEC 00 OF oPaci
FIELD NAME "ATIENDEN" TYPE "C" LEN 35 DEC 00 OF oPaci
FIELD NAME "SALPLUS" TYPE "N" LEN 08 DEC 02 OF oPaci
FIELD NAME "SALORDEN" TYPE "N" LEN 03 DEC 00 OF oPaci
FIELD NAME "SALSESI" TYPE "N" LEN 03 DEC 00 OF oPaci

DEFINE INDEX ON str(Codigo,6) TO PACIENTE TAG PaciCod NODELETED OF oPaci
DEFINE INDEX ON substr(Upper(Apynom),1,45) TO PACIENTE TAG PaciNom NODELETED OF oPaci
DEFINE INDEX ON str(OBRACOD,3) TO PACIENTE TAG PaciObr NODELETED OF oPaci
DEFINE INDEX ON substr(_,1,1)+str(EDAD,3) TO PACIENTE TAG PaciSex NODELETED OF oPaci
DEFINE INDEX ON substr(Upper(DOCUMENTO),1,10) TO PACIENTE TAG PaciDoc NODELETED OF oPaci

END DATABASE oPaci

ACTIVATE DATABASE oPaci SHARED
// ACTIVATE INDEX IN oPaci

Return( oPaci )
Leonardo G.
lgolexyn
 
Posts: 9
Joined: Thu Jul 06, 2023 11:51 am

Re: Lentitud al abrir una dbf en red

Postby ACC69 » Thu Jul 06, 2023 2:52 pm

lgolexyn wrote:Hola a todos.
Antes que nada agradecer a la tan buena información que siempre encuentro en este foro.
Adelanto que investigue en este foro durante una semana, y hasta ahora no puede solucionarlo.

Espero puedan orientarme con un problema.
Tengo una vieja aplicación que ahora la pase a FWH 2.5 y xHar 1.0, para que corra en 32Bits y utilizo TDBF para abrir las bases.
No puedo usar un FWH mas nuevo porque, de entrada tengo problemas con la TDBF y pensar en modificar toda la aplicación a por ej TDatabase, no
tiene mucho sentido, porque el cliente quiere usar un tiempo mas y luego migrar a otro sistema.
Todo funciona bien accediendo de una PC a la ves. Cuando accedo con por ej 2 PC a un mismo modulo del sistema, el primero que ingresa
lo hace bien, el segundo tarda una eternidad.
Es un modulo simple en este caso de Pacientes, el cual tiene 23.400 registros.
Haciendo pruebas, detecte que si no activo los indices, todo se normaliza.
Mi pregunta es esto tiene alguna solución simple, o no tiene arreglo.

Nota: Es una red con cableado Ethernet, todas la PC con placas Gigabit y cableado nuevo, los switch también Gigabit
Todas con window 10, probé desactivar los antivirus, probé en otra red, y varios otro métodos que viendo durante varios días
en este foro, no logre solucionar el problema.

Desde ya muchas gracias.
Leonardo G. Olexyn

Adjunto parte del modulo de pacientes :

//----------------------------------------------------------------------------//
// FWH 2.5 - Paciente
// (c) Leonardo Olexyn 2023
//----------------------------------------------------------------------------//
#include "FiveWin.ch"
#include "Report.ch"
#include "Mesdbf.ch"
#include "TSButton.ch"
#include "XBrowse.Ch"


static oLocal, nLocal, cTexAfil :="", oTexAfil, nK:=0
static cTexLocali :="", oTexLocali, cTexSucur :="", oTexSucur
static oPaci, oFlt, oBtn[ 6 ]

function Paci_ABM( tUser )

local oDlg, oLbx, oBusco, cBusco := SPACE(20) //, cAlias:=cGetNewAlias('Sample')
set deleted on

AbrePaci( )
oPaci:SetFocus()
oPaci:SetOrder( 2 )

DEFINE DIALOG oDlg RESOURCE "FONDO_PACIENTE" TITLE "ABM de Pacientes"

REDEFINE LISTBOX oLbx FIELDS str(@oPaci:Codigo,6), @oPaci:Apynom,;
@oPaci:Documento, @oPaci:Obrasoci;
HEADERS "Código", "Apellido y Nombre", "Documento", "Obra Social" ;
FIELDSIZES 60,320,110,180 ;
ALIAS oPaci:cAlias ;
ID 650 OF oDlg COLOR CLR_BLACK, RGB( 255, 255, 235) UPDATE

oPaci:SetBrowse( oLbx, .f. )

REDEFINE GET oBusco VAR cBusco ID 400 OF oDlg ;
ON CHANGE ( oBusco:Assign(), ;
oPaci:Seek( AllTrim(UPPER(cBusco))+;
IF( ISALPHA( CHR(nKey) ) .OR. ISDIGIT( CHR(nKey) ) ;
.OR. nKey = 32, UPPER(CHR(nKey)), "" ) ), ;
oLbx:refresh() )

// REDEFINE BUTTON ID 170 OF oDlg ACTION EditPaci( oLbx, oPaci, @tUser, .t. ), oDlg:Update()
REDEFINE SBUTTON oBtn ID 170 OF oDlg ACTION EditPaci( oLbx, oPaci, @tUser, .t. ), oDlg:Update()

REDEFINE BUTTON ID 180 OF oDlg ACTION EditPaci( oLbx, oPaci, @tUser, .f. ), oDlg:Update()
REDEFINE BUTTON ID 190 OF oDlg ACTION DelPaci( oLbx, oPaci )
REDEFINE BUTTON ID 200 OF oDlg ACTION BuscaPaci( oLbx, oPaci )
REDEFINE BUTTON ID 240 OF oDlg CANCEL ACTION oDlg:End()


ACTIVATE DIALOG oDlg CENTERED

oPaci:End()

return nil

//----------------------------------------------------------------------------//



//----------------------------------------------------------------------------//
// Abre Paciente
Function AbrePaci( )

DEFINE DATABASE oPaci FILE "PACIENTE.DBF" ALIAS PACIENTE

FIELD NAME "CODIGO" TYPE "N" LEN 06 DEC 00 OF oPaci
FIELD NAME "APYNOM" TYPE "C" LEN 45 DEC 00 OF oPaci
FIELD NAME "DIREC" TYPE "C" LEN 40 DEC 00 OF oPaci
FIELD NAME "CODPOST" TYPE "C" LEN 08 DEC 00 OF oPaci
FIELD NAME "OBRACOD" TYPE "N" LEN 03 DEC 00 OF oPaci
FIELD NAME "OBRASOCI" TYPE "C" LEN 35 DEC 00 OF oPaci
FIELD NAME "NAFIALIADO" TYPE "C" LEN 10 DEC 00 OF oPaci
FIELD NAME "DOCUMENTO" TYPE "C" LEN 10 DEC 00 OF oPaci
FIELD NAME "GSANGUINEO" TYPE "C" LEN 04 DEC 00 OF oPaci
FIELD NAME "LOCPROV" TYPE "C" LEN 25 DEC 00 OF oPaci
FIELD NAME "TELEF" TYPE "C" LEN 20 DEC 00 OF oPaci
FIELD NAME "FENACIM" TYPE "D" LEN 08 DEC 00 OF oPaci
FIELD NAME "EDAD" TYPE "N" LEN 03 DEC 00 OF oPaci
FIELD NAME "NACIONALI" TYPE "C" LEN 20 DEC 00 OF oPaci
FIELD NAME "ESTCIVIL" TYPE "C" LEN 10 DEC 00 OF oPaci
FIELD NAME "_" TYPE "C" LEN 01 DEC 00 OF oPaci
FIELD NAME "OCUPACION" TYPE "C" LEN 20 DEC 00 OF oPaci
FIELD NAME "FEINITRAT" TYPE "D" LEN 08 DEC 00 OF oPaci
FIELD NAME "ANTQUIRUR" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "ANTFAMIL" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "ANTPATOLOG" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "ENFACTUAL" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "HABTOXICO" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "MOTCONSUL" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "EXAMGERAL" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "DIAGMEDICO" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "DIAGKINES" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "EMAIL" TYPE "C" LEN 35 DEC 00 OF oPaci
FIELD NAME "BAJA" TYPE "L" LEN 01 DEC 00 OF oPaci
FIELD NAME "MEDICO" TYPE "C" LEN 35 DEC 00 OF oPaci
FIELD NAME "TELMEDICO" TYPE "C" LEN 20 DEC 00 OF oPaci
FIELD NAME "ATIENDEN" TYPE "C" LEN 35 DEC 00 OF oPaci
FIELD NAME "SALPLUS" TYPE "N" LEN 08 DEC 02 OF oPaci
FIELD NAME "SALORDEN" TYPE "N" LEN 03 DEC 00 OF oPaci
FIELD NAME "SALSESI" TYPE "N" LEN 03 DEC 00 OF oPaci

DEFINE INDEX ON str(Codigo,6) TO PACIENTE TAG PaciCod NODELETED OF oPaci
DEFINE INDEX ON substr(Upper(Apynom),1,45) TO PACIENTE TAG PaciNom NODELETED OF oPaci
DEFINE INDEX ON str(OBRACOD,3) TO PACIENTE TAG PaciObr NODELETED OF oPaci
DEFINE INDEX ON substr(_,1,1)+str(EDAD,3) TO PACIENTE TAG PaciSex NODELETED OF oPaci
DEFINE INDEX ON substr(Upper(DOCUMENTO),1,10) TO PACIENTE TAG PaciDoc NODELETED OF oPaci

END DATABASE oPaci

ACTIVATE DATABASE oPaci SHARED
// ACTIVATE INDEX IN oPaci

Return( oPaci )



Hola buenos dias que tal como esta, espero que bien.

Para empezar yo no uso clases de terceros, todos mis programas estan desarrollados con codigos nativos de FWH y hasta la fecha no he tenido problemas con mi sistema, y es un programa para control de proveedores y su referencias, con su respectivo registro de IVA y tasa ceros similar con la contabilidad.

Y uso indices CDX y no uso filtros o sea SET FILTER, algo en alguna parte de tu codigo este siendo lento para traer informacion, como sugerencia no use clases de terceros, yo uso todo nativo y repito trabajo en red con mas de 12 usuarios y no he tenido problemas, tiene que verificar de donde viene la lentitud y el servidor es windows server 2012 R2.

Saludos y buen dia.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Lentitud al abrir una dbf en red

Postby karinha » Thu Jul 06, 2023 3:01 pm

Debe hacer un ejemplo completo para probar y publicar en:

https://mega.nz/

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7804
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Lentitud al abrir una dbf en red

Postby ACC69 » Thu Jul 06, 2023 3:16 pm

lgolexyn wrote:Hola a todos.
Antes que nada agradecer a la tan buena información que siempre encuentro en este foro.
Adelanto que investigue en este foro durante una semana, y hasta ahora no puede solucionarlo.

Espero puedan orientarme con un problema.
Tengo una vieja aplicación que ahora la pase a FWH 2.5 y xHar 1.0, para que corra en 32Bits y utilizo TDBF para abrir las bases.
No puedo usar un FWH mas nuevo porque, de entrada tengo problemas con la TDBF y pensar en modificar toda la aplicación a por ej TDatabase, no
tiene mucho sentido, porque el cliente quiere usar un tiempo mas y luego migrar a otro sistema.
Todo funciona bien accediendo de una PC a la ves. Cuando accedo con por ej 2 PC a un mismo modulo del sistema, el primero que ingresa
lo hace bien, el segundo tarda una eternidad.
Es un modulo simple en este caso de Pacientes, el cual tiene 23.400 registros.
Haciendo pruebas, detecte que si no activo los indices, todo se normaliza.
Mi pregunta es esto tiene alguna solución simple, o no tiene arreglo.

Nota: Es una red con cableado Ethernet, todas la PC con placas Gigabit y cableado nuevo, los switch también Gigabit
Todas con window 10, probé desactivar los antivirus, probé en otra red, y varios otro métodos que viendo durante varios días
en este foro, no logre solucionar el problema.

Desde ya muchas gracias.
Leonardo G. Olexyn

Adjunto parte del modulo de pacientes :

//----------------------------------------------------------------------------//
// FWH 2.5 - Paciente
// (c) Leonardo Olexyn 2023
//----------------------------------------------------------------------------//
#include "FiveWin.ch"
#include "Report.ch"
#include "Mesdbf.ch"
#include "TSButton.ch"
#include "XBrowse.Ch"


static oLocal, nLocal, cTexAfil :="", oTexAfil, nK:=0
static cTexLocali :="", oTexLocali, cTexSucur :="", oTexSucur
static oPaci, oFlt, oBtn[ 6 ]

function Paci_ABM( tUser )

local oDlg, oLbx, oBusco, cBusco := SPACE(20) //, cAlias:=cGetNewAlias('Sample')
set deleted on

AbrePaci( )
oPaci:SetFocus()
oPaci:SetOrder( 2 )

DEFINE DIALOG oDlg RESOURCE "FONDO_PACIENTE" TITLE "ABM de Pacientes"

REDEFINE LISTBOX oLbx FIELDS str(@oPaci:Codigo,6), @oPaci:Apynom,;
@oPaci:Documento, @oPaci:Obrasoci;
HEADERS "Código", "Apellido y Nombre", "Documento", "Obra Social" ;
FIELDSIZES 60,320,110,180 ;
ALIAS oPaci:cAlias ;
ID 650 OF oDlg COLOR CLR_BLACK, RGB( 255, 255, 235) UPDATE

oPaci:SetBrowse( oLbx, .f. )

REDEFINE GET oBusco VAR cBusco ID 400 OF oDlg ;
ON CHANGE ( oBusco:Assign(), ;
oPaci:Seek( AllTrim(UPPER(cBusco))+;
IF( ISALPHA( CHR(nKey) ) .OR. ISDIGIT( CHR(nKey) ) ;
.OR. nKey = 32, UPPER(CHR(nKey)), "" ) ), ;
oLbx:refresh() )

// REDEFINE BUTTON ID 170 OF oDlg ACTION EditPaci( oLbx, oPaci, @tUser, .t. ), oDlg:Update()
REDEFINE SBUTTON oBtn ID 170 OF oDlg ACTION EditPaci( oLbx, oPaci, @tUser, .t. ), oDlg:Update()

REDEFINE BUTTON ID 180 OF oDlg ACTION EditPaci( oLbx, oPaci, @tUser, .f. ), oDlg:Update()
REDEFINE BUTTON ID 190 OF oDlg ACTION DelPaci( oLbx, oPaci )
REDEFINE BUTTON ID 200 OF oDlg ACTION BuscaPaci( oLbx, oPaci )
REDEFINE BUTTON ID 240 OF oDlg CANCEL ACTION oDlg:End()


ACTIVATE DIALOG oDlg CENTERED

oPaci:End()

return nil

//----------------------------------------------------------------------------//



//----------------------------------------------------------------------------//
// Abre Paciente
Function AbrePaci( )

DEFINE DATABASE oPaci FILE "PACIENTE.DBF" ALIAS PACIENTE

FIELD NAME "CODIGO" TYPE "N" LEN 06 DEC 00 OF oPaci
FIELD NAME "APYNOM" TYPE "C" LEN 45 DEC 00 OF oPaci
FIELD NAME "DIREC" TYPE "C" LEN 40 DEC 00 OF oPaci
FIELD NAME "CODPOST" TYPE "C" LEN 08 DEC 00 OF oPaci
FIELD NAME "OBRACOD" TYPE "N" LEN 03 DEC 00 OF oPaci
FIELD NAME "OBRASOCI" TYPE "C" LEN 35 DEC 00 OF oPaci
FIELD NAME "NAFIALIADO" TYPE "C" LEN 10 DEC 00 OF oPaci
FIELD NAME "DOCUMENTO" TYPE "C" LEN 10 DEC 00 OF oPaci
FIELD NAME "GSANGUINEO" TYPE "C" LEN 04 DEC 00 OF oPaci
FIELD NAME "LOCPROV" TYPE "C" LEN 25 DEC 00 OF oPaci
FIELD NAME "TELEF" TYPE "C" LEN 20 DEC 00 OF oPaci
FIELD NAME "FENACIM" TYPE "D" LEN 08 DEC 00 OF oPaci
FIELD NAME "EDAD" TYPE "N" LEN 03 DEC 00 OF oPaci
FIELD NAME "NACIONALI" TYPE "C" LEN 20 DEC 00 OF oPaci
FIELD NAME "ESTCIVIL" TYPE "C" LEN 10 DEC 00 OF oPaci
FIELD NAME "_" TYPE "C" LEN 01 DEC 00 OF oPaci
FIELD NAME "OCUPACION" TYPE "C" LEN 20 DEC 00 OF oPaci
FIELD NAME "FEINITRAT" TYPE "D" LEN 08 DEC 00 OF oPaci
FIELD NAME "ANTQUIRUR" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "ANTFAMIL" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "ANTPATOLOG" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "ENFACTUAL" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "HABTOXICO" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "MOTCONSUL" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "EXAMGERAL" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "DIAGMEDICO" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "DIAGKINES" TYPE "M" LEN 10 DEC 00 OF oPaci
FIELD NAME "EMAIL" TYPE "C" LEN 35 DEC 00 OF oPaci
FIELD NAME "BAJA" TYPE "L" LEN 01 DEC 00 OF oPaci
FIELD NAME "MEDICO" TYPE "C" LEN 35 DEC 00 OF oPaci
FIELD NAME "TELMEDICO" TYPE "C" LEN 20 DEC 00 OF oPaci
FIELD NAME "ATIENDEN" TYPE "C" LEN 35 DEC 00 OF oPaci
FIELD NAME "SALPLUS" TYPE "N" LEN 08 DEC 02 OF oPaci
FIELD NAME "SALORDEN" TYPE "N" LEN 03 DEC 00 OF oPaci
FIELD NAME "SALSESI" TYPE "N" LEN 03 DEC 00 OF oPaci

DEFINE INDEX ON str(Codigo,6) TO PACIENTE TAG PaciCod NODELETED OF oPaci
DEFINE INDEX ON substr(Upper(Apynom),1,45) TO PACIENTE TAG PaciNom NODELETED OF oPaci
DEFINE INDEX ON str(OBRACOD,3) TO PACIENTE TAG PaciObr NODELETED OF oPaci
DEFINE INDEX ON substr(_,1,1)+str(EDAD,3) TO PACIENTE TAG PaciSex NODELETED OF oPaci
DEFINE INDEX ON substr(Upper(DOCUMENTO),1,10) TO PACIENTE TAG PaciDoc NODELETED OF oPaci

END DATABASE oPaci

ACTIVATE DATABASE oPaci SHARED
// ACTIVATE INDEX IN oPaci

Return( oPaci )


Otro detalle que he notado en su codigo al principio del programa usted abre las bases de datos y sus respectivo indices AbrePaci( ) y dentro de la funcion, vuelve a generar todos los indices, cuando solo se debe de hacer una sola vez abriendo los indices y no volver a crear de nuevo los indices, tiene que controlarlo, porque si entra otro usuario compartiendo en red, es ahi donde el otro usuario vuelve a abrir la funcion AbrePaci( ) y crea de nuevo los indices que hasta podria marcar error por falta de control de que hay otro o nuevo usuario accediendo al sistema.

Es lo que note en su codigo de programacion al principio.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Lentitud al abrir una dbf en red

Postby FiveWiDi » Thu Jul 06, 2023 3:30 pm

Hola,

Este tema creo que no tiene solución si no te pasas a Advantage RDD.

Tengo la TDbf de Manuel Expósito, una de las joyas de este foro.
Muchísimas gracias Manuel, que gran trabajo.

Funcionando con FWH32 22.12

Si me das un mail te la envío.

La principal modificación la apliqué el 20/03/2009.

> 20/03/2009
- La DATA hDataFile estaba definida como AS NUMERIC y con la nueva versión de
Harbour (9.02), y el cambio del 'valor' hDataFile por pDataFile en la
estructura _DBFAREA de HbRddDbf.h, esta definición era incompatible; de ahí
que ahora en la declaración de DATA hDAtaFile se haya omitido AS NUMERIC.
< 20/03/2009
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1181
Joined: Mon Oct 10, 2005 2:38 pm

Re: Lentitud al abrir una dbf en red

Postby lgolexyn » Thu Jul 06, 2023 6:33 pm

Estimado Carlos

Gracias por el aporte
La verdad que todos los sistemas que tengo usan TDbf sin ningún problema.

Saludos y te dejo mi correo.
olexyn@gmail.com
Leonardo G.
lgolexyn
 
Posts: 9
Joined: Thu Jul 06, 2023 11:51 am

Re: Lentitud al abrir una dbf en red

Postby lgolexyn » Thu Jul 06, 2023 6:36 pm

Ahora que analizo tu respuesta, me parece que tienes razón, esta generando los indices cada ves que abro la base, lo único que no estoy encontrando es la forma de acceder a los indices desde TDBF
Creo que por ahí viene el problema.
Voy a analizar como lo puedo resolver.

Gracias
Leonardo G.
lgolexyn
 
Posts: 9
Joined: Thu Jul 06, 2023 11:51 am

Re: Lentitud al abrir una dbf en red

Postby lgolexyn » Thu Jul 06, 2023 9:49 pm

Estimado Joao

Adjunto link con un caso particular, desde el puesto donde esta instalado siempre funciona, pero al tratar de acceder desde
otra estacion se cuelga el programa.

https://mega.nz/file/s2ME2DRC#2n_YxCn-v ... 6FHKsjMAv8

Copilado con FWH 2.5 xHar 1.0.0
TDbf 12

En el programa se accede a pacientes, y también esta habilitada la opción Utilidades, Reorganizar por si se corrompe los indices.
En mi caco como comente lo probé en una red con windows 10
Leonardo G.
lgolexyn
 
Posts: 9
Joined: Thu Jul 06, 2023 11:51 am

Re: Lentitud al abrir una dbf en red

Postby FiveWiDi » Fri Jul 07, 2023 9:01 am

Las modificaciones que tuve que aplicar a TDBF para que funcionara en versiones recientes de Harbour y Fivewin son:

> 26/05/2008
Cambiado TField() por TDBFField() en TDBF.PRG
Y también cambiado TField por TDBFField en TDBFFIEL.PRG, en la definición de la clase.
Creo que esta clase (TField) existe en TDataBase de FWH.
<
> 20/03/2009
- La DATA hDataFile estaba definida como AS NUMERIC y con la nueva versión de
Harbour (9.02), y el cambio del 'valor' hDataFile por pDataFile en la
estructura _DBFAREA de HbRddDbf.h, esta definición era incompatible; de ahí
que ahora en la declaración de DATA hDAtaFile se haya omitido AS NUMERIC.
- En el fichero HBFORCE.C, en la definición de HB_FUNC( DBFHDL ), cambiar
hb_retni( pArea->hDataFile ); por hb_retptr( pArea->pDataFile );
y
hb_retni( 0 ); por hb_retptr( 0 );
< 20/03/2009

Las fechas son aproximadas, cuando actualicé mi FWH.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1181
Joined: Mon Oct 10, 2005 2:38 pm

Re: Lentitud al abrir una dbf en red

Postby lgolexyn » Fri Jul 07, 2023 11:07 am

Muy amable Carlos

Voy a analizarlo para ver como implementar.

Un cordial saludo
Leonardo
Leonardo G.
lgolexyn
 
Posts: 9
Joined: Thu Jul 06, 2023 11:51 am

Re: Lentitud al abrir una dbf en red

Postby ACC69 » Fri Jul 07, 2023 2:38 pm

lgolexyn wrote:Ahora que analizo tu respuesta, me parece que tienes razón, esta generando los indices cada ves que abro la base, lo único que no estoy encontrando es la forma de acceder a los indices desde TDBF
Creo que por ahí viene el problema.
Voy a analizar como lo puedo resolver.

Gracias


Hola de nuevo estimado amigo.

Tienes que usar condicion de abrir bases de datos con su respectivo indices.

Por ejemplo
Caso 1 para generar indices

if !existeIndices(tabla) // aqui indica que si no existe indice que la genere
index to NUMREGISTRO TAG TABLA
endif

Caso 2 para abrir tablas y su respectivo indices
si abres la tabla1()
use tabla new alias tabla
set index to tabla



Es asi como se debe de controlar....espero haberte dado la idea mi estimado amigo.

Saludos y buen dia.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Lentitud al abrir una dbf en red

Postby lgolexyn » Fri Jul 07, 2023 11:14 pm

Entendido con respecto a los indices y apertura de tablas
Tengo que analizar todo para ver como encarar el tema

Gracias Estimado
Leonardo G.
lgolexyn
 
Posts: 9
Joined: Thu Jul 06, 2023 11:51 am

Re: Lentitud al abrir una dbf en red

Postby Rick Lipkin » Sat Jul 08, 2023 1:59 pm

Gentleman ... for what it is worth I gave up on .dbf many years ago in favor of SQL and ADO .. For local network apps I find MS Access is an excellent database choice but for large enterprise apps I like Sql Server.

ADO does NOT require any 3rd party connection libraries ( like odbc ) and all the ADO drivers ( connectivity ) are contained on every Microsoft windows 10 workstation ..

ADO is very much like the syntax of TDatabase .. have a look at the FW samples and the example AdoRick.prg ... Rao has also simplified the ADO syntax into FW wrappers ....\source\function\adofuncs.prg which are already built into FiveWin .. there is no need to include adofuncs.prg into your link list ..

If you use Tdatabase .. you should have no difficult understanding the ADO syntax ..

Rick Lipkin
User avatar
Rick Lipkin
 
Posts: 2665
Joined: Fri Oct 07, 2005 1:50 pm
Location: Columbia, South Carolina USA

Re: Lentitud al abrir una dbf en red

Postby jvtecheto » Sat Jul 08, 2023 6:04 pm

Hola amigo:

No uso TDbf pero tengo entendido que como todos los productos de Manu es de gran calidad, no me cabe la menor duda.
Mi primer consejo seria consultar con Manu y que el te diga la mejor manera de funcionar para entornos en red (dale unos dias que siempre esta liado), supongo que con la clase tendras algun ejemplo donde poder
investigar.

Luego la funcion que utilizas abre paciente veo que creas las tablas cada vez que entras(supongo que no ya que las borrarias) y los indices. ?

Sigue los consejos de ACC69 y ten en cuenta que en indices .CDX como veo que estas usando al abrir la tabla si el indice tiene el mismo nombre no es necesario que los abras, ya
que por defecto se abre automaticamente.

Seguro que lo solucionas rapidamente.

Jose.
Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
User avatar
jvtecheto
 
Posts: 592
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: Lentitud al abrir una dbf en red

Postby xmanuel » Mon Jul 10, 2023 5:58 am

Hola Leonardo.

Soy Manu Expósito, hice TDbf hace muchos años como ejercicio de aprendizaje para mi y de paso lo cedí a dominio público para que todo el mundo pudiera usarla libremente...

No sé si ya se solucionó el tema. Si no lo hizo podríamos intentar arreglarlo para que TDbf siga unos años más en la palestra.

Como seguro que si le meto mano de nuevo habrá cambios me gustaría que los que tengáis algún cambio implantado me lo hicierais llegar, (Carlos)

Un saludo
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 761
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 38 guests