FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ADS Tips
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
ADS Tips
Posted: Thu Dec 27, 2007 08:15 AM
Hola,

Despues de leer el hilo http://fivetechsoft.com/forums/viewtopic.php?t=9343 , pienso que va siendo el momento de que entre todos vayamos aportando nuestros conocimientos para poder de alguna manera optimizar el rendimiento de ADS en nuestras aplicaciones. Entiendo que lo importante es optimizar el rendimiento en el uso de ADS en forma Cliente / Servidor.

Muchas funciones no se usan o se usan mal. ADS funciona bien, pero puede funcionar mejor ? Creo que si es posible. Mi tip de hoy

Uso de un campo de tipo fecha.

Normalmente usando la funcion DToC(), el sistema funciona y nos quedamos tan anchos, pero que pasa si usamos la funcion AdsGetDate() ? Notamos diferencia ?

HB_FUNC( ZADSGETDATE ) 
{ 
   ADSAREAP pArea; 
   UNSIGNED8  *pucFldName = (UNSIGNED8 *) hb_parc( 1 ); 
   UNSIGNED8  pucBuf[16]; 
   UNSIGNED16 pusLen = 16; 

   pArea = (ADSAREAP) hb_rddGetCurrentWorkAreaPointer(); 


/*   ulRetVal = AdsGetServerName( hConnect,pucname,&puslen ) ; */ 

   AdsGetDate( pArea->hTable, pucFldName, pucBuf, &pusLen ); 

   if( pusLen > 0 ) 
   { 
      hb_retc( (char *) pucBuf ); 
   } 
    else 
   { 
      hb_retc(NULL); 
   } 

}


Y su uso en un browse seria:

@0, 0 LISTBOX oLbx ; 
FIELDS (cAlias)->order ,; 
       (cAlias)->( ZAdsGetDate( 'mydate' ) ) ; 
HEADER 'Order', 'Date' ; 
FONT oFont ALIAS cAlias SIZE 200,200 PIXEL OF oWnd


Nota: Es interesante realizar las pruebas con grandes tablas y contra Cliente/Servidor

Espero animar a la gente aportar sus tips y entre todos lograr un mayor rendimiento de ADS
Salutacions, saludos, regards

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

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
ADS Tips
Posted: Thu Nov 06, 2008 09:45 PM
Hola carles

Como puedo incluir esta rutina en mi aplicación
lo estoy haciendo de esta manera pero me salen muchos errores

#pragma BEGINDUMP

#include "hbapi.h"
#include "hbinit.h"
#include "hbapiitm.h"
#include "hbapierr.h"
#include "hbdbferr.h"
#include "hbapilng.h"
#include "hbdate.h"
#include "rddads.h"
#include "hbset.h"
#include "hbvm.h"
#include "rddsys.ch"

HB_FUNC( ZADSGETDATE )
{
   ADSAREAP pArea;
   UNSIGNED8  *pucFldName = (UNSIGNED8 *) hb_parc( 1 );
   UNSIGNED8  pucBuf[16];
   UNSIGNED16 pusLen = 16;

   pArea = (ADSAREAP) hb_rddGetCurrentWorkAreaPointer();


/*   ulRetVal = AdsGetServerName( hConnect,pucname,&puslen ) ; */

   AdsGetDate( pArea->hTable, pucFldName, pucBuf, &pusLen );

   if( pusLen > 0 )
   {
      hb_retc( (char *) pucBuf );
   }
    else
   {
      hb_retc(NULL);
   }

}
#pragma ENDDUMP



Lines 1191, Functions/Procedures 31
Generating C source output to 'obj\General.c'...
Done.
        c:\borland\bcc55\bin\bcc32 -c -tWM -Ic:\harbour\include -oobj\Genera
j\General.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
obj\General.c:
Error E2141 c:\harbour\include\ace.h 1242: Declaration syntax error
Error E2293 c:\harbour\include\ace.h 1243: ) expected
Error E2141 c:\harbour\include\ace.h 1246: Declaration syntax error
Error E2293 c:\harbour\include\ace.h 1247: ) expected
Error E2141 c:\harbour\include\ace.h 1250: Declaration syntax error
Error E2293 c:\harbour\include\ace.h 1251: ) expected
Error E2141 c:\harbour\include\ace.h 1254: Declaration syntax error
Error E2293 c:\harbour\include\ace.h 1256: ) expected
Error E2141 c:\harbour\include\ace.h 1259: Declaration syntax error
Error E2293 c:\harbour\include\ace.h 1261: ) expected
Error E2141 c:\harbour\include\ace.h 1264: Declaration syntax error


nota: he copiado los archivos ace.h y rddads.h al directorio c:\harbour\include desde los fuentes de contrib
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
Posts: 694
Joined: Fri Oct 07, 2005 06:58 AM
ADS Tips
Posted: Fri Nov 07, 2008 08:18 AM
Hola,

Uso de fecha

Va bastante mejor que Date() y además la fecha que devuelve es la del servidor, no la del equipo

FUNCTION Fech()
  local cAds, dDate
  cAds  := AdsGetServerTime()[1]
  dDate := ctod( cAds )
return dDate
Un saludo

Fernando González Diez

ALSIS Sistemas Informáticos

Continue the discussion