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:
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
Curtir tópico
+ 0
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
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
);
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
Clique aqui para fazer login e interagir na Comunidade :)