Autor Tópico: Erro em Mestre detalhe feito com container, grid, form e grid view editável  (Lida 717 vezes)

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1642
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Bom dia pessoal,

Erro em Mestre detalhe feito com container, grid, form e grid view editável.
Observação: Isto não é para produção, apenas um teste que faço para ver se fica legal.
Quem sabe um dia usarei?

Banco de dados usado: Firebird 2.5.4
PHP 5.6
Ambiente Operacional: Debian/GNU Linux
Base de dados: exemplo que vem junto com Firebird employee.fdb
Tabelas usadas: salary_history e employee
aplicações usadas: container (dashboard), grid, form e grid view (editável)

Como podem ver no DDL abaixo a tabela salary_history tem o campo calculado por computed by new_salary

CREATE TABLE SALARY_HISTORY
(
  EMP_NO EMPNO NOT NULL,
  CHANGE_DATE timestamp DEFAULT 'NOW' NOT NULL,
  UPDATER_ID varchar(20) NOT NULL,
  OLD_SALARY SALARY NOT NULL,
  PERCENT_CHANGE double precision DEFAULT 0 NOT NULL,
  CONSTRAINT INTEG_55 PRIMARY KEY (EMP_NO,CHANGE_DATE,UPDATER_ID)
);

ALTER TABLE SALARY_HISTORY ADD NEW_SALARY COMPUTED BY (old_salary + old_salary * percent_change / 100);
ALTER TABLE SALARY_HISTORY ADD CONSTRAINT INTEG_56
  FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO);
ALTER TABLE SALARY_HISTORY ADD CONSTRAINT INTEG_54
  CHECK (percent_change between -50 and 50);
CREATE DESCENDING INDEX CHANGEX ON SALARY_HISTORY (CHANGE_DATE);
CREATE INDEX UPDATERX ON SALARY_HISTORY (UPDATER_ID);
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
 ON SALARY_HISTORY TO  "PUBLIC" WITH GRANT OPTION;

GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
 ON SALARY_HISTORY TO  SYSDBA WITH GRANT OPTION;

E é neste campo que começa meu problema;
Acessem: http://www.simaoebuhler.com.br/teste/container/dashboard_mestre_detalhe/
clique em detalhe, qualquer um deles, clique em novo.
Insira um updater id: admin2, eliane ou outro nome.
Coloque o valor do salário velho .
Depois a porcentagem de aumento.
Clique para salvar.
Após o formulário se salvo no banco deveria aparecer os campos "new salary" e o "emp no"
Mas somente aparece se clico novamente no link detalhe do master de forma que é feito um refresh no gridview.
Isto é um bug do grid view com campos calculados? Ou bizarrices na minha programação?
Alguém já passou por isto?
Obs: Parei ai neste bug. O mestre/detalhe ainda não esta terminado. Logo deve ter outras coisas que não funcionam.

Para quem se interessar em ajudar exporto as aplicações
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?