Página 1 de 1

Relacionamento entre DBFs, é possivel ?

Enviado: 14 Mai 2014 13:17
por bencz
Jovens, boa tarde!

Uma vez, li no livro ( Clipper 5.2 - Ferramentas Poderosas - Stephen Straley ), alguma coisa sobre relacionamento entre DBFs, alguem sabe me explicar como fazer, como funciona exatamente etc ????

Isso cabe mais por uma questão de curiosidade mesmo!!

Relacionamento entre DBFs, é possivel ?

Enviado: 14 Mai 2014 13:31
por alxsts
Olá!

Pesquise o comando SET RELATION ou a função DBSETRELATION().

Relacionamento entre DBFs, é possivel ?

Enviado: 14 Mai 2014 16:17
por bencz
Certo, só q agora, não estou conseguindo botar p/ funcionar esse trem ai!!!
haha :(
Tem algum exemplo mais COMPLETO ?
Inclusive da criação do DB, tipos e etc ?

Relacionamento entre DBFs, é possivel ?

Enviado: 14 Mai 2014 17:53
por Toledo
Segue um exemplo:

Código: Selecionar todos

PROCEDURE Main()
LOCAL aStruct1 := { ;
         { "CODIGO", "C", 3, 0 }, ;
         { "NOME"  , "C",30, 0 }}

LOCAL aStruct2 := { ;
         { "DATA"    , "D", 8, 0 }, ;
         { "NOTA"    , "C", 5, 0 }, ;
         { "COD_CLI" , "C", 5, 0 }}

CLS

/* Criando os DBF */
DbCreate( "clientes", aStruct1 )
DbCreate( "vendas", aStruct2 )

/* abrindo o arquivo CLIENTES e incluindo alguns registros */
Use clientes New
index on CODIGO to cli1

Clientes->( DbAppend() )
REPLACE codigo WITH "001", nome WITH "PAULO TOLEDO"
Clientes->( DbAppend() )
REPLACE codigo WITH "002", nome WITH "ALEXANDRE SANTOS"
Clientes->( DbAppend() )
REPLACE codigo WITH "003", nome WITH "ALEXANDRE BENCZ"

/* abrindo o arquivo VENDAS e incluindo alguns registros */
Use vendas New
index on DTOS(data) to vends1

vendas->( DbAppend() )
REPLACE data WITH DATE()-10, nota WITH "00101", cod_cli WITH "002"
vendas->( DbAppend() )
REPLACE data WITH DATE()-9, nota WITH "00102", cod_cli WITH "003"
vendas->( DbAppend() )
REPLACE data WITH DATE()-8, nota WITH "00103", cod_cli WITH "001"
vendas->( DbAppend() )
REPLACE data WITH DATE()-7, nota WITH "00104", cod_cli WITH "003"
vendas->( DbAppend() )
REPLACE data WITH DATE()-6, nota WITH "00105", cod_cli WITH "001"
vendas->( DbAppend() )
REPLACE data WITH DATE()-5, nota WITH "00106", cod_cli WITH "002"
vendas->( DbAppend() )
REPLACE data WITH DATE()-4, nota WITH "00107", cod_cli WITH "002"
vendas->( DbAppend() )
REPLACE data WITH DATE()-3, nota WITH "00108", cod_cli WITH "003"

/* fazendo o relacionamento do arquivo CLIENTES pelo campo
   COD_CLI do arquivo VENDAS */
* Sintaxe: Set Relation To <Campo> Into <Alias>
SET RELATION TO COD_CLI INTO CLIENTES

GO TOP
DO WHILE !EOF()
  ? DATA, NOTA, COD_CLI, CLIENTES->NOME
  SKIP
ENDDO
/* finalizando o relation */
SET RELATION TO
CLOSE ALL
FERASE("CLIENTES.DBF")
FERASE("CLI1.NTX")
FERASE("VENDAS.DBF")
FERASE("VENDS1.NTX")
RETU
Então conforme o conteúdo do campo COD_CLI, automaticamente no arquivo CLIENTES é posicionado no registro correspondente.

Abraços,

Relacionamento entre DBFs, é possivel ?

Enviado: 15 Mai 2014 08:32
por bencz
Pois é, pedi um exemplo completo, pois eu estava achando que tinha que criar algum campo especial na DB... algum tipo de key, sei la!!!
Muito interessante, p/ ser bem sincero com vocês, DBF e seus comando, é meio que um mistério p/ mim.... como buscar elementos da tabela, e etc... ):

Muito obrigado, Toledo e alxsts!!!