Relacionamento Master/Detail
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.
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.
Rb2228
Curtidas 0
Respostas
Rb2228
12/05/2008
Somebody help me?
GOSTEI 0
Rm
12/05/2008
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.
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.
GOSTEI 0
Rb2228
12/05/2008
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.
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.
GOSTEI 0
Paulo
12/05/2008
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.
GOSTEI 0
Rb2228
12/05/2008
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.
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.
GOSTEI 0