Page 1 of 1

ADS Tips

PostPosted: Thu Dec 27, 2007 8:15 am
by Carles
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 ?

Code: Select all  Expand view
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:

Code: Select all  Expand view
@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

PostPosted: Thu Nov 06, 2008 9:45 pm
by Patricio Avalos Aguirre
Hola carles

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

Code: Select all  Expand view
#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



Code: Select all  Expand view
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

PostPosted: Fri Nov 07, 2008 8:18 am
by fgondi
Hola,

Uso de fecha

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

Code: Select all  Expand view
FUNCTION Fech()
  local cAds, dDate
  cAds  := AdsGetServerTime()[1]
  dDate := ctod( cAds )
return dDate