lentitud xBrowse y ADS

lentitud xBrowse y ADS

Postby lucasdebeltran » Tue Mar 13, 2012 3:18 pm

Hola compañeros:

Estoy haciendo unas pruebas con ADS, especialmente para acceder a través de Internet. Todo funciona relativamente bién excepto los xBrowses.

Los que lo usáis, por favor, ¿me podríais indicar algún tip?.

Este es el código que uso:


Mil gracias!!.

Code: Select all  Expand view
 

FUNCTION MAIN()

[...]

// Sets generales---------------------------------------------------------
   SetGetColorFocus()              
   SET EPOCH TO 1990              
   SET CENTURY ON                  
   SET DATE ITALIAN                
   SET DELETED ON                  
   SetCancel( .F. )                
   SetDialogEsc( .F. )            
   SET( _SET_INSERT, .T. )        




    Request ADS,ADSKeyCount,ADSKeyNo,OrdKeyCount,OrdKeyNo, AdsGetRelKeyPos, AdsSetRelKeyPos

     RddRegister( "ADS", 1 )
     RddSetDefault( "ADS" )

     //setting up server type
     // 1 = Local Server (no client / server)
     // 2 = Remote Server
     // 3 = Local + Remot
     // 4 = Internet Server
     // 5 = Local + Internet
     // 6 = Remote+Internet
     // 7 = Local + Remote + Internet , best choice
     adsSetServerType( 4 )  // ó  adsSetServerType( ADS_REMOTE_SERVER )

     //setting up the file types
     // 1 = DBFNTX
     // 2 = DBFCDX
     // 3 = ADSADI
     adsSetFileType( ADS_CDX )  // o ADS_CDX
   // -------------------------------------------------------------------------




   // Opening DBF FILES
   [...]
   SELECT 5
   USE (cMyPath+"FACTURAS") INDEX (cMyPath+"FACTURAS")  SHARED NEW  ALIAS "FACTURAS"



  // INDEXING
  [...]
 
  USE (cMyPath+"FACTURAS")   EXCLUSIVE NEW
  DELETE ALL FOR EMPTY( FIELD->NUMERO )
  PACK

  INDEX ON FIELD->NUMERO  TO (cMyPath+"FACTURAS")
  DbCloseAll()
 
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: lentitud xBrowse y ADS

Postby Patricio Avalos Aguirre » Tue Mar 13, 2012 8:04 pm

hola

Si pretendes que los browse en internet se comporten como en la red local, imposible...

utiliza consultas sql y los datos lo pasas a un arreglo o dbftmp para tener el acceso red local, de lo contrario
solo lentitud..
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1060
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: lentitud xBrowse y ADS

Postby lucasdebeltran » Tue Mar 13, 2012 8:44 pm

Hola,

Muchas gracias por contestar. He visto en un post de Mr. Nages que hay que poner el SET DELETED OFF.

En este caso sí que hay un ligero aumento de velocidad.

Pero entonces, ¿cómo debo construir los índices?.

¿Así?.

INDEX ON FIELD->NUMERO TO (cMyPath+"PEDIDOS") FOR !Deleted()


Y si los xBrowses van superlentos, ¿cómo usáis ADS en una VPN por ejemplo?.

Muchas gracias nuevamente.
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: lentitud xBrowse y ADS

Postby Patricio Avalos Aguirre » Tue Mar 13, 2012 9:49 pm

Lucas

si quiere aumento en Ads debes

1. Utilizar tablas ADT que es geniuno de ADS ( ojo las tablas ADT no funciona set delete ya no no aplica para estas tablas ), si borra un registro adios para siempre :-) )
2.-Utilizar comando SQL
3.- Si utilizas browse,utlizar Arreglos o dbfTmp para que los datos los procese de tu computador y no del servidor
ya que ahi en donde se relentiza en buscar los datos por internet..

un ejemplo mas menos asi

Code: Select all  Expand view

cSql := "Select campo1, campo2, campo3 from BASE WHERE campo3 ='FAC'"
SqlEjecute( "BaseSQL", cSql )
IF (nCanreg := BaseSQL->( LASTREC() )) > 0
   aArray := Array( nCanreg,3 )
   for i := 1 to nCanReg   
       aArray[i,1] := BaseSQL->Campo1
       aArray[i,2] := BaseSQL->Campo2
       aArray[i,3] := BaseSQL->Campo3
   Next i
   //aqui tu browse preferido..
endif
BaseSQL->( dbCloseArea() )
 


Code: Select all  Expand view

//--------------
#include "ads.ch"
function SqlEjecute( cNewAlias, cSql, hConnection )
local cAlias := ALIAS(), lReturn := .t.

DEFAULT hConnection := ViewUsu():hConnection

Select 0

if !AdsCreateSqlStatement( (cNewAlias), ADS_CDX, hConnection )
    MsgInfo("error AdsCreateSqlStatement()" + CRLF + "Error:"+cValtochar( AdsGetLastError() ) )
    lReturn :=  .f.
endif

if lReturn .and. !AdsExecuteSqlDirect(cSql)
    (cNewAlias)->( dbCloseArea() )
    lReturn :=  .f.
    MsgInfo("error AdsExecuteSqlDirect(cSql)" + CRLF + "Error:"+cValtochar( AdsGetLastError() ) + CRLF + cSql )
    if file( "c:\SqlError.txt" )
        ferase( "c:\SqlError.txt" )
    endif
    Logfile( "c:\sqlError.txt", { cSql }  )
endif

if !empty( cAlias )
    select (cAlias)
endif

hConnection := NIL

return( lReturn )
//---------------------------------------------------------------------------------------

 



pd. por eso en varios post de SQL hablan de cambiar el chip del los DBF, a mi aún me cuesta :-) jeje
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1060
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: lentitud xBrowse y ADS

Postby lucasdebeltran » Wed Mar 14, 2012 11:47 am

Muchas gracias.

Sí, al final no voy a tener más remedio.


Otra duda, en modo local los índices se crean del tipo .idx pero con AIS y un Diccionario son .cdx.

¿Sabes por qué sucede ésto?.

En ambos casos tengo adsSetFileType( ADS_CDX )
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: lentitud xBrowse y ADS

Postby Patricio Avalos Aguirre » Wed Mar 14, 2012 1:57 pm

Yo utilizo siempre diccionario de datos para ambos , local o servidor
y te ahorras de colocar la ruta de la tabla

Code: Select all  Expand view
/*
// Opening DBF FILES
   [...]
   SELECT 5
   USE "FACTURAS" INDEX "FACTURAS"  SHARED NEW  ALIAS "FACTURAS"
*/

 

Code: Select all  Expand view
Init Procedure Inicio()
    local hConnection := 0, lConecte

    SET MULTIPLE ON
    SET EPOCH TO 1950               // Admite los años desde el 1990 en adelante
    SET CONFIRM ON
    SET CENTURY ON                  // 4 d¡gitos a¤o
    SET DATE FORMAT "DD/MM/YYYY"    // formato dd-mm-yyyy
    AdsSetDeleted( .t. )

    SetHandleCount( 150 )           // M ximo n§ ficheros abiertos
    SET _3DLOOK ON
    SET AUTOPEN OFF

    oApp := MyApp():Load()

    rddRegister( "ADS", 1 )
    rddsetdefault( "ADS" )
    /*
    VAR AdsServer       AS NUMERIC     INIT "\\SERVIDOR\SHARED\DICDATO.ADD"
    VAR AdsConnect      AS NUMERIC      INIT ADS_REMOTE_SERVER //ADS_LOCAL_SERVER
    VAR hConnection      AS NUMERIC     INIT 0
     */


    AdsSetServerType( oApp:AdsConnect )

    MsgRun( "Espere un momento, Conectando con el Servidor", "Win-Facturación",;
             { || lConecte := AdsConnect60( oApp:AdsServer, oApp:AdsConnect, "adssys", "pass",, @hConnection ) } )

    if !lConecte
        MsgInfo( "Hay problemas en el servidor"+CRLF+"intente mas tarde", "usuario" )
        MsgInfo( "Error:"+cValtochar( AdsGetLastError() )+CRLF +;
            "Servidor:"+oApp:AdsServer, "Usuario" )
        PostQuitMessage(0)
        QUIT
        return
    endif

    oApp:hConnection := hConnection
    hConnection := NIL

    AdsSetFileType( ADS_CDX )
    AdsLocking( .t. )
    AdsRightsCheck( .f. )

return
 
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1060
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: lentitud xBrowse y ADS

Postby lucasdebeltran » Wed Mar 14, 2012 3:22 pm

Patricio,

Muchas gracias por tu respuesta.

El problema de los diccionarios es que tienes que añadir las tablas previamente.

Y sobre todo, ¿qué pasa cuando tienes varias empresas?. En todas hay un CLIENTES.DBF.

Y lo de la diferencia de índice, idx y cdx, ¿sabes por qué puede ser?.

Muchas gracias nuevo.

Salu2
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: lentitud xBrowse y ADS

Postby JavierVital » Wed Mar 14, 2012 3:45 pm

Que tal Lucas
Yo tengo un sistema, trabajando en 2 empresas, una con dd y otra sin. y los
2 utilizan .ADI para los indices.

Saludos.
User avatar
JavierVital
 
Posts: 105
Joined: Thu Feb 26, 2009 4:08 pm

Re: lentitud xBrowse y ADS

Postby lucasdebeltran » Wed Mar 14, 2012 3:50 pm

Javier,

¿Y cómo haces para especificar el tipo de índice?.

Yo con el mismo código, el que he puesto antes, en modo local usa .idx y con DD .cdx. No lo entiendo.

Gracias!!!!!!!!!.
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: lentitud xBrowse y ADS

Postby JavierVital » Wed Mar 14, 2012 4:18 pm

Lucas asi abro el inicial :

Code: Select all  Expand view

REQUEST HB_LANG_ES
   REQUEST DBFCDX, DBFFPT
    REQUEST ADS,ADSKeyCount,ADSKeyNo,OrdKeyCount,OrdKeyNo,OrdKeyGoto,AdsGetRelKeyPos,AdsSetRelKeyPos
    RddRegister( "ADS", 1 )
    RddSetDefault("ADS")
    AdsSetServerType(7)
    AdsSetFileType(3)
    AdsRightsCheck( .F. )
    DO CASE
        CASE nNEmpresa = 1
            IF AdsConnect60( cPathSer, 7,"ADSSYS","CORONA",,@hDD1)         
                MsgRun("->Abriendo archivos ...  / Opening files...","Por favor espere / Please Wait",{|| IF(ABRE_PRIMEROS(),.T.,Cerrar()) })
            ELSE       
                MsgStop("Se ha rechazado la conexión al servidor de >> ABARROTERA LA CORONA, S.A. DE C.V. << , por favor intente mas tarde"+CRLF+CRLF+;
                "ADS Error")
                QUIT
            ENDIF
        CASE nNEmpresa = 2
            ADSConnect(cPathDAT)
            MsgRun("Abriendo archivos ...  / Opening files...","Por favor espere / Please Wait",{|| IF(ABRE_PRIMEROS(),.T.,Cerrar()) })
    ENDCASE

 
User avatar
JavierVital
 
Posts: 105
Joined: Thu Feb 26, 2009 4:08 pm

Re: lentitud xBrowse y ADS

Postby lucasdebeltran » Wed Mar 14, 2012 4:21 pm

Ah, pero veo que sólo tienes una empresa.

Imagina que tienes tres, luego necesitas 3 diccionarios, uno por cada una.

Y ¿cómo creas los índices por favor?.

Muchas gracias.
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: lentitud xBrowse y ADS

Postby JavierVital » Wed Mar 14, 2012 4:24 pm

ahi tengo 2 empresas, una con dd y otra SIN.,
Yo creo que por cada empresa ocuparias diferentes dd con sus respectivos paths
User avatar
JavierVital
 
Posts: 105
Joined: Thu Feb 26, 2009 4:08 pm

Re: lentitud xBrowse y ADS

Postby JavierVital » Wed Mar 14, 2012 4:30 pm

Yo creo que asi ,
ya cuando tengas un monton de empresas pues seria de otra forma.

Code: Select all  Expand view

    DO CASE
        CASE nNEmpresa = 1    // Con DD
            cPathSer := DiskName()+":\"+CurDir(DiskName()+":")+"\EMPRESA1.ADD"
            IF AdsConnect60( cPathSer, 7,"
ADSSYS","CORONA",,@hDD1)         
                MsgRun("
->Abriendo archivos ...  / Opening files...","Por favor espere / Please Wait",{|| IF(ABRE_PRIMEROS(),.T.,Cerrar()) })
            ELSE       
                MsgStop("
Se ha rechazado la conexión al servidor de >> EMPRESA 1 << , por favor intente mas tarde"+CRLF+CRLF+;
                "
ADS Error")
                QUIT
            ENDIF
        CASE nNEmpresa = 2    // SIN DD
        cPathSer := DiskName()+"
:\"+CurDir(DiskName()+":")+"\datos\"
            ADSConnect(cPathSer)
            MsgRun("
Abriendo archivos ...  / Opening files...","Por favor espere / Please Wait",{|| IF(ABRE_PRIMEROS(),.T.,Cerrar()) })
        CASE nNEmpresa = 3 // Con DD
            cPathSer := DiskName()+"
:\"+CurDir(DiskName()+":")+"\EMPRESA3.ADD"
            IF AdsConnect60( cPathSer, 7,"
ADSSYS","CORONA",,@hDD1)         
                MsgRun("
->Abriendo archivos ...  / Opening files...","Por favor espere / Please Wait",{|| IF(ABRE_PRIMEROS(),.T.,Cerrar()) })
            ELSE       
                MsgStop("
Se ha rechazado la conexión al servidor de >> EMPRESA 3 << , por favor intente mas tarde"+CRLF+CRLF+;
                "
ADS Error")
                QUIT
            ENDIF      
        CASE nNEmpresa = 4 // Con DD
            cPathSer := DiskName()+"
:\"+CurDir(DiskName()+":")+"\EMPRESA4.ADD"
            IF AdsConnect60( cPathSer, 7,"
ADSSYS","CORONA",,@hDD1)         
                MsgRun("
->Abriendo archivos ...  / Opening files...","Por favor espere / Please Wait",{|| IF(ABRE_PRIMEROS(),.T.,Cerrar()) })
            ELSE       
                MsgStop("
Se ha rechazado la conexión al servidor de >> EMPRESA 3 << , por favor intente mas tarde"+CRLF+CRLF+;
                "
ADS Error")
                QUIT
            ENDIF                   
    ENDCASE
User avatar
JavierVital
 
Posts: 105
Joined: Thu Feb 26, 2009 4:08 pm

Re: lentitud xBrowse y ADS

Postby Carles » Thu Mar 15, 2012 8:43 am

Lucas,

Te recomiendo un cambio de enfoque para usar los xbrowser con ADS. Funcionan ? Si claro, pero piensa que contantemente se esta realizando consultas al server y ralentiza mucho el proceso. A mi entender y mi pobre experiencia me dice que lo mejor es atacar un server y que devuelva los registros a procesar. Estos seran tratados a nivel local via array, y cualquier modificacion envias posteriormente al server. De hecho, es muy parecido a como trabajar via SQL. Ahora, si queremos estar constantemente enganchados, notaras esta perdida de rendimiento.

Sobre el tema de trabajar con registros set deleted on...

Mirate -> viewtopic.php?f=3&t=9343&hilit=ADS#p85272 por si te sirve de algo... ya me "pelee" en su dia con Mr. Nagues. jajaja
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1137
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: lentitud xBrowse y ADS

Postby lucasdebeltran » Thu Mar 15, 2012 10:53 am

Carles,

Muchas gracias por responder.

Sí, vi el post tuyo pero no lo acabé de entender.

Desde luego, he activado SET DELETED OFF y creo los índices con FOR !Deleted(). Pero de esto último Mr. Nages no dice nada.

Tampoco sé al final después de las observaciones de Mr. Nages cómo trabajas realmente, pues él te hizo algunos comentarios. ¿Cómo quedó al final la cosa?.

Al final efectivamente tendré que migrar a SQL, pero hay que reeescribir mucho código lamentablemente.

¿Tu usas AIS via Internet?.

Un saludo y mil gracias
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 79 guests