Clique abaixo para nos ajudar
Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
8 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 7 Visitantes :: 2 Motores de busca

Jorge Pinguim

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Últimos assuntos
USAR REPORT FORM

30/12/2016, 09:06 por AJC

Pessoal bom dia,
Estou com um grande problema, já pesquisei muita coisa sobre report form, mas o …

Comentários: 3

Impressora Ticket

15/11/2016, 09:20 por clima238

Bom dia,
Por favor alguém me explique porque o código abaixo imprime no ecrã em vez do printer: …

Comentários: 2

Visite meu canal no Youtube

20/1/2017, 00:45 por ImRicoh

VFP Unlimited


Comentários: 0

Bloquear edição do ListBox

17/6/2010, 15:13 por Julio

Pessoal

Boa Tarde!

Tnho uma listbox apenas para exibir o resultado.
Preciso bloquear a listbox …

Comentários: 17

automação do mozilla e chrome

15/1/2017, 12:16 por Handerson Mildroz

Boa tarde a todos!

Sou iniciante no VFP. Preciso de ajuda, pois tenho um código que usa o …

Comentários: 0

Estatísticas
Temos 6992 usuários registrados
O último usuário registrado atende pelo nome de BrenoTayne

Os nossos membros postaram um total de 10 mensagens em 4 assuntos

Transformar Espaço em coluna

Página 1 de 2 1, 2  Seguinte

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido Transformar Espaço em coluna

Mensagem por ton_oliver em 1/9/2010, 15:04

Boa Tarde

Amigos creio que ja passaram por isso e se puderem me ajudar.

Possuo um TXT no seguinte formato.

d7010000 097000017647RONALDO SPENOLA 44 0000001
ppR001 09704800000017600000549230000000054923 0000002

A segunda linha corresponde a primeira.

Tem como ler a primeira linha e depois a segunda e a cada ESPAÇO eu criar um CAMPO e colocar os valores ?

Preciso muito dessa ajuda.

Abrcossss

Oliveira

ton_oliver
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por alceu11 em 1/9/2010, 15:50

So crie as 2 primeiras colunas as outras vc conta os caracteres e cria
Código:

CLOSE DATABASES all
create curso aquivo(cod1 c(8), cod2 c(19))
SELECT aquivo
append from texto1.txt DELIMITED WITH _ WITH CHARACTER ' '
browse

alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por ton_oliver em 1/9/2010, 16:35

Obrigado Alceu!

Fiz o teste porem ele criou o cod1 apenas com os 8 primeiros valores conforme criado na estrutura.

Mas nao sei como ler linha a linha e quando achar um espaco, criar uma coluna e jogar o valor nela.

ton_oliver
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por Marcos Guedes em 1/9/2010, 17:11

Não entendi muito bem o problema...

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por ton_oliver em 1/9/2010, 17:19

Possuo um arquivo TXT no seguinte formato.

N0130000 09704800000017647JOAO ANTONIO 052 00002
S01R001 09704800000017647N030200802 0000029885 000003

A segunda linha corresponde a primeira, porem foi quebrada se tornando 2.

Teria como ler a primeira linha (letra a letra), identificar quando encontra o espaço e jogar o valor em uma nova coluna.

Porem agora percebi que tenho NOMES que possuem espaço tb entao esa ideia nao daria certo.

Vcs podem me dar uma luz ?

ton_oliver
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por Julio em 1/9/2010, 17:27

Este txt nao pode ser gerado todo registro em uma unica linha?
Como foi gerado o txt?

Julio
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por ton_oliver em 1/9/2010, 17:37

Recebo ele de terceiros, mas poderia sim!!

Alguma sugestao ?


ton_oliver
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por lardecristo em 1/9/2010, 18:00

Ton, geralmente um arquivo TXT gerado por algum sistema existe um padrão.
por exemplo:
posição:
01 a 10 - código
11 a 40 - nome

E assim sucessivamente, solicite este formato para os caras que geram isso para você e vai ficar tudo mais fácil.

Sobre não conseguir pegar as duas linhas, vou arriscar pelo que entendi.

Primeiro abra com FOPEN e depois use FGETS, este pega linha por linha, não sei se o arquivo tem cabeçalho, mas use uma variável de apoio para fazer a contagem das linhas e assim pegue as duas e faça o processo de inclusão no registro desejado.
FCLOSE para fechar.

E para pegar cada parte utilize o SUBSTR.

lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por ton_oliver em 1/9/2010, 18:05

Vlw lardecristo.
Vou solicitar esse pedido!

Mas fico evergonhado em dizer que nao sei usar quase nada de FOX.
Estou no lugar de uma pessoa que fazia isso e ela saiu sem dizer nada de nada, entao sobrou pra mim dar continuidade.
FOPEN sei que abre um arquivo
Agora usar FGETS e uma variavel auxiliar ai ja complica :-(

ton_oliver
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por lardecristo em 1/9/2010, 18:06

Agora não vai dar, mas mais tarde posto um exemplo pronto,

Abraços,


lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por ton_oliver em 1/9/2010, 18:12

Obrigado lardecristo.

Nao quero abusar nao é que me colocaram em uma situaçäo complicada e conto com uma ajuda de vcs.

Um tempo atras em ajudei um cara a fazer um programa em FOX mas bem simples, agora mexer com base de dados crua sem INTERFACE e ainda mais com importacao de arquivos e delimitadores nao faço ideia

Mas fico no aguardo da sua ajuda pra estudar encima

ton_oliver
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por m@r<3|o em 1/9/2010, 20:38

Ton, primeiramente ,
se voce tem o TXT e o fox instalado , voce tem como fazer qq coisa que quiser

só que a informacao dada , foi uma previa,
se voce explicar melhor o que precisa , mais facil podera receber ajuda

se voce recebeu um TXT , voce nao quer importar ??? o principal fundamento de interagir sistemas é em TXT importando e exportando , se nao quer importar seria extramente um caso a parte

voce quer modificar e devolver ao Terceiros ???
entao poderia importar os dados dele juntar com os seus e depois devolver pra ele , isso que nao fico claro

essa TXT se refere a que operacao ??? algum tipo de aparelho , as vezes outra linguagem seria melhor, para fazer tais façanhas

voce vai fazer isso todo mes , todo dia , ou somente esse arquivo ?
se for todo dia recomendo fazer um sisteminha para isso ?
se for 1 vez por mes uma tela ?
se for esse arquivo somente nao teria como fazer na mao ?



o mais pratico seria voce importar assim ja tera os txt em tabela dbf
tb mais facil exportar para TXT novamente

entao faça 1 tabela com os campos respectivos ao layout com o numero de caracter correto , mais os campos a qual precisa acrescentar
ai 2 botoes importar exportar

e quando for exportar seria como o Alceu disse acima , voce delimita tudo de uma vez só


Se voce quer colocar dados no meio desses dados voce precisa especificar o antes e o depois ....

voce esta especificando somente o antes precisamos saber ql o resultado final antes de palpitar

tudo tem muita diferença ...... na falta de informacao

antes

d7010000 097000017647RONALDO SPENOLA 44 0000001
ppR001 09704800000017600000549230000000054923 0000002

depois

d7010000|meucampo|097000017647RONALDO SPENOLA|meucampo|44|meucampo| 0000001
ppR001|meucampo|09704800000017600000549230000000054923|meucampo| 0000002

seria issso que quer fazer ..... eu entendi que é assim ?






m@r<3|o
Participante Assíduo
Participante Assíduo


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por m@r<3|o em 1/9/2010, 22:27

Tenta comecar algo como nessa sequencia se for o caso,
copiei esse codigo do Alceu de algum lugar , mais nao lembro

Código:
***********************outra forma de Fazer**************
CLOSE ALL
RELEASE ALL
CLOSE TABLES all
****arquivo para appendar o txt*****************
CREATE TABLE Lista(campo c(90))

***SEU ARQUIVO CONFORME SUA ESTRUTURA
CREATE TABLE arquivos(Cliente c(50),codigo n(10,0),endereco c(30))

SELECT arquivos

FOR l = 1 TO 30
APPEND BLANK
REPLACE cliente WITH "Cliente "+STR(RECNO())
REPLACE codigo WITH RECNO()
replace endereco WITH "Endereco nr."+STR(RECNO())
ENDFOR

BROWSE LAST TITLE "o seu arquivo SO coloquei 30 registros"
GO top

COPY TO "SG1.txt" SDF
MODIFY COMMAND sg1.txt

*****************copie a estrutura
COPY STRUCTURE TO arq &&AQUI COpia A ESTRUTURA DO SEU ARQ
USE arq IN 0 ALIAS arq shared

SELECT lista
APPEND FROM sg1.txt sdf
BROWSE LAST TITLE "arquivo LISTA que crie so pra demonstrar como pegar um txt"
GO top
*************vou dar o replace agora
DO WHILE !EOF()
SELECT arq
APPEND BLANK
REPLACE cliente WITH LEFT(lista.campo,50)
replace codigo WITH VAL(SUBSTR(lista.campo,51,10))
replace endereco WITH RIGHT(lista.campo,30)
SELECT lista
SKIP
ENDDO
SELECT arq

BROWSE LAST TITLE "Arq.dbf peguei os dados lista replace linha a linha"

tenta importar mais ao inves de Lista(campo c(90)) por que voce tera + varios campos "no caso aos vazios que ira preencher

criei campo pór campo capaz que fais tudo que disse antes num PRG só

ai voce cria campo por campo e grava,
ai depois

aplica um comando como

select tabela2 seus dados em outra tabela para gravar na importada
ai voce aplica seus dados tabela seus dados para outra tabela criada importada

Código:
REPLACE ALL tabelaimporta WITH tabelasua FOR codigochave ="variavel"

e depois para exportar novamente

Código:
CREATE CURS TMP (modu_val C(06), modu_desc C(65))
APPEND FROM modu
INDEX ON modu_val TAG modu_val
COPY TO modulos.TXT SDF

e nesse create cursor tb pode ser como o alceu citou


seria uma forma ..... outra seria .....
fazer o que esta pensando de ir pegar caracter por caracter ....

do jeito acima criando os campos com tudo tanto de caracter iguais
daria certo

m@r<3|o
Participante Assíduo
Participante Assíduo


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por ton_oliver em 2/9/2010, 09:31

Marcelo obrigado!!!

Vou testar.

Quanto suas perguntas referente ao TXT, estou no aguardo de me emviarem o layout para poder trabalhar.
Isso será feito 1 vez por mes.

A nivel de curiosidade agora....
Como eu poderia ler "letra a letra" ou numero e parar quando achar um caracter qualquer como espaço ou virgula, etc ?
Sei que tem como importar com esses delimitadores mas a ideia agora é apenas para obter conhecimento, fugindo um pouco doque preciso.


ton_oliver
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por m@r<3|o em 2/9/2010, 11:38

Olá Ton, boa pergunta
ainda nao fiz nada do genero .

se voce for tratar caracter a caracter ...... ira usar os comandos de bloco e mais os de caracter , deixando o codigo abundamente enxuto desnecessariamente

Não saberia te falar os comandos certos para colher caracter conforme uma virgula parar enfiar um campo e depois voltar a ler parar dinovo " isso poderia ser uma estrutura de repeticao .....pegar esse valor e depois continuar ......

mais como citei , comece tentando importar e exportar
para depois aprender alterar ou tratar como pretende

somente a partir de teste deste genero que consiguira chegar as respostas que precisa,

tem que por a mao na massa!!!! conforme surgir duvidas ai sim poderemos ajudar ,

o que voce tem que fazer é mais facil do que uma exportar da base real onde tem que criar o TXT tirando "" ponto . virgula , barra / etc ....

as vezes voce tem cnpj 00.000.000/0000-00 só de precisar tirar esse pontos barra e traço , da 1 linha inteira de dor de cabeça , tendo dificuldades nos comandos

e o seu caso capaz que nao precisara disso, por isso digo importa num DBF primeiro
estrutura em demais campos o que precisara encaixar e depois gere novamente
será muito mais facil .... esse procedimento





m@r<3|o
Participante Assíduo
Participante Assíduo


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por Marcos Guedes em 2/9/2010, 11:47

Oliver, você poderia postar um modelo do arquivo?

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por ton_oliver em 2/9/2010, 11:52

Marcelo o scrip que vc passou funcionou perfeito. Tentei adequar a minha situacao, mas vc ja imagina o que deve ter saido. kkk

A priori sem saber ainda o layout, estipulei 4 campos.

O que nao entendi direito é:
A tabela ARQUIVOS vc preenche ela via um LOOP e copia tudo para o TXT.
E depois copia tudo do TXT para a TABELA LISTA.
entendi certo ????

ton_oliver
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por Marcos Guedes em 2/9/2010, 11:54

[Você precisa estar registrado e conectado para ver este link.] escreveu:Oliver, você poderia postar um modelo do arquivo?
up!

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por ton_oliver em 2/9/2010, 12:00

Marcos esta dando o seguinte erro ao postar o arquivo

Não foi possível enviar o arquivo : o espaço de armazenamento para usuários foi ultrapassado. (Espaço restante : 0 Kb)

Ele é um TXT com 1,39 Kb

ton_oliver
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por Marcos Guedes em 2/9/2010, 12:24

Utilize o mecanismo conforme mostrado no seguinte tópico:
[Você precisa estar registrado e conectado para ver este link.]

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por ton_oliver em 2/9/2010, 12:38

Segue o arquivo em anexo:

Clique aqui para baixar o arquivo!

ton_oliver
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por Marcos Guedes em 2/9/2010, 12:58

Ao ver o arquivo conseguir ler duas interpretações, veja se lhe ajuda:
- Clique aqui para baixar o exemplo!

Ou uma terceira alternativa:
Código:
#DEFINE nomearquivo "teste.txt"

CREATE CURSOR teste(campo1 c(18), campo3 c(17), campo4 c(50), campo5 c(8), campo6 c(7))

LOCAL conteudoarquivo AS STRING
LOCAL totallinhas AS INTEGER
LOCAL contador AS INTEGER

m.conteudoarquivo = FILETOSTR(nomearquivo)
m.totallinhas = ALINES(arraylinhas,m.conteudoarquivo)

FOR m.contador=1 TO m.totallinhas
INSERT INTO teste VALUES(;
      SUBSTR(arraylinhas[m.contador],1,18),;
      SUBSTR(arraylinhas[m.contador],19,17),;
      SUBSTR(arraylinhas[m.contador],36,50),;
      SUBSTR(arraylinhas[m.contador],86,8),;
      SUBSTR(arraylinhas[m.contador],94))
ENDFOR

SELECT * FROM teste

USE IN SELECT("teste")

É só baixar o exemplo e testar os 3 códigos e vê se resolve.

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por ton_oliver em 2/9/2010, 13:23

Marcos é perfeitamente o que eu queria.

Muito Obrigado mesmo näo só a voce como a todos que estao me ajudando.

Enquanto estava quebrando a cabeça aqui, cheguei mais ou menos nessa sua lógica. Claro sem usar todos esses codigos. Apenas usando REPLACE e contando a quantidade de caracters para cortar.

Ai caiu em um problema que na sua forma tb o vi.

No campo onde tem o NOME possuo tamanhos variados de Nomes.
Vamos supor que eu tenha criado um campo no tamanho 50 para receber o nome e valores como esta no TXT e vc separou certo.
(Isso é a nivel de aprendizado)

ABCDEF4566777ORLANDO PIRES

Conforma acima o campo temo tamanho 50 pra receber o valor acima.
Caso eu queira pegar apenas o NOME e nao tenha um valor fixo dos NUMEROS eu poderia fazer um RIGHT porem ele pegaria os espacos em branco até chegar na ultima letra "S"
EX: right(campo,13) > ORLANDO PIRES
Porem esse 13 estipulado no tamanho pegaria apenas espaco em branco até chegar na letra.

Tem algum jeito de se pegar o "LEN" maximo de uma linha e alterar a estrutura docampo com o tamanho maior achado ??

A todos, agradeco mais uma vez e peço desculpa por esse POST longo e essa duvida que invento.

ton_oliver
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por m@r<3|o em 2/9/2010, 13:25

Ton, o exemplo do Alceu seria um poco complicado para alterar sendo que faz tudo cria importa etc ...

voce precisa fazer as coisas para facilitar utilizando arquivos ou objetos

Segue um Exemplo teste2

Clique aqui para baixar o arquivo!

digo para importar assim , onde esta escrito espaço, pode ser tanto o | como % como o que quiser olha a facilidade
apartir voce pode montar mais campos ......

entao voce comecaria criando uma tela , com + 1 botao ou outro PRG onde voce joga seus dados nos campos em que criar que fico em branco

ai somente exportar novamente 3 prg e faz isso tudo por partes e ainda mantem os dados guardados

m@r<3|o
Participante Assíduo
Participante Assíduo


Voltar ao Topo Ir em baixo

Resolvido Re: Transformar Espaço em coluna

Mensagem por Marcos Guedes em 2/9/2010, 13:57

[Você precisa estar registrado e conectado para ver este link.] escreveu:No campo onde tem o NOME possuo tamanhos variados de Nomes.
Vamos supor que eu tenha criado um campo no tamanho 50 para receber o nome e valores como esta no TXT e vc separou certo.
(Isso é a nivel de aprendizado)

ABCDEF4566777ORLANDO PIRES

Conforma acima o campo temo tamanho 50 pra receber o valor acima.
Caso eu queira pegar apenas o NOME e nao tenha um valor fixo dos NUMEROS eu poderia fazer um RIGHT porem ele pegaria os espacos em branco até chegar na ultima letra "S"
EX: right(campo,13) > ORLANDO PIRES
Porem esse 13 estipulado no tamanho pegaria apenas espaco em branco até chegar na letra.

Tem algum jeito de se pegar o "LEN" maximo de uma linha e alterar a estrutura docampo com o tamanho maior achado ??

A todos, agradeco mais uma vez e peço desculpa por esse POST longo e essa duvida que invento.
Não sei se entendi muito bem a dúvida...
Mas se o problema está em retirar os números dos nomes, veja se isto resolve:

Código:
#DEFINE nomearquivo "teste.txt"

CREATE CURSOR teste(campo1 c(18), campo3 c(17), campo4 c(50), campo5 c(8), campo6 c(7))

LOCAL conteudoarquivo AS STRING
LOCAL totallinhas AS INTEGER
LOCAL contador AS INTEGER

m.conteudoarquivo = FILETOSTR(nomearquivo)
m.totallinhas = ALINES(arraylinhas,m.conteudoarquivo)

FOR m.contador=1 TO m.totallinhas
   INSERT INTO teste VALUES(;
      SUBSTR(arraylinhas[m.contador],1,18),;
      SUBSTR(arraylinhas[m.contador],19,17),;
      CHRTRAN(SUBSTR(arraylinhas[m.contador],36,50),'0123456789',''),;
      SUBSTR(arraylinhas[m.contador],86,8),;
      SUBSTR(arraylinhas[m.contador],94))
ENDFOR

SELECT * FROM teste

USE IN SELECT("teste")

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Página 1 de 2 1, 2  Seguinte

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum