Olá,
Como posso utilizar instruciones sql del ads sobre una tabela DBF/CDX?
Gracias.
#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
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
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 50 guests