FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Lentitud al abrir una dbf en red
Posts: 9
Joined: Thu Jul 06, 2023 11:51 AM

Lentitud al abrir una dbf en red

Posted: Thu Jul 06, 2023 02: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 "SEXO"       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(SEXO,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.
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM

Re: Lentitud al abrir una dbf en red

Posted: Thu Jul 06, 2023 02: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.
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM

Re: Lentitud al abrir una dbf en red

Posted: Thu Jul 06, 2023 03: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
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM

Re: Lentitud al abrir una dbf en red

Posted: Thu Jul 06, 2023 03: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.
Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM

Re: Lentitud al abrir una dbf en red

Posted: Thu Jul 06, 2023 03: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 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 9
Joined: Thu Jul 06, 2023 11:51 AM

Re: Lentitud al abrir una dbf en red

Posted: Thu Jul 06, 2023 06: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.
Posts: 9
Joined: Thu Jul 06, 2023 11:51 AM

Re: Lentitud al abrir una dbf en red

Posted: Thu Jul 06, 2023 06: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.
Posts: 9
Joined: Thu Jul 06, 2023 11:51 AM

Re: Lentitud al abrir una dbf en red

Posted: Thu Jul 06, 2023 09: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-vZNiJocDEMh4guaskfptYuYC06FHKsjMAv8

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.
Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM

Re: Lentitud al abrir una dbf en red

Posted: Fri Jul 07, 2023 09: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 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 9
Joined: Thu Jul 06, 2023 11:51 AM

Re: Lentitud al abrir una dbf en red

Posted: Fri Jul 07, 2023 11:07 AM

Muy amable Carlos

Voy a analizarlo para ver como implementar.

Un cordial saludo

Leonardo

Leonardo G.
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM

Re: Lentitud al abrir una dbf en red

Posted: Fri Jul 07, 2023 02: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.
Posts: 9
Joined: Thu Jul 06, 2023 11:51 AM

Re: Lentitud al abrir una dbf en red

Posted: 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.
Posts: 2706
Joined: Fri Oct 07, 2005 01:50 PM

Re: Lentitud al abrir una dbf en red

Posted: Sat Jul 08, 2023 01: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

Posts: 607
Joined: Mon Mar 04, 2013 04:32 PM

Re: Lentitud al abrir una dbf en red

Posted: Sat Jul 08, 2023 06: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
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM

Re: Lentitud al abrir una dbf en red

Posted: Mon Jul 10, 2023 05: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