Quando a falha ocorre?


    Na rotina de CIAP/CIAF, retorna o erro -2147217887 - Uma coluna que não permite valor nulo não pode ser atualizada para Null. Erro na rotina que carrega os dados nos grids do sistema.


     


    Como corrigir o erro?


    Na respectiva empresa com problema, execute o script


    1- execute o script baixo para excluir os índices da tabela, importante executar linha por linha
    --DELETANDO INDEX
    DROP INDEX "ciapbemEEEE"."iciapbemEEEE1"
    DROP INDEX "ciapbemEEEE"."iciapbemEEEE2"
    DROP INDEX "ciapempEEEE"."iciapempEEEE1"
    DROP INDEX "bemEEEE"."ibemEEEE1"


    Depois execute o script abaixo para recriar o índice, importante executar linha por linha
    – RECRIANDO INDEX
    CREATE UNIQUE INDEX "iciapempEEEE1" ON "ciapempEEEE"("fk_empresa_id", "mesano", "fracao");
    CREATE UNIQUE INDEX "iciapbemEEEE1" ON "ciapbemEEEE"("id", "mesano");


    --Se nesse momento der erro ao recriar "iciapbemEEEE2" (Btrieve error 5), rode o script para retornar a quantidade de registro em duplicidade e logo após execute o script para excluir os registros excedentes! Depois retorne e tente criar novamente os índices a partir daqui)
    CREATE UNIQUE INDEX "iciapbemEEEE2" ON "ciapbemEEEE"("fk_bem", "mesano");
    CREATE UNIQUE INDEX "ibemEEEE1" ON "bemEEEE"("fk_empresa_id", "codigo");

    – retorna quantidade de registros duplicados
    select fk_bem, mesano, count(1) as quantidade from ciapbemEEEE
    group by fk_bem, mesano order by quantidade desc


    Caso haja, execute o script abaixo, que irá excluir os registros excedentes


    DELETE FROM ciapbemEEEE
    WHERE id IN (
    SELECT X.id FROM (
    SELECT distinct
    a.id, a.fk_bem, a.mesano
    FROM
    (
    SELECT
    c.ID, c.fk_bem, c.mesano
    FROM (
    select
    fk_bem, mesano, count(1) as qtde
    from "ciapbemEEEE"
    group by fk_bem, mesano
    ) AS DUPS
    INNER JOIN ciapbemEEEE C ON C.fk_bem = DUPS.fk_bem and C.mesano = DUPS.mesano
    WHERE DUPS.qtde > 1
    ) A
    INNER JOIN
    (
    SELECT
    c.ID, c.fk_bem, c.mesano
    FROM (
    select
    fk_bem, mesano, count(1) as qtde
    from "ciapbemEEEE"
    group by fk_bem, mesano
    ) AS DUPS
    INNER JOIN ciapbemEEEE C ON C.fk_bem = DUPS.fk_bem and C.mesano = DUPS.mesano
    WHERE DUPS.qtde > 1
    ) B on B.fk_bem = A.fk_bem
    WHERE a.id > b.id
    ) AS X
    );








    Outros meios de obter suporte