Delphi 7 + Mestre Detalhe + ClientDataSet + Abrir em modo de inserção = ERRO de Field Value Required

Delphi

09/04/2014

Olá pessoal, e obrigado desde já pela atenção.

Pesquisei em vários posts do Fórum até me cansar, se realmente houver algum caso parecido com o meu me desculpem.

Basicamente tenho uma relação mestre detalhe entre duas tabelas segue a descrição dos componentes que utilizo:

1 - MESTRE
- SQLDataSet (paleta DBExpress)
- DataSetProvider (apontando para o SQLMestre)
- ClientDataSet (apontando pro provider)
- DataSource (apontando pro CDS)

2 - DETALHE
- SQLDataSet (apontando para o dataSourceLink)
- DataSource (apontando para o SQLMestre criando o Link)
- ClientDataSet (apontando para o Link gerado)
- DataSource (Apontando para o cds Detalhe)

Passos que executo:
1 - Ativo o CDS Mestre
2 - Abro o SQL Mestre e coloco ele em modo de inserção
3 - Executo o Gerador de Chave para colocar na chave primária do Mestre
4 - Coloco a chave primária no Mestre
5 - Ativo o CDS Detalhe
6 - Coloco o CDS Detalhe em modo de inserção - Neste Momento Aparece uma mensagem de erro dizendo "Field Value Requierd"

Fui em todos os ClientDataSets e coloquei os campos com o Required = False

Definitivamente não faço ideia do que seja.

Alguém pode me ajudar?

Novamente obrigado pela atenção. Fico no aguardo. Uma boa noite para todos.
Paulo Rego

Paulo Rego

Curtidas 0

Respostas

Ricardo

Ricardo

09/04/2014

Provavelmente algum campo na sua tabela esta marcado como not null.
GOSTEI 0
Cauê Nishijima

Cauê Nishijima

09/04/2014

Tenta importar os campos para os SQLDataSet também e mudar neles a propriedade Required para False.
GOSTEI 0
Paulo Rego

Paulo Rego

09/04/2014

Pessoal obrigado pelas dicas, vou testa-las, assim que der e dou um feedback.
GOSTEI 0
Paulo Rego

Paulo Rego

09/04/2014

Olá pessoal, vou tentar responder aqui:

Provavelmente algum campo na sua tabela esta marcado como not null.


Infelizmente sim, os campos chave da minha tabela são not null e não podem ser alterados. O problema é que outras relações Do Sistema funcionam com os campos assim.


Tenta importar os campos para os SQLDataSet também e mudar neles a propriedade Required para False.


Fiz a importação, alterei tudo e infelizmente o erro persiste.

De qualquer sorte obrigado pela ajuda. Se souberem de mais alguma coisa, por favor estou tentando resolver isto a uns dois dias.

Uma boa tarde para todos.


GOSTEI 0
Cauê Nishijima

Cauê Nishijima

09/04/2014

Fiz uma simulação aqui seguindo os passos que você informou e não consegui reproduzir o erro.
Seguindo seus passos só não entendi o que você faz no passo 3 da execução! Se o mesmo efetua uma consulta pra pegar o ultimo ID tente colocar ele como passo 1 e gravar
em uma variavel, ficando:

Passos que executo:
1 - Executo o Gerador de Chave para colocar na chave primária do Mestre
2 - Ativo o CDS Mestre
3 - Abro o SQL Mestre e coloco ele em modo de inserção
4 - Coloco a chave primária no Mestre
5 - Ativo o CDS Detalhe
6 - Coloco o CDS Detalhe em modo de inserção - Neste Momento Aparece uma mensagem de erro dizendo "Field Value Requierd"

Se puder passar mais informações de como você esta o código desse processo!
GOSTEI 0
Paulo Rego

Paulo Rego

09/04/2014

Olá pessoal, e obrigado pela atenção.
Consegui resolver o problema.

Basicamente exista um clientdataset detalhe que era utilizado para atualizar o registro, porém ele precisava dos dados do mestre que não existiam.

Tive que utilizar um novo clientdataset fora da relação mestre detalhe e inserir estes dados na tabela detalhe e deixar a tabela mestre para inserir no final
(vocês estão pensando o mesmo que eu, mas peguei o projeto pronto e estou dando manutenção, então não me sinto julgado. kkk)

Novamente obrigado pela atenção todos.
Desculpem a demora em responder. Só conseguir parar e resolver isto ontem.

Um grande abraço, podem colocar resolvido no tópico.
GOSTEI 0
POSTAR