SQL - relacao das tabelas

Top  Previous  Next

Relação das tabelas

 

Se eu tenho uma tabela filho ligada a uma tabela pai logicamente um pai pode

ter 0 filhos como pode ter 25 (eu conheco um cara que tem 32), vamos lá,

segundo o MER (Modelo de Entidade Relacionamento) esse tipo de

relacionamento (1:N) deve ser formatado +- assim:

Tabela pai

ChavePai =

            0001

            0001

            0001

 

 

Tabela filho

ChavePai =                 ChaveFilho =

            0001                    001

            0001                    002

            0001                    003

-------------------------------------------

            0002                    001

            0002                    002

            0002                    003

-------------------------------------------

            0003                    001

            0003                    002

            0003                    003

 

para vc conseguir isso, num evento BeforeEdit da tabela pai, vc abre um

Query e com seu SQL :=

'Select MAX(ChaveFilho) from ArqFilho where ChavePai=:ChavePai' ,

cria uma variavel private do tipo integer para atribuir ao valor do

MAX(ChaveFilho) a ela e monta uma formula para que:

 se o Field[0] dessa query e nul o o valor dessa variavel seja igual a 1, se

nao,  ela seja igual ao campo MAX(ChaveFilho.AsInteger) + 1, e atribui o

valor dessa variavel ao .Value do campo ChaveFilho na tabela no evento

OnNewRecord da Tabela Pai.

Dessa forma, toda vez que a query percorrer a tabela filho, se nao tiver

nenhum registo o campo ChaveFilho eh = a 1, se tiver seu valor será o valor

do seu maior registro enquanto o Campo Chavepai em filho e = a ele mesmo.

 Na pasta ..\DelphiXXX\Demos\DB\MastApp tem um exemplo bem prático de como

implementar isto.