String de campo
Moderador: Moderadores
-
leandrolinauer
- Usuário Nível 3

- Mensagens: 413
- Registrado em: 16 Out 2006 10:59
- Localização: Paranaíba-MS
String de campo
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:)
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:)
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Re: String de campo
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.
Detalhe: em todo o país, nota fiscal tem 6 dígitos numéricos.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Re: String de campo
Sendo algo tão simples ainda, é de se pensar que tenha resolvido. E se não resolveu, certamente vai voltar ao assunto.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
leandrolinauer
- Usuário Nível 3

- Mensagens: 413
- Registrado em: 16 Out 2006 10:59
- Localização: Paranaíba-MS
Re: String de campo
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)
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)
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: String de campo
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.Maligno escreveu:Sendo algo tão simples ainda, é de se pensar que tenha resolvido. E se não resolveu, certamente vai voltar ao assunto.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: String de campo
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.As vez fica meio no AR, se resolveu ou não a duvida.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
leandrolinauer
- Usuário Nível 3

- Mensagens: 413
- Registrado em: 16 Out 2006 10:59
- Localização: Paranaíba-MS
Re: String de campo
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
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
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Re: String de campo
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.
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.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
