Relacionamento de Tabelas

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

ssflavio
Usuário Nível 2
Usuário Nível 2
Mensagens: 86
Registrado em: 10 Jul 2008 09:57
Localização: São Paulo / SP

Relacionamento de Tabelas

Mensagem por ssflavio »

Bom dia pessoal,

Depois de 25 anos programando em clipper parei num problema que no atual SQL é fácil de resolver, porém ainda não consegui resolver :%
Vamos ao problema:
Tenho 2 tabelas:
uma de Produtos (PRO)
CODIGO C 06 (PK)
DESCRICAO C 40
uma de Tabela de Preços (TAB)
CODTAB C 02 (PK)
CODPRO C 06
VLRUNI N 10 2

Preciso mostrar a tabela de preços em um grid com as seguintes colunas
CODIGO; DESC.PRODUTO; VALOR UNITARIO

e fazer uma consulta por ordem alfabética neste grid.
acho que o "velhinho" ta surtando...rs... :-O
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio
Usuário Nível 2
Usuário Nível 2
Mensagens: 86
Registrado em: 10 Jul 2008 09:57
Localização: São Paulo / SP

Relacionamento de Tabelas

Mensagem por ssflavio »

acho que consegui resolver, nao sei se é a maneira mais certa:
na tabela de preços fiz o seguinte

sele TAB
set relation to CODPRO into PRO
index on PRO->DESCRI to INDICE2
go top
seek "A"

ei encontra o primeiro A dos produtos.
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Relacionamento de Tabelas

Mensagem por Eolo »

O Set Relation faz movimentar automaticamente o ponteiro no arquivo "filho" sempre que você movimentar o ponteiro no arquivo "pai", de acordo com o campo designado (que tem que estar indexado no "filho"). Não precisa SEEK. Aqui vai um exemplo:

Código: Selecionar todos

use produto new
inde on nome to produto
inde on codigo to produto
set inde to produto
set orde to nome

use precos new
index on codigo to precos
set inde to precos

sele produto
set rela to codigo into precos 
go top
do whil !eof()
  ?nome+" "+str(precos->preco)
  * mostra os produtos em ordem alfa, com o respectivo preço trazido do precos.dbf
  next
endd
set relation to CODPRO into PRO
index on PRO->DESCRI to INDICE2

Você inverteu. Primeiro indexa e depois seta a "relation".
Responder