Delphi 7 + Mestre Detalhe + ClientDataSet + Abrir em modo de inserção = ERRO de Field Value Required
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.
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
Curtidas 0
Respostas
Ricardo
09/04/2014
Provavelmente algum campo na sua tabela esta marcado como not null.
GOSTEI 0
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
09/04/2014
Pessoal obrigado pelas dicas, vou testa-las, assim que der e dou um feedback.
GOSTEI 0
Paulo Rego
09/04/2014
Olá pessoal, vou tentar responder aqui:
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.
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.
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
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!
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
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.
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