Página 1 de 1
Como fazer uma Busca em um campo do DBF relacionado?
Enviado: 21 Out 2004 08:49
por Marcos
Olá a todos! Estou com um problema. No meu DBF de Contas a Receber eu gravo somente o código do cliente, sendo assim quando eu mostro em DBEDIT e preciso que saia o nome do cliente, eu relaciono com o DBF clientes, só que há um problema que não sei como resolver, preciso fazer uma busca por nome do cliente dentro do dbedit de Contas a Receber, só que na verdade o nome do cliente vem do DBF cliente, portanto eu fiz a busca e não funcionou, não sei c fui claro, mas alguém se dispor em me ajuar e não entendeu, favor dizer que esclareço melhor a dúvida. Aproveitando, gostaria de saber como eu faço para diminuir a quantidade de espaços que está saindo no Nome do Cliente, não quero diminuir no DBF, quero diminuir dentro do DBEDIT, a linha relacionada onde quero diminuir está assim:
VETOR1[3] = "CLIENTES->NOME"
Agradeço a ajuda de todos.
Marcos
Da Roça.
Sem respostas...
Enviado: 21 Out 2004 15:58
por Marcos
Alguém poderia me ajudar?

Enviado: 22 Out 2004 00:41
por ANDRIL
Ola,
Sobre a procura em dois dbfs simultaneamente vc poderia utilizar o comando SET RELATION para definir relacoes entre arquivos pai-filho aberto em areas diferentes. EU NÃO COSTUMO UTILIZAR ESTE COMANDO, veja a sintexe:
SET RELATION TO [<expChave>> | <nRegistro> INTO <XcAlias>];
[<expChave2> | <nRegistro> INTO <xcAlias2>] [ADDITIVE]
Exemplo:
Imagine que voce tenha um arquivo denominado SEG.DBF com os seguintes registros INDEXADOS pelo campo de CODIGO.
COD TIPO LIMITE
--------------------------------
ACD ACIDENTE 8.000
SAU SAUDE 10.000
VID VIDA 5.000
USE cli && cliente tem um campo chamado cod_seg que contém os
&& mesmos codigos de SEG.DBF
SELECT 2
USE seg INDEX cod
SELECT 1
SET RELATION TO cod_seg INTO seg
? A->cod_seg && retorna SAU
? B->tipo && retorna SAUDE.
? C->limite && retorna 10.000
SKIP
? A->cod_seg && retorna VID
? B->tipo && retorna VIDA
? C->limite && retorna 5.000
*O arquivo-filho funciona como uma tabela de pesquisa.
Quanto a segunda duvida em diminuo o campo no dbedit() assim:
VETOR1[3] = "CLIENTES->left(NOME,20)"
agora o campo nome no dbedit tem a largura de 20 caracteres.
Abracos
Erro de Sintaxe.
Enviado: 22 Out 2004 08:11
por Marcos
Obrigado Andril pela ajuda, na segunda dúvida eu acrescentei aquele código mas deu erro de sintaxe:
"error base/1449 Erro de sintaxe: &"
Abraços,
Marcos.
Enviado: 23 Out 2004 13:56
por ANDRIL
Marcos escreveu:Obrigado Andril pela ajuda, na segunda dúvida eu acrescentei aquele código mas deu erro de sintaxe:
"error base/1449 Erro de sintaxe: &"
Abraços,
Marcos.
OLA MARCOS,
Realmente postei o codigo errado pois nao tenho o costume de utilizar o ALIAS na declaracao de arrays. Tente isto:
VETOR[3]="CLIENTE->
(left(nome,20))"
Creio que com este exemplo o campo NOME no dbedit passe a apresentar apenas 20 caracters.
Abraços
Enviado: 25 Out 2004 12:30
por janio
Olá Marcos,
Outra alternativa à sua segunda pergunta seria:
Código: Selecionar todos
declare vetcampo[3]
vetcampo[1]="DESCRI"
vetcampo[2]="UNIPRD"
vetcampo[3]="PRCMER"
declare vetPICT[3]
vetPICT[1]="@!S20" // ou qq outra quantidade de letras que vc queira mostrar
vetPICT[2]="@!"
vetPICT[3]="99,999.99"
declare vetcab[3]
vetcab[1]="PRODUTO"
vetcab[2]="UN"
vetcab[3]="PRC. VENDA"
CORES(4)
@ li-01,ci+07 clear to lf-08,cf-02
@ li-01,ci+07 to lf-08,cf-02 double
dbedit(li,ci+08,lf-09,cf-03,vetcampo,,vetPICT,vetcab,"=")
Valeu?
Janio