Inserção e edição com NestedDataSet
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.
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
Curtidas 0
Respostas
Emerson Nascimento
17/02/2006
no caso de nesteddatasets é preciso que os nomes dos campos sejam iguais.
GOSTEI 0
Marcelocda
17/02/2006
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.
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.
GOSTEI 0
Marcelocda
17/02/2006
Sobe...
GOSTEI 0
Emerson Nascimento
17/02/2006
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).
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).
GOSTEI 0
Marcelocda
17/02/2006
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 !
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 !
GOSTEI 0