Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Simple example for creating a COM file?
Message
De
04/09/2002 08:39:48
 
 
À
04/09/2002 04:51:04
Denis Filer
University of Oxford
Royaume Uni
Information générale
Forum:
Visual FoxPro
Catégorie:
COM/DCOM et OLE Automation
Divers
Thread ID:
00696522
Message ID:
00696556
Vues:
11
Define this in a PRG file:
DEFINE CLASS TestCOM AS Session OLEPUBLIC 

	Codigo      = []
	Loja        = []
	PathDirTemp = []
	PathTabelas = []
	TabelaSaida = []	
	
*-- Documentation for properties
	DIMENSION Codigo_COMATTRIB[4]
	Codigo_COMATTRIB[1] = 1024 && COMATTRIB_NONBROWSABLE
	Codigo_COMATTRIB[2] = [Product code.]
	Codigo_COMATTRIB[3] = [Codigo]
	Codigo_COMATTRIB[4] = [String]
	
	DIMENSION Loja_COMATTRIB[4]
	Loja_COMATTRIB[1] = 1024 && COMATTRIB_NONBROWSABLE
	Loja_COMATTRIB[2] = [Shop code.]
	Loja_COMATTRIB[3] = [Loja]
	Loja_COMATTRIB[4] = [String]
	
	DIMENSION PathDirTemp_COMATTRIB[4]
	PathDirTemp_COMATTRIB[1] = 1024 && COMATTRIB_NONBROWSABLE
	PathDirTemp_COMATTRIB[2] = [Temp Files Directory.]
	PathDirTemp_COMATTRIB[3] = [PathDirTemp]
	PathDirTemp_COMATTRIB[4] = [String]
	
	DIMENSION PathTabelas_COMATTRIB[4]
	PathTabelas_COMATTRIB[1] = 1024 && COMATTRIB_NONBROWSABLE
	PathTabelas_COMATTRIB[2] = [Database Directory.]
	PathTabelas_COMATTRIB[3] = [PathTabelas]
	PathTabelas_COMATTRIB[4] = [String]
	
	DIMENSION TabelaSaida_COMATTRIB[4]
	TabelaSaida_COMATTRIB[1] = 1024 && COMATTRIB_NONBROWSABLE
	TabelaSaida_COMATTRIB[2] = [Result Table name.]
	TabelaSaida_COMATTRIB[3] = [TabelaSaida]
	TabelaSaida_COMATTRIB[4] = [String]
*-- End of Prop Documentation
*-- Method Declaration

	PROCEDURE Init
		*-- Class init	
	ENDPROC
	
	PROCEDURE Destroy
		*-- Classe fin
		CLOSE TABLES ALL
		CLOSE DATABASES ALL
	ENDPROC 
	
	PROCEDURE Error (lnNumErro,lcMetodo,lnLinha)
		*-- Gerenciador de Erros da Classe
		
		LOCAL lcMsgErro,lnTransacao
		
		*-- Verify transaction level
		lnTransacao = TXNLEVEL()
		FOR i=1 TO lnTransacao
			ROLLBACK
		ENDFOR 
		
		lcMsgErro = ;
   				DTOC(Datetime())+ ;
				" | Error Number:" + Transform(lnNumErro) + ;
			    " | MethodName:" + lcMetodo + ;
			    " | LineNo:" + Transform(lnLinha) + ;
				" | Message:" + Message()
		  
		 Strtofile(lcMsgErro + Chr(13), This.pathTabelas + "error.log", .T. ) && save erros in log file
		 ComReturnError([ComEstoque],lcMsgErro)

	ENDPROC 
	
	HIDDEN PROCEDURE AbreArquivos
		*-- Open Shared and Buffer Files

	ENDPROC 	
	
    HIDDEN PROCEDURE FechaArquivos
    	*-- Close all files opened by AbreArquivos  
        
    ENDPROC 
    
    *-- Code property methods
    HIDDEN Function Codigo_ACCESS
    	*-- Validação do Código
    	    	
    	RETURN This.Codigo    	
    
    ENDFUNC 
    
    HIDDEN Function Codigo_ASSIGN
    	LPARAMETERS lcNovoValor
    	
*!*	    	This.AbreArquivos()
*!*	    	
*!*	    	SELECT codigo FROM g2_estca WHERE codigo = m.lcNovoValor INTO ARRAY laCodigo
*!*	    	
*!*	    	IF _tally = 0
*!*	    		COMRETURNERROR([COMEstoque],[Produto não encontrado])
*!*	    		RETURN .F.
*!*	    	ENDIF 
*!*	    	
*!*	    	This.FechaArquivos()
    	
    	This.Codigo = m.lcNovoValor
    	
    ENDFUNC 
    
    *-- PathTabelas property's method
	HIDDEN FUNCTION PathTabelas_access
		*-- Validação do parâmetro
		IF EMPTY(This.PathTabelas)
			This.PathTabelas = [d:\gereswin7\datacdx\]
		ENDIF
		
		IF !DIRECTORY(This.PathTabelas)
			COMRETURNERROR([ComEstoque],[O diretório não existe.])
			RETURN .F.
		ENDIF 
		 
		IF !FILE(This.PathTabelas + [gereswin.dbc])
			COMRETURNERROR([ComEstoque],[Diretório inválido - GeresWin.DBC não encontrado.])
			RETURN .F.
		ENDIF 
		
		RETURN This.PathTabelas
		
	ENDFUNC 
	
	HIDDEN FUNCTION PathTabelas_assign
		LPARAMETERS lcNovoValor
		*-- Existe a possibilidade de ser configurado em um ini
		*-- Validação do parâmetro
		
		This.PathTabelas = m.lcNovoValor
				
	ENDFUNC
	
	FUNCTION ConsultaEstoque(cCodigo AS String,cLoja AS String) ;
		HELPSTRING [Esta função consulta estoque de um produto em uma determinada loja, e grava uma tabela temporária em disco, cujo caminho fica registrado na propriedade TabelaSaida.]
		*-- Consulta ao estoque e criação de cursor.
		LOCAL lcFiltro,lcNomeArq,lnRet
		
		lcFiltro = [AND ]
		lcNomeArq = This.PathDirTemp + [_tmpEstoq.dbf]		
		
		IF VARTYPE(cLoja) <> [C]
			lcFiltro = lcFiltro +  [.T.]
		ELSE
			lcFiltro = lcFiltro +  [g2_estoq.loja == cLoja]
		ENDIF 
		
		IF VARTYPE(cCodigo) <> [C]
			COMRETURNERROR([COMEstoque],[Código não informado])
			RETURN .F.		
		ENDIF
		
		This.AbreArquivos()
		
		SELECT							  					 ;
			g2_estoq.loja									,;
			g2_estoq.qtd_saldo								,;
			g2_estoq.custo_med								,;
			g2_estoq.ant_inv								,;
			g2_estoq.dat_custo								,;
			g2_estoq.dat_est								,;
			g2_estoq.dat_inv								,;
			g2_estoq.datultcomp								,;
			g2_estoq.dia_giro								,;
			g2_estoq.local									,;
			g2_estoq.pccompsicm								,;
			g2_estoq.qtd_est								,;
			g2_estoq.qtd_giro								,;
			g2_estoq.qtd_inv								,;
			g2_estoq.qtd_max								,;
			g2_estoq.qtd_min								,;
			g2_estoq.valultcomp								 ; 
		FROM 												 ;
			g2_estoq										 ;
		WHERE 												 ;
			g2_estoq.codigo == cCodigo						 ;
			&lcFiltro										 ;
		INTO TABLE  										 ;
			(lcNomeArq) READWRITE 
			
		lnRet = _TALLY 

		IF lnRet > 0
			This.TabelaSaida = lcNomeArq
		ENDIF 
		
		This.FechaArquivos()	
		
		CLOSE TABLES ALL 
				
		RETURN lnRet
												
	ENDFUNC 
	
	FUNCTION ConsultaMovimentacao(cCodigo AS String,cLoja AS String) ;
		HELPSTRING [Esta função consulta a movimentação para um produto em uma determinada loja, e grava uma tabela temporária em disco, cujo caminho fica registrado na propriedade TabelaSaida.]
		*-- Consulta ao estoque e criação de cursor.
		LOCAL lcFiltro,lcNomeArq,lnRet
		
		lcFiltro  = [AND ]
				
		IF VARTYPE(cLoja) <> [C]
			lcFiltro = lcFiltro +  [.T.]
		ELSE
			lcFiltro = lcFiltro +  [g2_estmo.loja == cLoja]
		ENDIF 
		
		IF VARTYPE(cCodigo) <> [C]
			COMRETURNERROR([COMEstoque],[Código não informado])
			RETURN .F.		
		ENDIF
		
		This.AbreArquivos()
		
		SELECT							  					 ;
			loja											,;
			data											,;
			qtd_lanca										,;
			qtd_saldo										 ;
		FROM 												 ;
			g2_estmo										 ;
		WHERE 												 ;
			g2_estmo.codigo = cCodigo						 ;
		INTO TABLE    										 ;
			d:\gereswin7\pablocdx\_tmpMovim.dbf
			
		lcNomeArq = This.PathDirTemp + [_tmpMovim.dbf]
		
		lnRet = _TALLY
		
		IF lnRet > 0
			This.TabelaSaida = lcNomeArq
		ENDIF 
		
		This.FechaArquivos()	
		
		CLOSE TABLES ALL 
				
		RETURN lnRet
										
	ENDFUNC 

	
*-- Fim da declaração de métodos

ENDDEFINE
Pablo Márcio de Oliveira

Inside the scream is silent, inside it must remain
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform