Como indexar por campo relacionado.
Moderador: Moderadores
Para evitar problemas com indices corrompidos (acredite, essa técnica é muito instável) eu costumo fazer o seguinte.
Indexo o ARQ2 por nome.
Indexo o ARQ1 por código + dtos(data)
Pesquiso o nome e procuro pelo código no ARQ1.
Assim, todas as ocorrências do "cliente" serão listadas. Por ordem de nome e dentro dele, por ordem de data.
Isso evita que alteração no nome do "cliente" corrompa o indice do ARQ1.
Vamos pegar um exemplo que todos entendem:
Tenho um cadastro de produtos com os campos código e descrição.
Tenho tb um cadastro de movimentação, com código do produto e data da movimentação.
- Eu ordeno produtos por nome;
- Pego o primeiro produto e procuro pelo código qual o primeiro movimento dele;
- Imprimo todos os movimentos desse produto (dá até para filtrar por data, etc)
- Pego o próximo produto e executo o mesmo procedimento;
- Assim eu tenho o relatório dos produto por ordem de nome, dentro do produto, todas as movimentações por ordem de data.
Ufa! Acho que acabei de explicar! (ou ferrar de vez!)
Boa sorte. Espero ter ajudado.
Indexo o ARQ2 por nome.
Indexo o ARQ1 por código + dtos(data)
Pesquiso o nome e procuro pelo código no ARQ1.
Assim, todas as ocorrências do "cliente" serão listadas. Por ordem de nome e dentro dele, por ordem de data.
Isso evita que alteração no nome do "cliente" corrompa o indice do ARQ1.
Vamos pegar um exemplo que todos entendem:
Tenho um cadastro de produtos com os campos código e descrição.
Tenho tb um cadastro de movimentação, com código do produto e data da movimentação.
- Eu ordeno produtos por nome;
- Pego o primeiro produto e procuro pelo código qual o primeiro movimento dele;
- Imprimo todos os movimentos desse produto (dá até para filtrar por data, etc)
- Pego o próximo produto e executo o mesmo procedimento;
- Assim eu tenho o relatório dos produto por ordem de nome, dentro do produto, todas as movimentações por ordem de data.
Ufa! Acho que acabei de explicar! (ou ferrar de vez!)
Boa sorte. Espero ter ajudado.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
-
Ademir
- Usuário Nível 3

- Mensagens: 170
- Registrado em: 31 Jul 2007 16:28
- Localização: Porto Ferreira-SP
boa tarde !
Não é bem isso que estou precisando. Tenho dois arquivos com as seguintes estruturas:
Arq1
Codigo N 6
Data D 8
Arq2
Codigo N 6
Nome C 60
O Arq1 é um arquivo de documentos:
Codigo -> codigo do documento
Data -> data que o documento foi feito
O Arq2 é um arquivo onde ficam os nomes das pessoas que figuraram em cada documento:
Codigo -> Codigo do documento
Nome -> Nome da pessoa
Os dois arquivos estão relacionados atraves do campo Codigo.
Indexei o Arq2 por Nome + Dtos(Arq1 -> Data)
Preciso abrir o Arq2 em um Dbedit() por exemplo em ordem de Nome e dentro do nome por ordem de data para que o usuario visualize os nomes por ordem alfabetica + data que o documento foi feito. Isso sem precisar gravar o campo Data em cada registro do Arq2.
Não é bem isso que estou precisando. Tenho dois arquivos com as seguintes estruturas:
Arq1
Codigo N 6
Data D 8
Arq2
Codigo N 6
Nome C 60
O Arq1 é um arquivo de documentos:
Codigo -> codigo do documento
Data -> data que o documento foi feito
O Arq2 é um arquivo onde ficam os nomes das pessoas que figuraram em cada documento:
Codigo -> Codigo do documento
Nome -> Nome da pessoa
Os dois arquivos estão relacionados atraves do campo Codigo.
Indexei o Arq2 por Nome + Dtos(Arq1 -> Data)
Preciso abrir o Arq2 em um Dbedit() por exemplo em ordem de Nome e dentro do nome por ordem de data para que o usuario visualize os nomes por ordem alfabetica + data que o documento foi feito. Isso sem precisar gravar o campo Data em cada registro do Arq2.
Ademir,
Eu usei o SET RELATION em casos parecidos com o seu e só me dei mal... No fim, parti para uma solução (que eu uso até hoje) que, se não é a mais técnica, resolveu o problema:
Arq1
Codigo N 6
Nome C 60
Data D 8
O único cuidado a tomar é, se houver alguma alteração no cadastro (Arq2), correr o Arq1 inteiro e fazer as substituições dos nomes alterados.
Eu usei o SET RELATION em casos parecidos com o seu e só me dei mal... No fim, parti para uma solução (que eu uso até hoje) que, se não é a mais técnica, resolveu o problema:
Arq1
Codigo N 6
Nome C 60
Data D 8
O único cuidado a tomar é, se houver alguma alteração no cadastro (Arq2), correr o Arq1 inteiro e fazer as substituições dos nomes alterados.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Olha, eu confesso que relutei, mas relutei... pois acadêmicamente essa sugestão é um crime... hahaha (brincadeira). Mas entendo você Ademir que prefere não criar redundâncias, mas há vezes que isso compensado com o tempo de processamento, vale a pena investir. E sabemos que problema de espaço, isso não é mais tão importante assim (deve ser avaliado). Mas o que o colega Eolo diz pode vir te trazer maior agilidade, principalmente quando seu sistema é executado em computadores velhos (não desmerecendo você Eolo, hihihi), não mas sério acho que se seu procedimento funcionou e não traz demora na execução pois então o tópico alcançou seu objetivo. Cabe nos dizer se o seu método Ademir, não está causando certa lentidão (inclusive considerando esse SET RELATION, que é um pouco inconveniente a vezes).
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Um pouco? Dependendo da situação é MUITO inconveniente.SET RELATION, que é um pouco inconveniente a vezes
[]'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!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Sabe Maligno... eu até re-editei a mensagem corrigindo a minha expressão para não ser tão extremista assim. Mas seria melhor evitá-lo, se puder.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Esse SET RELATION, pra mim, está quase na mesma categoria dos smiles animados.PS. SET RELA? Nunca mais.
[]'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!
Mas se a coisa não presta, não tem porque não meter o pau devidamente. Não vejo absolutamente nada que não possa ser feito de forma alternativa ao SET RELATION. Prefiro então evitar. E meter o pau, claro.para não ser tão extremista assim. Mas seria melhor evitá-lo, se puder.
[]'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!
Claro que, se você acha que SET RELATION é uma boa alternativa, vá em frente. 
[]'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!

