Montar linha para gerar arquivo txt

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
NaPraia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 22 Fev 2008 8:24 am
Localização: Floripa - SC

beleza pessoal,
seguinte, eu tenho um campo no forms e eu estou precisando gerar umas etiquetas numa impressora de rolo. O campo é mult-row (no máximo três linhas e que eu também não sei como ajustar). E para isso eu gero um arquivo txt para depois poder mandar imprimir. O certo seria sair uma linha que foi digita em cada linha do arquivo, mas como podem ver, está sainda todas as linhas digitadas em uma única linha do arquivo. Eu não estou conseguindo identificar o 'enter' que é dado no campo para poder separar a linhas.

Entrada de dados no campo do forms

Selecionar tudo

AGUA
REFRI
CERVEJA
Como a linha está sendo gravada no arquivo

Selecionar tudo

^FO20,080^A0N,015,030^FDAGUA
REFRI
CERVEJA^FS
Como eu preciso que apareça a linha no arquivo

Selecionar tudo

^FO20,105^A0N,050,045^FDAGUA^FS
^FO20,105^A0N,050,045^FDREFRI^FS
^FO20,105^A0N,050,045^FDCERVEJA^FS
e o comando que uso para gerar a linha é:

Selecionar tudo

Text_IO.Put_Line(V_ARQUIVO,'^FO20,080^A0N,015,030^FD'||:bloco.campo||'^FS');
alguém pode me ajudar??

obrigado
RJG
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 79
Registrado em: Ter, 16 Mai 2006 11:40 am
Localização: Patos de Minas - MG

Não seria + ou - assim senão me engano:

Selecionar tudo

declare
    arq         text_io.file_type;
    linha       varchar2(600);
    begin
            	 arq := text_io.fopen(:tbloco.caminho||nome_arquivo.TXT','W');-----caminho e nome do arquivo
    	 loop
    	      linha := xx.cerveja)||' '||
    	                  xx.agua)||' '||
    	                  xx.refri);
    	     text_io.put_line(arq,linha);
    	  end loop;
    	text_io.fclose(arq);
    end;
Claro nesse caso você tem q declarar o cursor x e talzz...
espero ter ajudado não sou bom pra explicar....rsrsrsrsrs
NaPraia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 22 Fev 2008 8:24 am
Localização: Floripa - SC

opa, beleza, mas o problema é justamente esse:

Selecionar tudo

             linha := xx.cerveja)||' '||
                         xx.agua)||' '||
                         xx.refri);
            text_io.put_line(arq,linha); 
é montar a linha.

pois essas 3 informações estão em único campo no forms que seria o :bloco.campo. Não estou sabendo como pegar a informação da primeira linha e jogar no caso numa variável (xx.cerveja), a informação da segunda lina e jogar numa variável (xx.agua) e a terceira em outra variável (xx.refri).

Não sei se ficou mais claro o meu problema.

por enquanto modifiquei e estou usando 3 campos diferentes, mas não sei se o cliente vai aprovar. Mas qualquer coisa digo que é limitação da ferramenta.

Valeu, obrigado

mas se alguém souber como fazer, eu gostaria de saber pois é capaz que eu ainda precise usar.
RJG
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 79
Registrado em: Ter, 16 Mai 2006 11:40 am
Localização: Patos de Minas - MG

aaa sim entendi.....desculpe
os dados então em um unico campo de texto multi-line
já montei varios arquivos txt apartir query,loop,etc.....
Mas essa é nova....
Se não tiver uma propriedade do text_io que ajude nisso você tera q usar programação mesmo (codigo bruto) manipulando a string antes usando instr,substr,decode,ltrim,rtrim e por ai vai...adoro elas faz o codigo ficar bonito......hehehhe

Mas se descobrir um jeito simples posta aqui pra gente ver.
abraços
Diego_Mello
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 229
Registrado em: Sex, 05 Set 2008 2:59 pm
Localização: Igrejinha - RS
Diego Mello
Igrejinha - RS
www.twitter.com/diegolmello

Brother,

Segue um teste que eu fiz aqui...

Sendo o campo :z, multiline.

Selecionar tudo

	:a := substr(:z, 1, instr(:z, chr(10))-1);
	:z := REPLACE(:z, substr(:z, 1, instr(:z, chr(10))));
	
	:b := substr(:z, 1, instr(:z, chr(10))-1);
	:z := REPLACE(:z, substr(:z, 1, instr(:z, chr(10))));
	
	:c := :z;
	:z := NULL;
Vê se corresponde o/
joaogarcia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 91
Registrado em: Ter, 20 Mar 2007 7:19 pm
Localização: Campinas - SP
Contato:
Cordialmente,
João C. Garcia

Não sei se isso ajuda, mas você poderia usar algum tipo de tag no campo. Depois pra manipular o campo ficaria sussa...
Por exemplo, já iniciar o campo assim:

Selecionar tudo

:campo.teste := :campo.teste || '< digite o conteúdo aqui >' || chr(10) ||
                :campo.teste || '< digite o conteúdo aqui >' || chr(10) ||
                :campo.teste || '< digite o conteúdo aqui >';
Neste caso o usuário só precisaria ser avisado para sempre manter o texto entre as tags '< >'.


T+
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes