Página 1 de 1
String de campo
Enviado: 03 Dez 2008 16:11
por leandrolinauer
Boa tarde.
Estou com o seguinte problema e não consegui ainda uma solução.
Chave do arquivo -> StrZero(ORDEM,10)+NOTA
Onde: ORDEM e NOTA são campos do arquivo
Preciso trocar este conteúdo pelo conteúdo de um arquivo em texto já localizado, já cheguei até aqui
aChave = StrZero(109864,10)+NF0004
Com este conteúdo necessito dar um SEEK no arquivo para localizar se ja existe a ocorrência.
Só que o seek com a string acima não funciona eu teria que formatá-la para :
"000000109864NF0004"
Se alguém souber como formatar ou fazer de outra forma eu agraço.
X:)
Re: String de campo
Enviado: 03 Dez 2008 16:29
por Maligno
Basta verificar que a string que você dá como exemplo tem 12 caracteres no número de ordem, e não 10 como na indexação. Assim, claro, não vai encontrar mesmo. Então, de duas uma: ou você acerta a chave de índice para ter 12 caracteres, ou monta a string de busca com 10.
Detalhe: em todo o país, nota fiscal tem 6 dígitos numéricos.
Re: String de campo
Enviado: 05 Dez 2008 18:40
por sygecom
Resolveu Leandro ?
Re: String de campo
Enviado: 05 Dez 2008 19:41
por Maligno
Sendo algo tão simples ainda, é de se pensar que tenha resolvido. E se não resolveu, certamente vai voltar ao assunto.
Re: String de campo
Enviado: 06 Dez 2008 16:46
por leandrolinauer
Boa tarde amigos.
Eu creio que não fui muito claro no assunto, mas já encontrei resposta para o mesmo.
O meu problema é o seguinte:
Eu tenho um arquivo formatado no formato texto parecido com CSV do excel, e tenho meu banco de dados DBF.
Tenho que passar os dados para o dbf e para isto eu não fiz uma rotina para cada arquivo meu (cerca de uns 200 DBF)
Fiz uma genérica que le o arquivo texto e identifica tudo (QUAL DBF QUAL LOJA ETC)
O PROBLEMA É:
O arquivo vem com os dados em texto assim: (exemplo grosso)
texto.csv
arquivo;formato;etc
campo1;campo2;campo3;campo4;campo5;campo6
etc;etc;1458;15205;etc;etc
leio a primeira linha descubo o dbf (arquivo)
leio a segunda linha e descubros os campos os quais se relacionam na mesma coluna abaixo com dados.
campo1;campo2;campo3;campo4;campo5;campo6
etc ;etc ;1458 ;15205 ;etc ;etc
abro o dbf no meu banco de dados e pego a chave do indice geral atraves do INDEXKEY(), decubro que o indice deste arquivo é CAMPO3+CAMPO4
passo a pegar os dados dos campos da chave de indíce.
CAMPO3 = 1458
CAMPO4 = 15205
AÍ os campos possuem mascara de formatação na criação de indiçes:
Exemplo:
StrZero(CAMPO3,10)+CAMPO4
DTOS(CAMPO3)+CAMPO4
ou outras combinações possiveis
entao tenho que pegar a mascara para formatar os dados: ou seja no caso exemplo :
Transformar CAMPO3 = 1458 EM 0000001458
Tansformar CAMPO4 = 15205 EM 15205 porque nao possue formatacao
Entao localizei uma função chamada STRTRAN() que nada mais nada menos troca os valores referidos ficando assim:
STRZERO(CAMPO3,10)+CAMPO4
STRZERO(1458,10)+15205
Agora dar um seek no arquivo ele não encontra porque só vai encontrar se eu fizer com que os dados sejam reformatados exemplo:
STRZERO(1458,10)+15205
Fazendo a atribuição com MACRO da certo:
&StrZero(1458,10). = 0000001458
já o 15205 nao precisa apenas junta-se ao anterior ficando = 000000145815205, esta pronta a chave para o seek.
vualá, perfeito deu super certo.
Aí me deparei com o formato DTOS e DTOC não se executa com MACRO da erro de val 0
aí só consegui fazendo um reconhecimento do conteudo da variavel antes de executar o MACRO
if Left(var,4) == "DTOS"
var:=DTOS(CTOD(conteudo))
EndIf
vualá, deu certo funcionando e rodando perfeitamente.
Esta era minha bomba, hehehehe. mas funcionou perfeitamente agora se tiver outra função do HARBOUR que faça esta maracutaia sem fazer varios FOR /next para achar e localizar e mudar e etc etc etc. seria melhor ainda
Estou arrumando ainda e testando neste momento sábado 06/12/2008 - 15:43 mas assim que eu tiver ela perfeita e funcionando passo completa aqui no forum para todos.
Um harbraço a todos.
Bom final de semana
eu ja estou ´o)
Re: String de campo
Enviado: 13 Dez 2008 15:36
por sygecom
Maligno escreveu:Sendo algo tão simples ainda, é de se pensar que tenha resolvido. E se não resolveu, certamente vai voltar ao assunto.
Isso é uma das coisa que sinto falta no forum, um status da thread, para saber se a mesma resolveu, foi parcialmente resolvida ou não foi resolvida. As vez fica meio no AR, se resolveu ou não a duvida.
Re: String de campo
Enviado: 14 Dez 2008 00:57
por Maligno
As vez fica meio no AR, se resolveu ou não a duvida.
Mas aí é muito simples: se não resolveu a dúvida, o sujeito vai voltar e continuar a thread, dizendo o que aconteceu, em que pé está, etc. Mas repare: se resolveu ou não, é problema do autor do tópico. Esse usuário, que divulgou a dúvida, e que é a parte mais interessada na solução, é quem deve se manifestar caso ainda precise de ajuda. Minha opinião.
Re: String de campo
Enviado: 16 Dez 2008 12:30
por leandrolinauer
Bom dia amigos Maligno e Sygecom.
Resolvi da forma descrita no fórum o que deixa extensa a linha de programação, mas esta funcionando bem.
Eu fiz uma pergunta caso alguem tenha uma solução mais prática ao que eu postei.
Mas como ainda esta em teste não postei no fórum, ficará para o ano que vem.
Um abraço a todos.
:-Y
Re: String de campo
Enviado: 16 Dez 2008 20:53
por Hasse
Boa noite colegas.
Eu acredito que aquele que foi ajudado, orientado, deveria SEMPRE comentar como resolveu o problema postado, e se possível, postar a parte do código envolvido, exatamente como o colega Leandrolinauer fez.
Eu vejo isto como uma questão de respeito para com aqueles que doaram parte do seu tempo e conhecimento em favor daquele que pediu ajuda.