segunda-feira, 19 de maio de 2014

Re: [java-br] BAIXA ESTOQUE SISCOM EM JAVA NETEBEANS

·

 

Ok!

Sucesso
 
Thiago Hernandes de Souza
Analista de Sistemas e Consultor de TI
http://thiago-hernandes.net

De: "Everton Antonio Oliva ewe19pro@yahoo.com.br [java-br]" <java-br@yahoogrupos.com.br>
Para: "java-br@yahoogrupos.com.br" <java-br@yahoogrupos.com.br>
Enviadas: Segunda-feira, 19 de Maio de 2014 13:26
Assunto: Re: [java-br] BAIXA ESTOQUE SISCOM EM JAVA NETEBEANS

 
Agradeço Thiago, problema resolvido usando este exemplo dado por você.

Em Domingo, 18 de Maio de 2014 13:57, "Thiago Hernandes hernandes_sp@yahoo.com.br [java-br]" <java-br@yahoogrupos.com.br> escreveu:


 
Ok! por nada!

Bom nessa outra questão, preconizo uma particularidade de cada programador. Mas, sempre tem uma forma mais usual.

No meu caso, quando eu precisei realizar tarefa do tal contexto, acho bem simples.

Apenas parametrize a consulta da sua JTable detalhe com um método que recebe o ID_NOTA(master) . Você pode utilizar o método mais convincente para o seu caso. Mas imagino que seja o ActionPerfomed do button de gravação da master. Após essa gravação, você pode pegar o valor que quer passar como parâmetro para o outro Form(JFrame) através do pré-armazenamento em uma variável.

Imagino que o código abaixo te ajude:

No button gravar(master)

FormMaster.java
...
 private void jButtonGravarActionPerformed(java.awt.event.ActionEvent evt) {                                         

         FormSlave x = new FormSlave();       
         x.setVisible(true);
 x.vParametro = jNota.getText(); // aqui você pega da forma que achar melhor o valor via edit ou banco do parâmetro da tela que receberá o valor
 ...

FormSlave.java

...
public String vParametro = "";

Não se esqueça de deixar a opção do JFrame "defaultCloseOperation" = DISPOSE;

Boa sorte


Thiago Hernandes de Souza
Analista de Sistemas e Consultor de TI
http://thiago-hernandes.net

De: "Everton Antonio Oliva ewe19pro@yahoo.com.br [java-br]" <java-br@yahoogrupos.com.br>
Para: "java-br@yahoogrupos.com.br" <java-br@yahoogrupos.com.br>
Enviadas: Domingo, 18 de Maio de 2014 8:51
Assunto: Re: [java-br] BAIXA ESTOQUE SISCOM EM JAVA NETEBEANS

 
Olá Thiago,
Thiago agradeço por ter me ajudado na questão de baixa de estoque, agora esta faltando pouco para "finalizar" esta parte do desenvolvimento, porem falta conseguir atualizar uma jtable, eu usei como no exemplo visto no youtube um formulario de amostra mestre detalhe, tenho uma uma outra form de venda que busco através de parâmetros da outra, como faço para cada vez que inserir atualizar na jtable e não somente no banco quando confirmo a venda?
  Caso não tenha explicado da melhor forma tentaria formular novamente a pergunta, agradeço....
Em Terça-feira, 13 de Maio de 2014 15:32, "Everton Antonio Oliva ewe19pro@yahoo.com.br [java-br]" <java-br@yahoogrupos.com.br> escreveu:


 
Agradeço a Dica de vocês vou estudar TRIGGER e assim que inserir no DB mando o resultado...GRAÇAS :d
Em Terça-feira, 13 de Maio de 2014 8:55, "Thiago Hernandes hernandes_sp@yahoo.com.br [java-br]" <java-br@yahoogrupos.com.br> escreveu:
 
Olá!

No seu caso, recomendo você criar functions e instanciá-las dentro da trigger. Não faça isso via Java!!! 

Além de mais trabalhoso, se existir vários processamentos sincronizados e estiver em rede, ou então, a máquina cliente travar, pode ser que fique processamentos pendentes ou deadlock. Tente otimizar seu sistema no banco de dados. Com isso, quando houver um processamento ou então uma lista de execução de scripts, como uma das características dos bancos de dados relacionais é a CONSISTÊNCIA e INTEGRIDADE, se o seu banco for criado corretamente com chaves: primária e estrangeira, vai continuar processando, mesmo que o meio de acesso "caia".

É extremamente importante nesse caso você utilizar functions para retornar valores e depois tratá-los.

Quando você for processar vários valores sem precisar de retorno, utilize procedures.

Abaixo um exemplo de como dar baixa no estoque para cada item de uma nota:

Suponhamos:

CREATE TABLE `produtos` (
  `id_produto` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(100) NOT NULL,
  `estoque` int(11) NOT NULL,
  PRIMARY KEY (`id_produto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `notas_saida` (
  `id_nota_saida` int(11) NOT NULL AUTO_INCREMENT,
  `data` date NOT NULL,
  PRIMARY KEY (`id_nota_saida`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `itens_nota_saida` (
  `id_item_saida` int(11) NOT NULL,
  `id_nota_saida` int(11) NOT NULL,
  `id_produto` int(11) NOT NULL,
  `qtd` int(11) NOT NULL,
  PRIMARY KEY (`id_item_saida`),
  KEY `fk_itens_com_nota` (`id_nota_saida`),
  KEY `fk_itens_com_produtos` (`id_produto`),
  CONSTRAINT `fk_itens_com_nota` FOREIGN KEY (`id_nota_saida`) REFERENCES `notas_saida` (`id_nota_saida`),
  CONSTRAINT `fk_itens_com_produtos` FOREIGN KEY (`id_produto`) REFERENCES `produtos` (`id_produto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE DEFINER=`root`@`localhost` TRIGGER `exemplosiscom`.`tg_ai_itens_nota_saida` AFTER INSERT ON exemplosiscom.itens_nota_saida FOR EACH ROW
BEGIN
   
    UPDATE produtos SET estoque = estoque - NEW.qtd
    WHERE id_produto = NEW.id_produto;
    
END;

Esse exemplo é bem simples. Caso queira realizar um LOOP ou verificação, de itens de uma nota e pegar valores, etc. você pode utilizar CURSORES:

  DECLARE v_controle_cursor INTEGER DEFAULT 0;        
    
    DEClARE itens_nota CURSOR FOR 
        SELECT id_produto,qtd FROM itens_nota_saida
WHERE id_nota_saida = p_id_nota_saida;
    
    DECLARE CONTINUE HANDLER 
        FOR NOT FOUND SET v_controle_cursor = 1;
 
    OPEN itens_nota;
 
    loop_itens_nota: LOOP
 
        FETCH itens_nota INTO v_id_produto,v_qtd;
 
        IF v_controle_cursor = 1 THEN 
            LEAVE loop_itens_nota;
        END IF;
      
        UPDATE produtos SET estoque = v_qtd
WHERE id_produto = v_id_produto;
 
    END LOOP loop_itens_nota;
 
    CLOSE itens_nota;

O código acima você poderia criar como uma PROCEDURE que será chamada passando como único parâmetro o ID_NOTA_SAIDA. O resto a procedure faz após ser chamada na TRIGGER.

Para chamar a procedure: CALL nome_da_procedure(parametro int);

Boa sorte!

 
Thiago Hernandes de Souza
Analista de Sistemas e Consultor de TI
http://thiago-hernandes.net

De: "ewe19pro@yahoo.com.br [java-br]" <java-br@yahoogrupos.com.br>
Para: java-br@yahoogrupos.com.br
Enviadas: Segunda-feira, 12 de Maio de 2014 22:05
Assunto: [java-br] BAIXA ESTOQUE SISCOM EM JAVA NETEBEANS

 
Olá amigos, estou tentando fazer meu primeiro projeto usando como base as videos aulas no youtube do autor "Programação2012", mas estou com muita dificuldade em fazer a baixa do estoque, eu tenho uma tabela Amostra mestre detalhe:
.nfe_det.numero_nf_cab







.nfe_det.cod_produto








.nfe_det.vlr_unitario_nf

















.nfe_det.vlr_total_nf









Amostra mestre cabeçalho:
.nfe_cab.numero_nf_cab








.nfe_cab.cod_fornecedor








.nfe_cab.cod_cfop








.nfe_cab.data_emissao_cab








.nfe_cab.data_entrada_nota








.nfe_cab.vlr_total_nf_cab









Tabela Produto:
COD_PRODUTO







COD_UNIDADE







COD_FORNECEDOR








DESCRICAO_PRODUTO








VLR_COMPRA_PRODUTO








VLR_VENDA_PRODUTO







ESTOQUE_PRODUTO








CRITICO_PRODUTO









Encontrei um POST que relata o mesmo problema porem o autor ja realizou uma grande parte do da resolução do problema, e eu nem sei por onde começar, como inserir "trigers" onde e como???
como pegar o valor do campo para debitar o valor do estoque?Como pegar o valor da linha selecionada? como pegar o valor da detailTable e não da Mastertable?tem diferença, ou estou errando no codigo? peço por gentileza estou me doando o maximo para aprender e resolver isso, apenas uma dica ja serve, um exemplo...segue a baixo o post relacionado com a minha dificuldade:
 

....olá amigos! 
Em primeiro lugar não sei se é exatamente aqui que posso colocar meu problema se não for que mudem para o topico correto. 

Estou com um pequeno problema com relação a baixa de estoque. 
criei uma tela onde dou a saida dos produtos e um botão que importa os produtos um de cada vez depois coloco a quantidade de cada produto e calculo o valor, até aqui tudo bem , salvo a saida e na tabela de saida fica tudo certinho. 

Meu problema esta na baixa da quantidade do estoque, não sei como implementar isso no java tentei criar uma trigger no mysql mas se adiciono um produto apenas na tela saida de produtos e salvo ele da baixa normalmente na quantidade do produto, mas se adiciono mais de um produto e salvo ele da baixa apenas na quantidade de apenas um produto na tabela e nos demais ele deixa null ou (0), alquem poderia me dizer como criar trigger no mysql para varios produtos ou se no codigo da saida ele não enxerga todos os produtos que adiciono, pois o que percebi é que no banco dando baixa em apenas um produto por vez ele decrementa corretamente e no aplicativo se adiciono apenas um produto ele tambem funciona mas de adiciono mais de um produto ele não decrementa corretamente nos demais . 

segue a trigger que criei: 

DELIMITER ; 

DELIMITER $$ 


DROP TRIGGER /*!50032 IF EXISTS */ `siscorjava`.`SAIDA_MATERIAL`$$ 


CREATE 
/*!50017 DEFINER = 'root'@'localhost' */ 

TRIGGER `siscorjava`.`SAIDA_MATERIAL` AFTER INSERT ON `siscorjava`.`saida_det` 

FOR EACH ROW BEGIN 

UPDATE SISCORJAVA.MATERIAL_CONSUMO AS P 


SET P.QTDE_MATERIAL_CONSUMO = P.QTDE_MATERIAL_CONSUMO - NEW.QTDE_SAIDA_DET 


WHERE P.COD_MATERIAL_CONSUMO=NEW.COD_MATERIAL_CONSUMO; 


END; 

$$ 


DELIMITER ; 

desculpem se não fui claro caso precisem coloco o codigo da saida . 

Um abraço! 














__._,_.___
Responder através da web através de email Adicionar um novo tópico Mensagens neste tópico (9)

Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br

.

__,_._,___

0 comentários:

Pague com LPs do Mister Colibri

Pague com LPs do Mister Colibri
Quer comprar celular,Tablet,pen drive, GPS e muito outros produtos e ainda podendo pagar tudo em LPs ?Pois saiba que isso é possível,basta você visitar o site downloadstotal.com e realizar a sua compra com toda tranquilidade e segurança!!!

Hora

Online

Arquivo do Blog