COMO TRAZER UMA VARIAVEL DE UM DBF ??

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem 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 !!
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem por deividdjs »

Maravilha ... vou testar e volto aqui com o resultado !!

Obrigado parça!!!
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem por deividdjs »

José !! Perfeito amigão ... funcionou perfeitamente!! show!!!

Muito obrigado !!

Forte Abraço!!

Sds,
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem por alxsts »

Olá!

Para quem não gosta de usar o operador macro (&), como eu, pode-se usar codeblocks...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem 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
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem 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.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem por deividdjs »

Entendi... obrigado !! Vou testar aqui ...

Abraço!
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem 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
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem 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 !!
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
carlaoonline
Usuário Nível 3
Usuário Nível 3
Mensagens: 190
Registrado em: 24 Ago 2014 22:38
Localização: Porto Alegre-RS

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem 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..)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMO TRAZER UMA VARIAVEL DE UM DBF ??

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder