Delphi não deixe-me inserir linhas com colunas em falta, mas com gatilhos e geradores para os campos

StackOverflow https://stackoverflow.com/questions/9021397

Pergunta

O problema é simples:Eu tenho dispara e geradores em meu Firebird 2.1.4 banco de dados para fazer uma coluna de auto incremento em cada pastilha.

A arquitetura do sistema é o seguinte:

TSQLConnection > TSQLDataSet -> TDataSetProvider -> (DataSnap) -> TClientDataSet -> TDataSource

No entanto, se eu tentar Postar atualizações no meu TClientDataSet com alguma falta de coluna, Delphi vai reclamar como este:

Field 'XXX' must have a value

Se eu usar uma instrução SQL insert com os campos em falta, a linha é inserido e o aciona e geradores funciona conforme o esperado.

Como eu faço Delphi (DBX, DataSnap e tal) entender o que eu estou tentando fazer (e permitir)?

EDITAR

O fornecimento de mais informações com base no @mj2008 do comentário:este TClientDataSet está sendo criado em tempo de execução, usando o CloneCursor método.Depois de chamar o CloneCursor, eu definir esta propriedade do campo Necessário para False.Ele não ajuda com esse problema.Exemplo:

myCds.CloneCursor(otherCds, True);
myCds.FieldByName('XXX').Required := False;

Isto resulta na mesma exceção sendo lançada.

Foi útil?

Solução

Eu tinha que definir o TSQLDataset propriedade Requerido para Falso também.Isso resolveu o problema.

Outras dicas

Apenas para complementar:quando você fizer uma TClientDataset definição, as atualizações são enviadas para o componente de acesso a dados, neste caso TSQLDataset, então, mesmo se o TClientdataset não exige que o valor do campo, se o componente de acesso de dados requer que o erro é gerado.

Vai ser a mesma, mesmo se os dados vêm de uma TADODataset, TIbDataset, ou seja o que for.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top