Fórum Como alterar o codigo do produto de um pedido sendo o mesmo uma PK #430292

03/12/2012

0

Galera é o seguinte, eu tenho uma aplicação desenvolvida no delphixe com firebird 2.5. Onde eu tenho um formulário de cargas de produtos, onde o usuário informa o carregamento de um vendedor e os itens que ele carregou, esse itens o usuario manipula em um DBGrid, onde ele informa o codigo e a qtde do produto. o usuario pode alterar o qtde que quiser, mas quando ele tenta alterar o codigo do produto, o sistema insere um novo produto com o novo codigo e o produto antigo, ou seja, o produto que o codigo foi alterado continua. sendo assim ele insere um novo produto e continua com o antigo. o correto seria apenas alterar o codigo do produto e nao inserir um novo.

a procedure que eu estou usando é a seguinte:


CREATE PROCEDURE SP_CARGAS_ITENS_IU (
    car_id type of column cargas_itens.car_id,
    prod_id type of column cargas_itens.prod_id,
    ci_preco type of column cargas_itens.ci_preco,
    ci_qtde type of column cargas_itens.ci_qtde,
    ci_total type of column cargas_itens.ci_total,
    cancelado type of column cargas_itens.cancelado)
as
begin
  if (exists(select car_id from cargas_itens where (car_id = :car_id) and (prod_id = :prod_id))) then
    update cargas_itens
    set ci_preco = :ci_preco,
        ci_qtde = :ci_qtde,
        ci_total = :ci_total,
        cancelado = :cancelado
    where (car_id = :car_id) and (prod_id = :prod_id);
  else
    insert into cargas_itens (
        car_id,
        prod_id,
        ci_preco,
        ci_qtde,
        ci_total,
        cancelado)
    values (
        :car_id,
        :prod_id,
        :ci_preco,
        :ci_qtde,
        :ci_total,
        :cancelado);
end
Sidney Abreu

Sidney Abreu

Responder

Posts

04/12/2012

Marcio

cara, código de produto não se usa PK, teria de ser um campo
alfanumérico e assim que qualquer produto vendido por mais
que altere o código do produto a PK é sempre a mesma...

teria que dar uma boa reestruturação da tabela...


falow
Responder

Gostei + 0

04/12/2012

Sidney Abreu

a minha estrutura é essa:

CREATE TABLE CARGAS_ITENS (
CAR_ID INTEGER NOT NULL,
PROD_ID INTEGER NOT NULL,
CI_PRECO "DValor" DEFAULT 0 /* "DValor" = NUMERIC(12,2) DEFAULT 0 */,
CI_QTDE NUMERIC(5,3) DEFAULT 0,
CI_TOTAL "DValor" DEFAULT 0 /* "DValor" = NUMERIC(12,2) DEFAULT 0 */,
CANCELADO VARCHAR(1),
DATA_HORA TIMESTAMP,
ORDEM INTEGER
);
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar