Faixa de preços
09/12/2020
0
Pessoal preciso implementar uma rotina no Delphi Rio e não estou conseguindo e também não tenho mais a quem recorrer. É o seguinte:
Temos uma tela onde são cadastradas as faixas de preço, por exemplo: Faixa 1: R$ 10,00 - R$ 100,00; Faixa 2: R$ 101,00 - R$200,00, e assim vai...
Dentro da tela de vendas preciso que quando salvar a venda emitida o sistema entre nesta tabela de faixa com o valor da venda fechada pegue a faixa de preço em que a tal venda se encaixa e salve em outra tabela o valor fechado da venda mais a faixa em que ela se enquadra.
Não faço idéia de por onde começo e nem onde termino. Se puderem me dar apenas uma direção de como capturo a faixa de preços em que os valores das vendas se encaixam.
Agradeço desde já a atenção e disposição.
Devnator
Posts
10/12/2020
Emerson Nascimento
SELECT * FROM FAIXAS_DE_PRECO WHERE :VALORDESEJADO BETWEEN FAIXA1 AND FAIXA2
se quiser resolver tudo numa instrução:
INSERT INTO OUTRATABELA ([CAMPO1, CAMPO2, CAMPO3, CAMPON, NUMERO_DO_PEDIDO,] FAIXA, VALOR_DA_VENDA) SELECT [:VALORCAMPO1, :VALORCAMPO2, :VALORCAMPO3, :VALORCAMPON, :NUMERO_DO_PEDIDO,] FP.FAIXA, :VALORDESEJADO FROM FAIXAS_DE_PRECO FP WHERE :VALORDESEJADO BETWEEN FP.FAIXA1 AND FP.FAIXA2
10/12/2020
Emerson Nascimento
por exemplo:
até 10,00
até 100,00
até 200,00
do jeito que você apresentou, um valor de 100.35 não se encaixaria em nenhuma faixa.
10/12/2020
Devnator
Estou tendo um pequeno problema e não consigo resolver. Segui seu primeiro exemplo e não apresenta erros na IDE, só que não retorna registros.
Segue código SQL e Delphi, respectivamente:
SELECT * FROM TBL_FAIXAS_PRECOS WHERE :total BETWEEN FAIXA_INI AND FAIXA_FIM
CDSFaixasPrecos.Close; CDSFaixasPrecos.ParamByName('total').Value:= Edit3.Text; CDSFaixasPrecos.Open; if CDSFaixasPrecos.RecordCount > 0 then begin Label15.Caption:= CDSFaixasPrecos.FieldByName('FAIXA_INI').Value; Label14.Caption:= CDSFaixasPrecos.FieldByName('FAIXA_FIM').Value; end;
Se puder me dizer se está correto está solução e também uma saída para o não retorno dos registros corretamente, agradeço.
**Obs: Estou alimentando "Labels" para ver o comportamento da solução antes de gravar na outra tabela, como referido no primeiro post.
E aproveitando para responder seu segundo post. As faixas que postei no primeiro post eram para servir somente como exemplo. Aqui neste sistema temos um Form de manutenção que o Adm altera estes registros de tempos em tempos conforme a necessidade.
Agradeço mais uma vez sua disposição em me auxiliar.
10/12/2020
Emerson Nascimento
SELECT * FROM TBL_FAIXAS_PRECOS WHERE :total BETWEEN FAIXA_INI AND FAIXA_FIM
não use recordcount(); prefira verificar se a tabela está vazia.
CDSFaixasPrecos.Close; CDSFaixasPrecos.ParamByName('total').AsFloat := StrToFloat(Edit3.Text); CDSFaixasPrecos.Open; if not CDSFaixasPrecos.IsEmpty then begin Label15.Caption := CDSFaixasPrecos.FieldByName('FAIXA_INI').AsString; Label14.Caption := CDSFaixasPrecos.FieldByName('FAIXA_FIM').AsString; end;
estou supondo que o conteúdo dos campos seja numérico
Clique aqui para fazer login e interagir na Comunidade :)