ADS 8 e SQL instruciones

ADS 8 e SQL instruciones

Postby Wanderson » Wed Aug 13, 2008 8:44 pm

Olá,

Como posso utilizar instruciones sql del ads sobre una tabela DBF/CDX?

Gracias.
Wanderson
 
Posts: 332
Joined: Thu Nov 17, 2005 9:11 pm

Postby carlos vargas » Wed Aug 13, 2008 9:05 pm

Wanderson, este es un ejemplo en el cual uso un data dictionary

Code: Select all  Expand view  RUN
#define ADS_ANY_CONEXION   ( ADS_LOCAL_SERVER+ADS_REMOTE_SERVER+ADS_AIS_SERVER )
FUNCTION Main_AbrirTablas( lShared )
   LOCAL lOpen := FALSE
   LOCAL cErr  := ""

   DEFAULT lShared := TRUE

   /*realiza conexion de datos*/
#ifndef _ADS_REMOTE_
   IF !AdsConnect60( ".\datos\factura.add", 1, "AdsSys", "lodr",,@hConn )
#else
   IF !AdsConnect60( "\\CARLOS\DATA\FACTURA.ADD", ADS_ANY_CONEXION, "AdsSys", "mipassword", , @hConn )
#endif

      /*obtiene error*/
      AdsGetLastError( @cErr )

      /*muestra mensaje de error de conexion*/
      MsgStop( cErr, "Error de conexion a servidor de datos ADS!" )
      RETURN lOpen

   ENDIF

   /*abre tablas de datos*/
   IF lShared

      USE CAJA        NEW SHARED ALIAS CAJA
      USE CONTROL     NEW SHARED ALIAS CTRL
      USE USUARIOS    NEW SHARED ALIAS USUA
      USE PROVEEDORES NEW SHARED ALIAS PROV
      USE CLIENTES    NEW SHARED ALIAS CLIE
      USE MOVIMIENTOS NEW SHARED ALIAS TIPO
      USE FAMILIAS    NEW SHARED ALIAS FAMI
      USE PRODUCTOS   NEW SHARED ALIAS PROD
      USE MENTRADAS   NEW SHARED ALIAS ENTR
      USE MSALIDAS    NEW SHARED ALIAS SALI
      USE DENTRADAS   NEW SHARED ALIAS DETE
      USE DSALIDAS    NEW SHARED ALIAS DETS

   ELSE

      USE CAJA        NEW EXCLUSIVE ALIAS CAJA
      USE CONTROL     NEW EXCLUSIVE ALIAS CTRL
      USE USUARIOS    NEW EXCLUSIVE ALIAS USUA
      USE PROVEEDORES NEW EXCLUSIVE ALIAS PROV
      USE CLIENTES    NEW EXCLUSIVE ALIAS CLIE
      USE MOVIMIENTOS NEW EXCLUSIVE ALIAS TIPO
      USE FAMILIAS    NEW EXCLUSIVE ALIAS FAMI
      USE PRODUCTOS   NEW EXCLUSIVE ALIAS PROD
      USE MENTRADAS   NEW EXCLUSIVE ALIAS ENTR
      USE MSALIDAS    NEW EXCLUSIVE ALIAS SALI
      USE DENTRADAS   NEW EXCLUSIVE ALIAS DETE
      USE DSALIDAS    NEW EXCLUSIVE ALIAS DETS

   ENDIF

   /*bandera de apertura*/
   lOpen := TRUE

   /*al inicio de la aplicacion se selecciona un area vacia*/
   DBSelectArea( 0 )

RETURN lOpen



Code: Select all  Expand view  RUN
PROCEDURE Ventas_Listar2()
   LOCAL cSql:=""
   LOCAL cAlias := Alias()

   PRIVATE oTF

   /*pide rango*/
   oTF:=TRango():new()
   IF !oTF:lOk
      RETURN
   ENDIF

   IF oTF:lAll
      TEXT INTO cSql
         SELECT A.NUMERO, B.FECHA, A.CODPRO, C.NOMBRE, A.CANPRO, A.PREVEN, A.SUBTOT, A.DESCUE, A.TOTAL, B.TC ;
            FROM DSALIDAS AS A, MSALIDAS AS B, PRODUCTOS AS C ;
            WHERE Left(A.NUMERO,2)='VN' AND A.NUMERO = B.NUMERO AND A.CODPRO = C.CODIGO ;
            ORDER BY A.CODPRO
      ENDTEXT
      cSql := StrTran( cSql, ";", "" )
   ELSE
      TEXT INTO cSql
         SELECT A.NUMERO, B.FECHA, A.CODPRO, C.NOMBRE, A.CANPRO, A.PREVEN, A.SUBTOT, A.DESCUE, A.TOTAL, B.TC ;
            FROM DSALIDAS AS A, MSALIDAS AS B, PRODUCTOS AS C ;
            WHERE Left(A.NUMERO,2)='VN' AND A.NUMERO = B.NUMERO AND A.CODPRO = C.CODIGO AND B.FECHA BETWEEN %1 AND %2 ;
            ORDER BY A.CODPRO
      ENDTEXT
      cSql := StrTran( cSql, ";", "" )
      cSql := StrFormat( cSql, Ads2Str( oTF:dBeginDate ), Ads2Str( oTF:dEndDate ) )
   ENDIF

   DBSelectArea(0)
   ADSCreateSQLStatement( "REPTMP", 2 )
   IF ADSExecuteSQLDirect( cSql )
      DBSelectArea("REPTMP")
      REPTMP->( DBGoTop() )
      IF !REPTMP->( Eof() )
         Ventas_Listar2R()
      ELSE
         MsgInfo( "No hay ventas de productos!" )
      ENDIF
      REPTMP->( DBCloseArea() )
   ELSE
      MsgStop("Error en intruccion Sql!")
   ENDIF

   IF !Empty(cAlias)
      DBSelectArea(cAlias)
   ENDIF

   /*actualiza browse*/
   oBrw:refresh()

RETURN

Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 50 guests