Ir para conteúdo
Fórum Script Brasil
  • 0

arvore genealógica num sistema de gado


flavioavilela

Pergunta

boa noite a todos...

tenho um sistema que controla gado...

ao cadastrar uma vaca, por exemplo, eu gostaria que fosse armazenado ou veinculado a essa vaca, num possível relatório, o seu pai, seu avô (avó), bisavô (bisavó) e por ai em diante... eu sei que deveria ter uma tabela pra armazenar isso mas também nem sei... a idéia ta fraca agora rsrs... alguém pode dar uma luz ai...???

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • 0

certo, li os artigos mas não tem nada parecido... imagina ai: eu to cadastrando um animal: Animal: Florentina... Pai: Siclano... Mãe: Beltrana...

beleza, até ai td bem... só que depois, eu vou cadastrar outro animal que não seja um desses 3, então: Animal: Flávio... Pai: Ronaldo... Mãe: Girafa.

beleza, até ai td bem... mas ai, eu vou cadastrar um filho do Fulano. Animal: Clovis... Pai: Flávio... Mãe: Florentina...

ai a questão: como você pode ver, o Clovis é filho do flávio e da florentina e neto materno do siclano e da beltrana e neto paterno do ronaldo e da

girafa... como vou montar a tabela pro sistema reconhecer isso????

sua idéia eu entendi, só não entendi isso ai q estou explicando... ahh, isso tudo é no cadastro do animal e não é em outras janelas do sistema

Editado por flavioavilela
Link para o comentário
Compartilhar em outros sites

  • 0
como vou montar a tabela pro sistema reconhecer isso????
Achei que voce tinha entendido esse código, que é parecido com o que voce está querendo ... basta trabalhar a idéia

unit unProjFile;

interface

uses

SysUtils, Classes, dialogs;

type

TArq = class;

TArqs = class;

TArq = class(TCollectionItem)

public

Owner: Pointer;

arqs: TArqs;

Text: string;

end;

TArqs = class(TCollection)

private

function GetItem(Index: Integer): TArq;

public

arqs: TArq;

function Add(pArq: TArq): TArq;

property Item[index: Integer]: TArq read GetItem;

procedure Remove(ed: TArq);

end;

procedure montaAlgoeMostra();

implementation

var

pMain: TArqs;

procedure montaAlgoeMostra();

function getFilhos(pArq: Tarqs; str: string): string;

var

i: Integer;

s: string;

begin

s := '';

for i := 0 to pArq.Count - 1 do

begin

s := s + str + pArq.Item.Text + #10#13;

if pArq.Item.arqs.Count > 0 then

s := s + str + getFilhos(pArq.Item.arqs, '_')+ #10#13;

end;

Result := Trim(s);

end;

var

item, tmp: TArq;

s: string;

begin

pMain := TArqs.Create(TArq);

item := pMain.Add(nil);

item.Text := 'Primeiro filho do nil';

item := pMain.Add(item);

item.Text := 'Neto do nil';

item := pMain.Add(item);

item.Text := 'Primeiro Neto';

item := pMain.Add(nil);

item.Text := 'Segundo filho do nil';

tmp := pMain.Add(item);

tmp.Text := 'Primeiro filho do segundo nil';

item := pMain.Add(item);

item.Text := 'Segundo filho do segundo nil';

item := pMain.Add(tmp);

item.Text := 'O filho do tmp pode ser colocado mesmo depois...';

s := getFilhos(pMain, '');

ShowMessage(s);

end;

//------------------------------------------------------------------------------

function TArqs.Add(pArq: TArq): TArq;

begin

if pArq = nil then

begin

Result := inherited Add as TArq;

Result.arqs := TArqs.Create(TArq);

Result.Owner := TArq(pArq);

end

else

begin

Result := pArq.arqs.Add(nil);

Result.arqs := TArqs.Create(TArq);

Result.Owner := TArq(pArq);

end;

end;

procedure TArqs.Remove(ed: TArq);

var I: Integer;

begin

for I := 0 to Count - 1 do

if Item = ed then

begin

Delete(I);

Break;

end;

end;

function TArqs.GetItem(Index: Integer): TArq;

begin

Result := inherited Items[index] as TArq;

end;

end.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
certo... eu estava querendo fazer igual um colega me disse... pra gravar numa tabela o código do animal, o código da mae e o código do pai... mas eu imagino que deva ter outro campo para que possa ligar esse animal aos descendentes ou a mae ou o pai a seus decendentes....

Voce tera que estudar um pouco sobre referencia cruzada

http://74.125.93.132/search?q=cache:RoLj6p...=clnk&gl=br

http://imasters.uol.com.br/artigo/7308/con...erencia_cruzada

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...