Indexando um arquivo por campo de outro.
Moderador: Moderadores
Indexando um arquivo por campo de outro.
Boa noite, minha dúvida é a seguinte:
Tenho um banco de dados de clientes e nesse banco existe um campo que grava o código da cidade do cliente.
Tenho também um outro banco de cidades, que possue a código e a descrição da cidade.
O que eu preciso é criar um indice do banco de cliente, ordenando pela descrição da cidade.
index on str(cidade,3)+Nome to indclici = banco ordenado pelo codigo da cidade, mais o nome do cliente
preciso que ao inves do codigo da cidade, seja a descricao da cidade, e não sei como se faz isso.
Se alguem puder me ajudar agraço.
Tenho um banco de dados de clientes e nesse banco existe um campo que grava o código da cidade do cliente.
Tenho também um outro banco de cidades, que possue a código e a descrição da cidade.
O que eu preciso é criar um indice do banco de cliente, ordenando pela descrição da cidade.
index on str(cidade,3)+Nome to indclici = banco ordenado pelo codigo da cidade, mais o nome do cliente
preciso que ao inves do codigo da cidade, seja a descricao da cidade, e não sei como se faz isso.
Se alguem puder me ajudar agraço.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Indexando um arquivo por campo de outro.
Olá Ronei.
Seja bem-vindo ao Fórum!
O que você pretende fazer é impossível. Só se pode criar um índice para uma tabela baseado nas colunas da própria tabela.
Sugiro que você crie uma tabela de relacionamento auxiliar onde constariam os campos:
- nome da cidade
- código do cliente
- se precisar coloque a UF ou o código da cidade
Crie um índice pelo nome da cidade.
Seja bem-vindo ao Fórum!
O que você pretende fazer é impossível. Só se pode criar um índice para uma tabela baseado nas colunas da própria tabela.
Sugiro que você crie uma tabela de relacionamento auxiliar onde constariam os campos:
- nome da cidade
- código do cliente
- se precisar coloque a UF ou o código da cidade
Crie um índice pelo nome da cidade.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Indexando um arquivo por campo de outro.
Talvez você não saiba, mas impossível não é. Não que a sua sugestão não seja boa ou talvez mais indicada que a seguinte sugestão (vai depender como e qual propósito):O que você pretende fazer é impossível
Você pode indexar e colocar como chave, uma função que localize o codigo e retorne o nome da cidade.
Para isso aconselho criar um novo índice, mas para mantê-lo atualizado você vai ter que disponibilizar a função que estará dentro da chave. Veja como ficaria exemplificando:
Código: Selecionar todos
SELE 1
USE CLIENTES
/*
+-------- CLIENTES.DBF ---------+
| Nr Nome Tipo Tam Dec|
+-------------------------------+
| 01 "COD_CLI" ,"N",003,000 |
| 02 "NOME" ,"C",036,000 |
| 03 "COD_CID" ,"N",003,000 |
+------ Nr Registros 5154 ------+
*/
SELE 2
USE CIDADES
/*
+--------- CIDADES.DBF ---------+
| Nr Nome Tipo Tam Dec|
+-------------------------------+
| 1 "CODCID" ,"N",003,000 |
| 2 "NOMCID" ,"C",030,000 |
+------- Nr Registros 3 --------+
*/
INDEX ON STR(CODCID,3,0) TO CID_001
SELE 1
INDEX ON VQCIDADE(COD_CID)+NOME TO CLI_023
LIST NOME,VQCIDADE(COD_CID) FOR !EMPTY(VQCIDADE(COD_CID))
FUNCTION VQCIDADE(nCid)
SELE 2
SEEK STR(nCid,3,0)
IF FOUND()
cRet:=(2->NOMCID)
ELSE
cRet:=SPACE(30)
ENDIF
SELE 1
RETURN cRetUm 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.
Indexando um arquivo por campo de outro.
Pablo não testei seu codigo, porem creio que ocorrera um erro aqui na criação do indice. Na area 1 nao tem o campo retornado pela funcao VQCIDADE ocasionara o erro.Pablo César escreveu:INDEX ON VQCIDADE(COD_CID)+NOME TO CLI_023
Voce estou esta codigo?
Abraços
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Indexando um arquivo por campo de outro.
Não, não ocorre erro algum. Perceba que a função retorna uma string e não nome de campo algum. Isto funciona sim. Além de ter utilizado essa prática em meu sistema, eu testei sim antes de postar.creio que ocorrera um erro aqui na criação do indice. Na area 1 nao tem o campo retornado pela funcao VQCIDADE ocasionara o erro.
Deixo arquivo de teste.exe e o prg que irão criar os dbfs com a estrutura citada para comprovar a minha indicação.
Impressionante mas aí mostra como na realidade funciona o arquivo de índices.
- Anexos
-
TESTES.rar- (104.03 KiB) Baixado 139 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.
Indexando um arquivo por campo de outro.
Pablo, fiz o teste e funcionou certinho sim. Como disse, "creio" postei do celular e nao tinha como fazer o teste na pratica, alem do mais, é uma grata novidade.
Obrigado.
Obrigado.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Indexando um arquivo por campo de outro.
Do celular, ohh que chique ! Pois é colega, para mim já era antigo. Mas lembre que a função de procura em outro dbf, tem que estar presente para qualquer consulta e alteração de arquivo. No DBU já não ia ser possível alterar nem pesquisar. Outra coisa, essa função quanto mais implementações tiver, mais vai demorar na composição seja de consulta ou atualização do arquivo. Fico feliz saber que poderá trazer benefícios com a publicação desta "descoberta".postei do celular e nao tinha como fazer o teste na pratica, alem do mais, é uma grata novidade.
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.
Indexando um arquivo por campo de outro.
Muito obrigado pela dica, será muito util no meu sistema, e isso eu necessito para um relatorio de clientes ordenados pelo nome da cidade.

