GARANTIR DESCONTO

Fórum Inserção e edição com NestedDataSet #313415

17/02/2006

0

Pessoal,

Estou com uma dúvida que para vocês vai ser coisa boba. É o seguinte:

Estou usando um NestedDataSet.
Uso os componentes datasource, dataset provider, client datasets, SQLDatasets e SQLConnection. Suponham que eles estejam conectados corretamente.

Meu problema é na inserção e edição de registros. Quando vou inserir, eu faço:
dModule.cdsPai.Insert;
Na teoria, de acordo com o que li, era para ele deixar o clientdataset FILHO em modo de edição também ! Mas, quando vou editar um campo desse clientdataset FILHO, ele dá um erro dizendo que o dataset não está em modo de inserção ou edição.

A estrutura é a seguinte: tenho uma tabela ´aluno´, que contém um campo cod_pessoa (chave estrangeira para a tabela ´pessoa´). ´aluno´ é o clientdataset PAI e ´pessoa´ o FILHO.
Não sei se deve haver alguma configuração de campo LOOKUP. Seria isso ?

Esse caso com apenas 1 nested dataset foi só p/ ilustrar, pois na minha situação real mesmo eu tenho muito mais.

Resumindo: o que eu quero é poder salvar um novo registro, onde eu tenho um ClientDataSet pai (aluno) e um filho (pessoa). Quero salvar os dois dentro de uma mesma transação, utilizando NestedDataSet.

Alguém poderia me ajudar? Obrigado !!
Valeu, pessoal.


Marcelocda

Marcelocda

Responder

Posts

17/02/2006

Emerson Nascimento

no caso de nesteddatasets é preciso que os nomes dos campos sejam iguais.


Responder

Gostei + 0

17/02/2006

Marcelocda

Emérson, obrigado pela sua resposta.

Você quer dizer que os nomes dos campos do client data set ´filho´ devem ser iguais aos nomes dos campos da tabela do banco? Já estão iguais.
Desculpe, mas ainda não entendi.

No meu clientdataset pai tenho os campos da tabela pai e o campo que representa todo o cds Filho, que no meu caso se chama ´sqlPessoa´.

No meu SQLQuery Filho, o nome do parâmetro que está na cláusula WHERE é igual ao campo da tabela pai (fk), que nesse caso chama-se ´cod_pessoa´.

Por favor, se você puder me exclarecer isso, ficaria muito grato, pois eu realmente preciso resolver esse problema...

Tudo o que eu quero é que o cds Pai propague as ações pro cds Filho, como ações de Insert, Edit, Post...

Obrigado.


Responder

Gostei + 0

19/02/2006

Marcelocda

Sobe...


Responder

Gostei + 0

21/02/2006

Emerson Nascimento

o que eu quis dizer foi o seguinte...

com dbExpress eu só consegui fazer essa ligação com os campos tendo o mesmo nome (os campos!). por exemplo:

PRODUTO
ID (PK)
Codigo (UK)
Descricao
ValorUnitario
etc...

PEDIDO
ID (PK)
Numero (UK)
Cliente
Emissao
etc...

PEDIDO_ITEM
ID_PEDIDOITEM (PK)
ID (FK para a tabela pedido)
ID_PRODUTO (FK para a tabela produto)
etc...

note que eu precisei manter os nomes dos campos nas tabelas que usam o recurso de nestedtables iguais (campo PEDIDO.ID = PEDIDO_ITEM.ID).
no caso da tabela produto, que é somente uma referência, o nome do campo de relacionamento pôde ser diferente (PEDIDO_ITEM.ID_PRODUTO = PRODUTO.ID).


Responder

Gostei + 0

21/02/2006

Marcelocda

Obrigado pela sua resposta, Émerson !!

Agora eu entendi :)

Rapaz, tudo o que eu acho na internet sobre Nested DataSets é apenas a configuração dos componentes, a maneira de encaixá-los. Apenas o básico. Não acho nenhum exemplo concreto e mais específico de utilização deles...
Você saberia me informar algum tutorial ou site, ou até mesmo um livro, que tenha coisas mais específicas sobre NestedDataSets ?

Valeu !


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar