Busca em Campo Relacionado.
Moderador: Moderadores
- Marcos
- Usuário Nível 3

- Mensagens: 355
- Registrado em: 20 Set 2003 09:16
- Localização: Cáceres/Mato Grosso
Busca em Campo Relacionado.
Olá a todos do fórum,
Há tempos atras fiz uma pergunta aqui sobre este assunto mas não obtive respostas.
Como fazer uma busca num registro pelo campo que está relacionado a outro DBF?
Digamos que no DBF Contas a Receber eu tenho o Código do Cliente, onde no DBEDIT usando o Set Relation eu monto mostrando o Nome do Cliente, até aí blz, agora pergunto, como fazer uma pesquisa com Seek no DBEDIT de Conta a Receber pelo Nome do Cliente?
Abraços,
Marcos.
Há tempos atras fiz uma pergunta aqui sobre este assunto mas não obtive respostas.
Como fazer uma busca num registro pelo campo que está relacionado a outro DBF?
Digamos que no DBF Contas a Receber eu tenho o Código do Cliente, onde no DBEDIT usando o Set Relation eu monto mostrando o Nome do Cliente, até aí blz, agora pergunto, como fazer uma pesquisa com Seek no DBEDIT de Conta a Receber pelo Nome do Cliente?
Abraços,
Marcos.
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Olá,
Deixa eu ver se entendi direito...
Você relacionou o campo "CODIGO_CLIENTE" do dbf de Clientes com o um outro de mesmo conteúdo no dbf de Contas a Receber usando SET RELATION... é isso?
Então voce quer pesquisar pelo NOME do cliente...
Selecione o Arq de clientes pesquise o nome e depois volte ao arquivo de Contas e pesquise o código do cliente, mais ou menos assim:
Note que o fato de ter sido encontrado o Nome do Cliente no primeiro seek não implica que o código dele exista no arquivo de Contas e portanto é necessário testar de novo com FOUND() no segundo SEEK.
Note também que pode existir mais de uma vez o código do cliente no arquivo de Contas e que portanto poderia ser mais útil usar a função LOCATE...CONTINUE, ou até mesmo filtrar o arquivo de contas para exibir apenas as Contas deste cliente...
Espero ter ajudado
Deixa eu ver se entendi direito...
Você relacionou o campo "CODIGO_CLIENTE" do dbf de Clientes com o um outro de mesmo conteúdo no dbf de Contas a Receber usando SET RELATION... é isso?
Então voce quer pesquisar pelo NOME do cliente...
Selecione o Arq de clientes pesquise o nome e depois volte ao arquivo de Contas e pesquise o código do cliente, mais ou menos assim:
Código: Selecionar todos
select CLIENTES
set index to IND_NOME
dbGoTop()
seek variavel_Nome
if found()
select CONTAS
seek CLIENTES->campo_CODIGO // Neste momento o pointer ja está posicionado no registro do cliente
else
alert("Nome nao encontrado")
select CONTAS
endif
Note também que pode existir mais de uma vez o código do cliente no arquivo de Contas e que portanto poderia ser mais útil usar a função LOCATE...CONTINUE, ou até mesmo filtrar o arquivo de contas para exibir apenas as Contas deste cliente...
Espero ter ajudado
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
- Marcos
- Usuário Nível 3

- Mensagens: 355
- Registrado em: 20 Set 2003 09:16
- Localização: Cáceres/Mato Grosso
Obrigado Stanis Luksys pela ajuda, funcionou blz, o único problema é que quando o registro é encontrado o Campo que está relacionado no caso o Nome do Cliente some do DBEDIT, ou seja, o registro é encontrado pelo cursor que fica em cima do registro, mas o nome que é o Campo que está relacionado some.
Abraços,
Marcos.
Abraços,
Marcos.
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Ok,
Acho que só está faltando voce colocar um RETURN(2) na UDF que controla o dbEdit().
Att
Acho que só está faltando voce colocar um RETURN(2) na UDF que controla o dbEdit().
Att
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Ok,
Tente salvando o numero do registro numa variavel, depois vc abandona a execucao do dbEdit, e abre de novo e dé um dbGoTo(var).
Não é uma gde solução mas... uma gambiarra de vez em qdo não faz a mal a ninguém...
Att,
Tente salvando o numero do registro numa variavel, depois vc abandona a execucao do dbEdit, e abre de novo e dé um dbGoTo(var).
Não é uma gde solução mas... uma gambiarra de vez em qdo não faz a mal a ninguém...
Att,
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.