ADS Tips

ADS Tips

Postby Carles » Thu Dec 27, 2007 8: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 ?

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
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: 1117
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Postby Patricio Avalos Aguirre » Thu Nov 06, 2008 9:45 pm

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
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

Postby fgondi » Fri Nov 07, 2008 8: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

Code: Select all  Expand view
FUNCTION Fech()
  local cAds, dDate
  cAds  := AdsGetServerTime()[1]
  dDate := ctod( cAds )
return dDate
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 21 guests

cron