In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Duvidas sobre o SetRelation

Foro público de Xailer en español
ChrisSoares
Mensajes: 5
Registrado: Mié Ene 30, 2013 11:54 am

Duvidas sobre o SetRelation

Mensaje por ChrisSoares »

Saudaçíµes!
Estou tentando fazer um cadastro de clientes onde será exibido em guias(utilizando o TFolder com 2 guias e em cada uma um TDBBrowser) o contas a pagar e contas a receber deste cliente.
O meu problema esta no uso do SetRelation que, não encontrei uma forma de utilizar como no harbour, onde existe um parí¢metro lScoped, que faz aparecerem apenas os registros relacionados e sempre que muda de registro da tabela principal é feito um Seek nas tabelas relacionadas e apresentado apenas os registros relacionados ao da tabela principal.
Estou enviando também um mine projeto com o cadastro de clientes com todos os arquivos necessários.
Mas em resumo eu tenho um TCdxDataSource e 4 TDbfDataset's(dbfArquivos, dbfCliente, dbfConrec e dbfConpag).
Na tabela dbfArquivos, eu tenho os indices de todas as tabelas do meu cadastro, então no envento FormInitialize do meu formulário, eu localizo o registro ref. a cada uma das tabelas e recrio os indices com o método, AddTag da TDbfDataSet, seleciono o í­ndice com o OrdSetFocus e relaciono as tabelas dbfConrec e dbfConpag com a tabela cliente, através do campo CODIGO, utilizando SetRelation('CODIGO', ::dbfConrec, .t.) e SetRelation('CODIGO', ::dbfConpag, .t.).
Segue abaixo o código do FormInitialize:
METHOD FormInitialize( oSender ) CLASS TForm1
local cIdx := ''
local i
::dbfArquivos:lOpen = .t.
::dbfCliente:lOpen = .t.
::dbfConrec:lOpen = .t.
::dbfConpag:lOpen = .t.
if ::dbfArquivos:Locate('arquivo = "CLIENT"')
for i:= 1 to 6
cIdx = StrZero(i,1)
::dbfCliente:AddTag('client'+cIdx, ::dbfArquivos:FieldGetByName('CHV_'+cIdx))
next
endif
::dbfCliente:OrdSetFocus('client2')//Nome
::dbfCliente:goTop()
if ::dbfArquivos:Locate('arquivo = "CONREC"')
for i:= 1 to 3
cIdx = StrZero(i,1)
::dbfConrec:AddTag('conrec'+cIdx, ::dbfArquivos:FieldGetByName('CHV_'+cIdx))
next
endif
::dbfConrec:OrdSetFocus('conrec2')//Client+dtos(datvco)
::dbfCliente:SetRelation('CODIGO', ::dbfConrec, .t.)
if ::dbfArquivos:Locate('arquivo = "CONPAG"')
for i:= 6 to 8
cIdx = StrZero(i,1)
::dbfConpag:AddTag('conpag'+cIdx, ::dbfArquivos:FieldGetByName('CHV_'+cIdx))
next
endif
::dbfConpag:OrdSetFocus(1)//Client+dtos(datvco)
::dbfCliente:SetRelation('CODIGO', ::dbfConpag, .t.)
RETURN Nil

Bem, em anexo esta o projeto com as tabelas que utilizo.
Agradeço pela atenção de todos.
Ps: O projeto compactado ficou com maior que o comportado no forum. Estou mandando o link do 4Shared: http://www.4shared.com/rar/0g76aJY8/Xai ... ation.html?
Que Deus continue nos abençoando a cada dia!
Christiano Ribeiro Soares
Desenvolvedor
www.bhdados.com.br
Responder