Página 1 de 1

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 03 Mar 2022 02:30
por deividdjs
Boa noite amigos ... estou criando um DBF para imprimir notas fiscais parametrizadas ... e estou criando um DBF pra que eu possa ordenar e imprimir os campos no seus devidos lugares ... me surgiu a ideia de criar um DBF com LINHAS E COLUNAS e um campo onde eu coloco a variavel no qual o comando de impressão teria que entender q é uma variavel ... vejam se conseguem entender o meu raciocinio ...

Código: Selecionar todos

	  		  if .not. file("fatconf.dbf") 
		
		       vdbf := "fatconf.dbf"
		       fatconf := {}
		
  		       aadd(fatconf,{"CN_LIN"  ,"N",03,0})
			    aadd(fatconf,{"CN_COL"  ,"N",03,0})
			    aadd(fatconf,{"CONTEUDO","C",60,0})
		           
		       dbcreate(vdbf,fatconf,"dbfcdx")
		
		       use fatconf shared alias fatconf new
             index on (cn_lin+cn_col) tag fatcx_01
		
		     endif

			  if FACTURA->lin_nrfact # 0 .and. FACTURA->col_nrfact # 0
              ADIC_REG();Bloq_reg()
				  replace cn_lin   with l_nrfact,;
				          cn_col   with c_nrfact,;
				          conteudo with 'notas->cc_nota'


aqui é o comando de impressão ... porem a onde diz conteudo abaixo deveria imprimir os dados da variavel cc_nota que está na base de dados NOTAS

Código: Selecionar todos

@FATCONF->CN_LIN,FATCONF->CN_COL say FATCONF->CONTEUDO
não faço ideia se isso é possivel ...

por ele imprime 'notas->cc_nota' ao inves do numero da nota fiscal como mencionado acima ...

forte abraço !!

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 03 Mar 2022 09:15
por JoséQuintas
depende se tudo vai ser de dbf ou não.
de um modo geral:

Código: Selecionar todos

xValue := &( configuracao->conteudo )
IF ! Empty( configuracao->picture )
   xValue := Transform( xValue, configuracao->picture )
ENDIF
@ configuracao->linha, configuracao->coluna SAY xValue

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 03 Mar 2022 18:55
por deividdjs
Maravilha ... vou testar e volto aqui com o resultado !!

Obrigado parça!!!

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 03 Mar 2022 23:36
por deividdjs
José !! Perfeito amigão ... funcionou perfeitamente!! show!!!

Muito obrigado !!

Forte Abraço!!

Sds,

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 03 Mar 2022 23:42
por alxsts
Olá!

Para quem não gosta de usar o operador macro (&), como eu, pode-se usar codeblocks...

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 04 Mar 2022 02:32
por deividdjs
Estou indexando primeiro pela linha + coluna ... porém ele não fica na ordem ... uma linha da configuração fica fora de ordem ...

Eu fiz assim

Index on lin+col tag fatcdx1 to cdx

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 04 Mar 2022 02:49
por alxsts
Olá!

Da forma como está fazendo, está indexando pelo resultado da soma do conteúdo das duas colunas e não pela concatenação das mesmas.
Faça :

Código: Selecionar todos

Index on Str(lin,3) + Str(col,3) tag Tag1 To fatconf 
Use sempre o mesmo nome do arquivo DBF no arquivo CDX. Desta forma, quando fizer USE no DBF já abre o CDX automaticamente se SET AUTOPEN estiver ON.

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 04 Mar 2022 06:16
por deividdjs
Entendi... obrigado !! Vou testar aqui ...

Abraço!

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 20 Mar 2022 17:17
por deividdjs
boa tarde amigos ...

a impressão apartir do DBF ficou show!! porem estou tendo dificuldade com impressoras matriciais ... ja fiz varios teste em impressoes feita pelo NODOSIMP em impressora USB funciona perfeitamente ... porem na matricial quando tenho que imprimir o "X" na rotina abaixo a impressora epson lx-350 ela pula uma linha não sei porque ... vejam ai se consegue me dar uma luz por favor ... /// quando a factura é a CREDITO ou CONTADO ... ou a vista ou a prazo está em espanhol porque atendo no paraguai ...

if imp_fact = 1 .and. imp_porta = 1 /// IMPRESSORAS MATRICIAIS .... hoje uso impressora epson lx-350 usb porem direcionando para porta virtual LPT2 com o comando externo net use LPT2 \\NOME-PC\\IMPRESSORA

Código: Selecionar todos

	///--- COME€A A IMPRESSAO 

   n_factfol :=1   // NUMEROS DE FATURAS POR FOLHA
	do while n_factfol <= (FACTURA->cn_factfol)
      
		vcab := .T. 
		RESET_IMP()
		
      if imp_fact = 1 .and. imp_porta = 1 
         if prow()<=23
            @00,00 say c_33linhas
           else
            @00,00 say c_63linhas
         endif
      endif

      DBGOTOP()
	   do while !EOF()

         if vcab

            select FATCONF
				DBGOTOP()

            **********************************************
	   // ENCABEZADO FACTURA ------------------------
	   **********************************************
			   
		      if imp_fact = 1 .and. imp_porta = 1 
               @00,00 say c_06lpp
               @00,00 say c_ncomprime
				else
				   @00,00 say CHR(18) + CHR(19) // LETRA NORMAL + NEGRITO
				endif   

				do while FATCONF->parte = 'ENCABEZADO'

			      if FATCONF->tipo = 'TEXTO'
			  	 	   xValue := (FATCONF->conteudo)
				   else  
				      xValue := alltrim(&(FATCONF->conteudo))
				   endif	  
    			   if !Empty(FATCONF->mascara)
	               xValue := Transform( xValue, FATCONF->mascara )
               endif
		         
   			   if xValue = 'X'
					   
						if SUBSTR(NOTAS->cc_condpg,1,3) = "000" .and. NOTAS->cn_numcond < 2              // AL CONTADO 
  							@FATCONF->CN_LIN,FATCONF->CN_COL say xValue
  							DBSKIP(2)                                                       
						else                                                                // A CREDITO 
	                  DBSKIP(1)                                                      
							@FATCONF->CN_LIN,FATCONF->CN_COL say xValue
							DBSKIP()
						endif   
					
					else
                  
					   @FATCONF->CN_LIN,FATCONF->CN_COL say xValue
		      		DBSKIP()

					endif   

				enddo	
			  	
            DEVPOS(FACTURA->lin_inicor,0) // posiciona para linha do corpo da factura 
            
			   vcab = .F.
         
         select TMP
	  		endif

			*************************************
			// CORPO DA FACTURA -----------------
			*************************************
					
         @prow() +1,FACTURA->col_qtd       say alltrim(transform(cn_quant,MASK_QUANT()))
			@prow()   ,FACTURA->col_descr     say cc_descr   picture "@!"
         if FACTURA->col_marca # 0
			   @prow()   ,FACTURA->col_marca  say cc_marca   picture "@!"
			endif   
         if FACTURA->col_codfab # 0
			   @prow()   ,FACTURA->col_codfab say cc_codfabr  picture "@!"
			endif   
         if FACTURA->col_codpro # 0
			   @prow()   ,FACTURA->col_codpro say cc_codprod picture "@!"
			endif   
			@prow()   ,FACTURA->col_punit     say cn_preco   picture MASK1()
         if FACTURA->col_iva5 # 0
			   @prow()   ,FACTURA->col_iva5   say cn_totitem picture MASK1()
			endif   
			@prow()   ,FACTURA->col_iva10     say cn_totitem picture MASK1()
         
         DBSKIP()

      enddo

      **********************************
      // RODAPE FACTURA ----------------
      **********************************
      if vrod := .T. 
	   	
			select FATCONF
         do while FATCONF->parte = 'RODAPE' .and. !EOF()
       
		      if FATCONF->tipo = 'TEXTO'
		         xValue := (FATCONF->conteudo)
		       else
		         xValue := &(FATCONF->conteudo)
		       endif	  
  	          if !Empty(FATCONF->mascara)
	            xValue := Transform( xValue, FATCONF->mascara )
             endif
       
  	          @FATCONF->CN_LIN,FATCONF->CN_COL say xValue
	          DBSKIP()

    		enddo
		
		   vrod = .F.
		   
		endif
forte abraço!!

Deivid

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 20 Mar 2022 19:09
por Itamar M. Lins Jr.
Olá!
Imprime em arquivo e vê como está saindo.
Se pula 1 linha, ai é o valor @ x,y say que está pulando.
Se pula 1 folha, é o @ x,y say que está MENOR( no caso o x) a impressora só vai pra frente não volta o papel p/ traz, dai ela lança uma folha p/ frente e continua a imprimir na posição solicitada.

Saudações,
Itamar M. Lins Jr.

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 20 Mar 2022 21:20
por deividdjs
pior q é justamente o q eu faço ... primeiro gero um arquivo .PRN e mando imprimir ... e o arquivo está correto .. porem quando mando pra LX-350 matricial ele está pulando a linha .. bem estranho !!

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 20 Mar 2022 22:32
por carlaoonline
1 --------------------------------------------
Tenta abrir esse arquivo PRN em outro editor (NotePad++ ou NotePad do Windows) e manda para a matricial pra ver se por outro editor também pula a linha;

2 --------------------------------------------
Ou antes de cada comando SAY coloca uma ALERT para mostrar 4 itens:
Número da Linha;
Número da coluna;
Conteúdo da linha;
e a quantidade de caracteres que tem esse conteúdo.

Se a impressora esta configurada para 132 caracteres por linha e for mandado uma linha com caracteres visíveis e mais alguns espaços em branco que somados ultrapassem os 132 caracteres, então os espaços excedentes serão impressos na próxima linha dando a impressão que foi gerada uma linha em branco...

3 --------------------------------------------
Impressoras matriciais ao receberem certos caracteres podem executar alguns comando.... (A dinossáurica Epson LX810 tem até uns Jampers atrás dela de configuração..)

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 21 Mar 2022 09:32
por Itamar M. Lins Jr.
Olá!
e o arquivo está correto
Levar a LX-350 para o conserto. Se está ok então não há o que fazer a impressora está com defeito.
Se anexa-se o arquivo .PRN já teríamos analisado ele. Existe caracteres não imprimíveis, que não aparecem na tela.

Saudações,
Itamar M. Lins Jr.

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Enviado: 21 Mar 2022 10:58
por JoséQuintas
Se mandar imprimir fora de ordem, vai pular folha.
Confirme no arquivo gerado se não tem Chr(12).

DevPos(), sei lá se deveria usar isso, substitua por @ lin, col say ""

Talvez precise começar usando um SetPrc(0,0) e finalizar com a mesma coisa, para o posicionamento interno do Harbour se reconfigurar.