Relacionamento Master/Detail

12/05/2008

2

Boa tarde amigos.

Estou tendo dificuldades para encontrar uma forma alternativa de se fazer o relacionamento entre duas tabelas.

Vejam se podem me ajudar:

TABELA PAI: NOTACOMPRA
TABELA FILHA: ITENSCOMPRA

Preciso fazer um relacionamento ou alguma forma alternativa que me permita inserir itens em uma determinada nota que ainda não foi gravada.

Caso: O usuário esta inserindo uma nota, e como existe uma trigger/generator para fazer o auto-incremento, esta nota ainda ´nao possui´ codigo, que é o campo do relacionamento, e esta nota esta em modo de inserção.. gostaria que fosse possivel inserir itens nesta mesma nota sem ter que gravá-la para retornar o codigo do relacionamento.

Tentei fazer o relacionamento pelo numero da nota, mas encontrei muitos problemas pois o campo numero da nota é acessivel e manipulavel pelo usuario...

com o campo codigo, o qual o usuario nao manipula, seria perfeito.
o problema esta no momento em que o usuario necessita gravar a nota
sem itens nenhum, e posteriormente inserir itens nesta nota que ja possui um codigo...

alguem que conhece como geralmente é feito nesse caso ou ja passou por algo parecido, poderia me ajudar?

muito obrigado.

abraços.


Responder

Posts

12/05/2008

Rb2228

Somebody help me?


Responder

12/05/2008

Rm

Não entendi por que tu não grava a Nota (pai) antes de entrar com os itens (filho).Ve se ajuda: No evento afterinsert da tabela pai coloque. tablenota.post; tablenota.last; (considerando que é ascending) Então pode entrar com os itens (filho) sem problema.Se depois do post do afterinsert houver entrada de registros via codigo na nota, deve colocar ainda no afterinsert tablenota.edit; senão retorna erro ´table is not in edit or insert mode´

De qualquer maneira não recomendo relacionamento pai/filho que não seja pelos index e auto-incremental.

Espero que ajude, pois, como disse, não entendi bem qual é o teu problema.


Responder

13/05/2008

Rb2228

certo, tinha realmente pensado nisso.. tanto que fiz dessa maneira, mas pelo numero da nota...

vou fazer como disse, mas existem alguns probleminhas quanto a isso, mas creio que não seja dificil de se resolver.

o problema é que a gravação dos itens independe da nota, isso ja sabemos, entao, se por exemplo o usuario insere 3 ítens e lembra que não eram 3 e apenas 1..

se ele for no cancelar alterações da nota, isso não fará com que a nota que antes foi alterada e nao tinha nenhum item, volte a ficar sem item.

o 3 ítens inseridos não fazem parte desse ´rollback´ ...


mas valew pelo toque, após 47 visualizações uma resposta... estamos caminhando.

acho que o ganho maior no seu topico foi a frase em que não aconselha o relacionamento por outros campos.

muito obrigado.


Responder

13/05/2008

Paulo

mas valew pelo toque, após 47 visualizações uma resposta... estamos caminhando

Não entendi a frase acima, mas tudo bem.

Eu gosto de trabalhar com meu banco bem consistido, ou seja, fazer uso de Constraint(Integridade Referencial). Nesse caso eu tenho a tabela de nota e a de itens da nota, recebendo a chave estrangeira da nota, pois não pode existir itens sem uma nota. A resposta do RM foi bem oportuna, ou seja, só gravo itesn se antes eu tiver uma nota gravada. Com relacionamento Pai/Filho é possível sim, desde que o banco esteja bem Normalizado. O campo NUM_Nota deve ser a chave da tabela nota e logo a FK da itens da nota. Dessa forma relaciona esses dois campos no seu Master/Dertail. Agora quanto a resposta, às vezes levamos tempo para interpretar as perguntas. Elas são mais complexas que a própria resposta em si. Por isso 47 visualizações para uma resposta...Este forum sempre caminhou e formou muitos programadores.


Responder

13/05/2008

Rb2228

Caro Paulo,

obrigado pela ajuda, estarei implementadno segundo o auxílio de vocês.

tentarei nas proximas vezes, estruturar melhor minha dúvida, assim poderei não ter este tipo de problema.

mas ainda assim, é uma proporção bem elevada.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira