GARANTIR DESCONTO

Fórum Inserção usando um botão tipo incluir #457798

08/10/2013

0

- Olá pessoal, boa noite, meu nome é Emerson, estou com um pequeno probleminha e gostaria da ajuda dos companheiro.
- É o seguinte estou desenvolvendo um programinha para um restaurante de um amigo, dai gostaria de simplificar algumas rotinas, tipo esta:
-Clicar em um determinado botão que represente um produto, da TABELA PRODUTOS, e se este já estiver presente na TABELA DE ITENS DO PEDIDO, acrescentar na mesma linha a quantidade e some o total. Tipo assim:
Cod. Descr. Qnt. unit Total
1 Pizza Mussa 1 10 10

dai se eu quiser inserir mas um pizza com o mesmo
código
ele só adiciona na mesma linha, pois já existe um item com esse código, e fazer a soma.
- De já agradeço,
- Obrigado. FICANDO ASSIM:
Cod. Descr. Qnt. unit Total
1 Pizza Mussa 2 10 20
Emerson Carvalho

Emerson Carvalho

Responder

Posts

08/10/2013

Marcos Oliveira

Olá Emerson! Qual banco você usa? E qual componente usa para acesso a esse banco?

Att,

Marcos
Responder

Gostei + 0

08/10/2013

Emerson Carvalho

Estou, usando Paradox, e uso para fazer a ligação o objeto Table
Responder

Gostei + 0

08/10/2013

Emerson Carvalho

eu usei a seguinte lógica: só q não deu certo, os colegas poderiam me dizer onde está errado ? Obrigado

begin
TbITens.First;
While Not TbItens.Eof do
Begin
//if not TbItens.IsEmpty then
if TbItens.FindKey([TbItensCodProduto.Value]) then
TbItens.InsertRecord([TbItensQuantidade.Value,TbItensPreco.Value,TbItensTotal.Value])


Else
begin
DsItens.DataSet.Insert;
DBEdit3.SetFocus;
end;
TbItens.Next;
End;



end;
Responder

Gostei + 0

08/10/2013

Marcos Oliveira

Vamos lá Emerson. Tente fazer como abaixo:

if TbItens.FindKey([TbItensCodProduto.Value]) then
begin
     // Encontrou o registro, então só faz a edição.
     TblItens.Edit;
     TblItens.FieldByName('Qtde').AsFloat := TblItens.FieldByName('Qtde').AsFloat + 1; // Exemplo... Faça de acordo com sua necessidade.
     TblItens.FieldByName('Total').AsFloat := TblItens.FieldByName('Qtde').AsFloat *  TblItens.FieldByName('valor_unitario').AsFloat;
     TblItens.Post;
end
else
begin
     // Se não encontrou o registro, então adiciona um novo.
     TblItens.Append;
     TblItens.FieldByName('Qtde').AsFloat := 1;
     TblItens.FieldByName('Total').AsFloat := TblItens.FieldByName('valor_unitario').AsFloat;
     TblItens.Post;
end;


Bom, isso é só um exemplo. Você deve adaptar de acordou com seu sistema, mas a lógica é mais ou menos essa.
Se der algum erro, me desculpe. Paradox não é minha área.

Att,

Marcos
Responder

Gostei + 0

08/10/2013

Emerson Carvalho

Oi Marcos, Vou tentar e lhe aviso como ficou, mas já lhe agradeço antecipadamente. Obrigado.
Responder

Gostei + 0

08/10/2013

Emerson Carvalho

Oi Marcos Tentei assim, mas não funcionou:

procedure TFrmCadPedidos.Button2Click(Sender: TObject);
begin
TbItens.First;
While Not TbItens.Eof do
Begin
if TbItens.FindKey([TbItensCodProduto.Value]) then
begin
// Encontrou o registro, então só faz a edição.
TbItens.Edit;
TbItens.FieldByName('Quantidade').AsFloat := TbItens.FieldByName('Quantidade').AsFloat + 1; // Exemplo... Faça de acordo com sua necessidade.
TbItens.FieldByName('Total').AsFloat := TbItens.FieldByName('Qtde').AsFloat * TbItens.FieldByName('Preco').AsFloat;
TbItens.Post;
end
else
begin
// Se não encontrou o registro, então adiciona um novo.
TbItens.Append;
TbItens.FieldByName('Quantidade').AsFloat := 1;
TbItens.FieldByName('Total').AsFloat := TbItens.FieldByName('Preco').AsFloat;
TbItens.Post;
end;
TbItens.Next;
end;

Responder

Gostei + 0

08/10/2013

Marcos Oliveira

Emerson, você não precisa fazer esse loop (while not Eof).
Pra dar o FindKey, você precisa de índices, correto? Você selecionou o índice correto pela propriedade IndexName da tabela, antes de dar o FindKey?
Responder

Gostei + 0

09/10/2013

Rafael Brendolan

Emerson, posso dar uma dica?
Já que o projeto é novo, utilize pelo menos o Delphi Xe2 pra frente e FireBird.

Foge do Paradox.

Tem muito artigo aqui ensinando a usar o Firebird e qualquer dúvida tem o fórum também.
Digo isso porque depois precisa trabalhar em Rede e fazer isso com Paradox não é recomendado e não é um dos melhores bancos.
Temos ainda MySQL, PostGreSQL, entre outros Free.

Att.
Responder

Gostei + 0

09/10/2013

Marcos Oliveira

Emerson, o Rafael tem toda razão... O Paradox dá muito problema, corrompe muito índice e tabelas e se estiver operando em rede então, nem se fala.
Já utilizei a algum tempo, e não recomendo pra ninguém. Passei muita raiva com ele.
Responder

Gostei + 0

09/10/2013

Emerson Carvalho

Meu querido Rafael, bom dia, obrigado pela dica.
Veja o seguinte, eu passei uns quatro anos sem programar, dai estou voltando agora novamente. Conheço essa ferramenta de desenvolvimento de da versão 2, 3, até 7, só q quando chegou ai dei um parada.
Mas lhe pergunto, pq estou meio alheio aos assunto: Por onde Começar ??
1-Esta ferramenta é muito cara a ultima versão do DELPHI;
2-E por onde começaria com este banco de dados FIRE BIRD ?
Na minha máquina eu intalei o IBExpert e o IBConsole, com eles eu consigo manipular alguma coisa?
-- Me desculpe a gama de perguntas é pq vou procurar me antenar quanto ao assunto.
Responder

Gostei + 0

09/10/2013

Emerson Carvalho

Pergunto tmb, a vc marcos .
Responder

Gostei + 0

09/10/2013

Rafael Brendolan

Emerson.
1 - Então, pelo preço do Delphi pelo que sei se vcê compra o XE5 você ganha as Keys das versões anteriores também para usar. Me corrijam se eu estiver errado.
2 - Sim, pelo IBExpert você pode manipular o Firebird. Criar Banco, tabela, campo, registro, SQL, retorno de tempo das querys, etc... completo mesmo.

Como você está a um tempo sem programar e não tenho ideia do seu conhecimento na ferramenta Delphi, recomendo esse curso de ClientDataSet para acesso aos dados do Banco:

https://www.devmedia.com.br/curso/trabalhando-com-clientdataset/108

Depois para relatórios do sistema recomendaria este

https://www.devmedia.com.br/curso/aprenda-a-criar-relatorios-no-delphi-com-rave-reports-crystal-reports-e-quick-reports/3

Aqui na DevMedia ainda da pra achar muita coisa Free, mas estes dois cursos são muito bons e vai ter praticamente tudo que você precisa pra acessar os dados no banco, incluir e manipular eles.
Responder

Gostei + 0

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

Aceitar