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. |