Ordenar produtos por medida
11/03/2020
0
Gostaria de saber se tem como ordenar os produtos de uma tabela por medida, por exemplo:
PP
P
M
G
GG
EGG
Porém preciso que seja dinâmico, pois o usuário pode cadastrar uma medida não pre-definida no sistema, impossibilitando que seja atribuído valores fixos para ordenação.
Ruddy Tomaz
Posts
11/03/2020
Lucas Lima
Tente fazer utilizando CASE do SQL
ORDER BY ( CASE WHEN ''PP'' THEN 1 WHEN ''P'' THEN 2 WHEN ''M'' THEN 3 WHEN ''G'' THEN 4 WHEN ''GG'' THEN 5 WHEN ''EGG'' THEN 6 END ) ASC
11/03/2020
Lucas Lima
Tente fazer utilizando CASE do SQL
ORDER BY ( CASE sua_coluna_aqui WHEN ''PP'' THEN 1 WHEN ''P'' THEN 2 WHEN ''M'' THEN 3 WHEN ''G'' THEN 4 WHEN ''GG'' THEN 5 WHEN ''EGG'' THEN 6 END ) ASC
16/03/2020
Ruddy Tomaz
Tente fazer utilizando CASE do SQL
ORDER BY ( CASE sua_coluna_aqui WHEN ''PP'' THEN 1 WHEN ''P'' THEN 2 WHEN ''M'' THEN 3 WHEN ''G'' THEN 4 WHEN ''GG'' THEN 5 WHEN ''EGG'' THEN 6 END ) ASC
Bom dia Lucas
Desculpe a demora na resposta, mas no serviço está uma loucura. Sua dica me atendeu super bem. Agradeço super, pois ficou perfeito. Segue abaixo meu código. Coloquei todas as variações de digitação que podem ocorrer
produtos.Close;
produtos.SQL.Clear;
produtos.SQL.Add('select * from produtos where descricao like '+''''+'%'+editconsulta.Text+'%'+''' or codigo like '+''''+'%'+editconsulta.Text+'%'+'''');
produtos.SQL.Add('ORDER BY codigo, cor, (CASE medida WHEN ''PP'' or '' PP '' or '' PP'' or ''PP '' or ''pp'' or '' pp '' or '' pp'' or ''pp '' THEN 1');
produtos.SQL.Add('WHEN ''P'' or '' P '' or '' P'' or ''P '' or ''p'' or '' p '' or '' p'' or ''p '' THEN 2');
produtos.SQL.Add('WHEN ''M'' or '' M '' or '' M'' or ''M '' or ''m'' or '' m '' or '' m'' or ''m '' THEN 3');
produtos.SQL.Add('WHEN ''G'' or '' G '' or '' G'' or ''G '' or ''g'' or '' g '' or '' g'' or ''g '' THEN 4');
produtos.SQL.Add('WHEN ''GG'' or '' GG '' or '' GG'' or ''GG '' or ''gg'' or '' gg '' or '' gg'' or ''gg '' THEN 5');
produtos.SQL.Add('WHEN ''EGG'' or '' EGG '' or '' EGG'' or ''EGG '' or ''egg'' or '' egg '' or '' egg'' or ''egg ''');
produtos.SQL.Add('or ''EXG'' or '' EXG '' or '' EXG'' or ''EXG '' or ''exg'' or '' exg '' or '' exg'' or ''exg '' THEN 6 END ) ASC');
produtos.Open;
16/03/2020
Emerson Nascimento
agora faça uma pequena alteração, para que tenha melhor apresentação:
produtos.SQL.Add('select * from produtos'); produtos.SQL.Add('where descricao like ''%'+editconsulta.Text+'%'' or codigo like ''%'+editconsulta.Text+'%'''); produtos.SQL.Add('ORDER BY codigo, cor,'); produtos.SQL.Add('(CASE UPPER(LTRIM(RTRIM(medida)))'); produtos.SQL.Add('WHEN ''PP'' THEN 1'); produtos.SQL.Add('WHEN ''P'' THEN 2'); produtos.SQL.Add('WHEN ''M'' THEN 3'); produtos.SQL.Add('WHEN ''G'' THEN 4'); produtos.SQL.Add('WHEN ''GG'' THEN 5'); produtos.SQL.Add('ELSE 6 END) ASC'); produtos.Open;
16/03/2020
Ruddy Tomaz
agora faça uma pequena alteração, para que tenha melhor apresentação:
produtos.SQL.Add('select * from produtos'); produtos.SQL.Add('where descricao like ''%'+editconsulta.Text+'%'' or codigo like ''%'+editconsulta.Text+'%'''); produtos.SQL.Add('ORDER BY codigo, cor,'); produtos.SQL.Add('(CASE UPPER(LTRIM(RTRIM(medida)))'); produtos.SQL.Add('WHEN ''PP'' THEN 1'); produtos.SQL.Add('WHEN ''P'' THEN 2'); produtos.SQL.Add('WHEN ''M'' THEN 3'); produtos.SQL.Add('WHEN ''G'' THEN 4'); produtos.SQL.Add('WHEN ''GG'' THEN 5'); produtos.SQL.Add('ELSE 6 END) ASC'); produtos.Open;
Perfeito meu amigo. Tudo funcionando corretamente.
Mais uma vez obrigado pela ajuda.
Com isto, encerro o tópico.
RESOLVIDO
Clique aqui para fazer login e interagir na Comunidade :)