G
Problema com Store()
Boa Tarde!
Estamos desenvolvendo um projeto usando o Adianti e deparamos com a seguinte situação:
Em um cadastro temos alguns campos no formulário que são do Tipo TCheckGroup que estão setados para que se marcados recebam o valor "S",
já no banco de dados que é PostGresSQL, os campos correspondentes aos campos TCheckGroup, tem um valor Default "N", após concluir o preenchimento
do formulário, quando executo a ação do onSave, os campos que estão marcados são salvos no banco de dados como "N", após alguns testes constatamos que:
1) Se dentro da função onSave setar o valor "S" para o campo, antes de dar $object->store() , ele funciona.
2) Se dentro da função onSave setar o valor que vem no formulário, antes do store(), ele salva com o valor Default"N"
3) Fazendo um var_dump(), no objeto que veio do formulário, os campos vem preenchidos de acordo com a seleção na hora de preencher o formulário
4) Fazendo um var_dump(), no objeto que esta sendo preenchido de forma manual segundo o item 2 dessa lista, ele vai preenchido com o valor do formulário normalmente.
Com isso constatamos que a função store() pega os valores Default que é pré-escrito no banco e atribui aos campos, subscrevendo os dados entrados pelo usuário.
Nessa situação, como devemos proceder?
Estamos desenvolvendo um projeto usando o Adianti e deparamos com a seguinte situação:
Em um cadastro temos alguns campos no formulário que são do Tipo TCheckGroup que estão setados para que se marcados recebam o valor "S",
já no banco de dados que é PostGresSQL, os campos correspondentes aos campos TCheckGroup, tem um valor Default "N", após concluir o preenchimento
do formulário, quando executo a ação do onSave, os campos que estão marcados são salvos no banco de dados como "N", após alguns testes constatamos que:
1) Se dentro da função onSave setar o valor "S" para o campo, antes de dar $object->store() , ele funciona.
2) Se dentro da função onSave setar o valor que vem no formulário, antes do store(), ele salva com o valor Default"N"
3) Fazendo um var_dump(), no objeto que veio do formulário, os campos vem preenchidos de acordo com a seleção na hora de preencher o formulário
4) Fazendo um var_dump(), no objeto que esta sendo preenchido de forma manual segundo o item 2 dessa lista, ele vai preenchido com o valor do formulário normalmente.
Com isso constatamos que a função store() pega os valores Default que é pré-escrito no banco e atribui aos campos, subscrevendo os dados entrados pelo usuário.
Nessa situação, como devemos proceder?
Guilherme, boa tarde!
Posta o código do onSave para uma melhor compreensão do que está acorrendo.
Um exemplo que você pode usar, é o formulário de usuário.
Onde após salvar o usuário é que são criados os vínculos com as unidades, e toda vez que alteramos o cadastro de usuário as informações de vínculos são excluídas e gravadas novamente.
Ola Hellton, segue abaixo o codigo do onSave
</pre></pre></pre></pre>
Se você está usando TCheckGroup então "$data->flag_pgto_parcelado" deve estar retornando um array, pois o conceito de check é possibilitar a seleção de um ou mais itens.
Não é possível gravar um array diretamente. Você precisa tratar isso.
Eu tinha tratado também e mesmo assim não deu certo, então migrei pra opção de TRadioGroup e supriu minha necessidade. Obrigado