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 )