ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Usar o comando count no select?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Fev 06, 2017 10:41 am    Assunto: Usar o comando count no select? Responder com Citação

Tem como usar o count neste select?

Código:
-- Para incluir na tela inicial dos produtos
SELECT
p.id,
g.id_grade,
CASE WHEN g.codigo_barra_pai = g.codigo_barra THEN
CAST(p.descricao || '(Principal)' AS VARCHAR(255))
ELSE 
CAST(p.descricao || ' - ' || fn_get_descricao_grade(g.id_produto,   
g.id_grade_atributo_valor) AS VARCHAR(255))
END AS descrição,
g.codigo_barra,
CAST(CAST(g.qtd_atual as integer) || '|' || u.sigla as varchar(20))  as quantidade_no_estoque,
c.descricao as classificação,
CAST(TO_CHAR(g.valor_varejo_aprazo, 'L9G999G990D99') as varchar(20)) as Valor_venda,
CAST(TO_CHAR(g.valor_atacado_aprazo, 'L9G999G990D99') as varchar(20)) as Valor_Atacado,
CAST('L' as varchar(10)) as visualizar,
CAST('''' as varchar(7)) as excluir,
CASE WHEN ((g.codigo_barra_pai = g.codigo_barra)
AND (COUNT(p.id) > 1)
) THEN
CAST('o' as varchar(10))
END AS grade,
p.prod_serv
FROM grade g
LEFT JOIN produto p ON p.id_cadastro = g.id_cadastro   
AND p.id = g.id_produto 
AND g.codigo_barra_pai = p.codigo_barra 
LEFT JOIN classificacao c on p.id_classificacao = c.id 
LEFT JOIN unidade u on p.id_unidade = u.id
WHERE p.prod_serv = 'P'
AND g.ativo = 1
AND p.ativo <> 'E' 

--AND ((upper(p.descricao) LIKE '%MANIV%') or (g.codigo_barra LIKE ''))
GROUP BY 1,2,3,4,5,6,7,8,9,10
ORDER BY 1, 3 DESC 
LIMIT 20



Quero mostrar a letra 'o' se o count for maior que 1
Código:
CASE WHEN ((g.codigo_barra_pai = g.codigo_barra)
AND (COUNT(p.id) > 1)
) THEN
CAST('o' as varchar(10))
END AS grade,


Olha a imagem contendo o ID com mais de um

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Fev 07, 2017 9:22 am    Assunto: Responder com Citação

Bom dia,

Não sei se entendi corretamente a questão, mas experimente fazer uns testes dessa forma:

Código:
with CTE_Count as
(

SELECT
p.id,
g.id_grade,
CASE WHEN g.codigo_barra_pai = g.codigo_barra THEN
CAST(p.descricao || '(Principal)' AS VARCHAR(255))
ELSE 
CAST(p.descricao || ' - ' || fn_get_descricao_grade(g.id_produto,   
g.id_grade_atributo_valor) AS VARCHAR(255))
END AS descrição,
g.codigo_barra,
CAST(CAST(g.qtd_atual as integer) || '|' || u.sigla as varchar(20))  as quantidade_no_estoque,
c.descricao as classificação,
CAST(TO_CHAR(g.valor_varejo_aprazo, 'L9G999G990D99') as varchar(20)) as Valor_venda,
CAST(TO_CHAR(g.valor_atacado_aprazo, 'L9G999G990D99') as varchar(20)) as Valor_Atacado,
CAST('L' as varchar(10)) as visualizar,
CAST('''' as varchar(7)) as excluir,

g.codigo_barra_pai,
COUNT(p.id) OVER(PARTITION BY g.codigo_barra_pai) as Quantidade_Itens,

p.prod_serv
FROM grade g
LEFT JOIN produto p ON p.id_cadastro = g.id_cadastro   
AND p.id = g.id_produto 
AND g.codigo_barra_pai = p.codigo_barra 
LEFT JOIN classificacao c on p.id_classificacao = c.id 
LEFT JOIN unidade u on p.id_unidade = u.id
WHERE p.prod_serv = 'P'
AND g.ativo = 1
AND p.ativo <> 'E' 

--AND ((upper(p.descricao) LIKE '%MANIV%') or (g.codigo_barra LIKE ''))
LIMIT 20

)

SELECT
    *,
    CAST(CASE WHEN codigo_barra_pai = codigo_barra AND Quantidade_Itens > 1
             then 'o' else '' end
         as varchar(10)) AS grade
FROM CTE_Count
ORDER BY 1, 3 DESC


Espero que ajude

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos-comercial_ou_industrial-galpão
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Fev 07, 2017 10:07 am    Assunto: Responder com Citação

imex escreveu:
Bom dia,

Não sei se entendi corretamente a questão, mas experimente fazer uns testes dessa forma:

Código:
with CTE_Count as
(

SELECT
p.id,
g.id_grade,
CASE WHEN g.codigo_barra_pai = g.codigo_barra THEN
CAST(p.descricao || '(Principal)' AS VARCHAR(255))
ELSE 
CAST(p.descricao || ' - ' || fn_get_descricao_grade(g.id_produto,   
g.id_grade_atributo_valor) AS VARCHAR(255))
END AS descrição,
g.codigo_barra,
CAST(CAST(g.qtd_atual as integer) || '|' || u.sigla as varchar(20))  as quantidade_no_estoque,
c.descricao as classificação,
CAST(TO_CHAR(g.valor_varejo_aprazo, 'L9G999G990D99') as varchar(20)) as Valor_venda,
CAST(TO_CHAR(g.valor_atacado_aprazo, 'L9G999G990D99') as varchar(20)) as Valor_Atacado,
CAST('L' as varchar(10)) as visualizar,
CAST('''' as varchar(7)) as excluir,

g.codigo_barra_pai,
COUNT(p.id) OVER(PARTITION BY g.codigo_barra_pai) as Quantidade_Itens,

p.prod_serv
FROM grade g
LEFT JOIN produto p ON p.id_cadastro = g.id_cadastro   
AND p.id = g.id_produto 
AND g.codigo_barra_pai = p.codigo_barra 
LEFT JOIN classificacao c on p.id_classificacao = c.id 
LEFT JOIN unidade u on p.id_unidade = u.id
WHERE p.prod_serv = 'P'
AND g.ativo = 1
AND p.ativo <> 'E' 

--AND ((upper(p.descricao) LIKE '%MANIV%') or (g.codigo_barra LIKE ''))
LIMIT 20

)

SELECT
    *,
    CAST(CASE WHEN codigo_barra_pai = codigo_barra AND Quantidade_Itens > 1
             then 'o' else '' end
         as varchar(10)) AS grade
FROM CTE_Count
ORDER BY 1, 3 DESC


Espero que ajude

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos-comercial_ou_industrial-galpão
Isso mesmo Imex,

Obrigado mais uma vez por ajudar amigo.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Jul 31, 2017 2:44 pm    Assunto: Responder com Citação

sobre o select acima tenho um grande problema.

Aqui nesta parte do case
Código:
CASE WHEN g.codigo_barra_pai = g.codigo_barra THEN
CAST(p.descricao || '(Principal)' AS VARCHAR(255))
ELSE 
CAST(p.descricao || ' - ' || fn_get_descricao_grade(g.id_produto,   
g.id_grade_atributo_valor) AS VARCHAR(255))
END AS descrição,

No else preciso concatenar
p.descricao com os valores. Vou tentar explicar em imagens

O select esta retornando assim


Se repararem a partir da segunda linha ja preciso concatenar com ostros campos.
Na linha 2 da grid esta trazendo apenas o id ai 100000068
já na linha 3 da grid que tenho dois id_grade_atributo_valor não esta retornando nada na célula NOME DO PRODUTO da grade.
Deveria ficar assim a grade ja com o select

Este model ai de grade é do sistema que temos na web, estou tentando fazer igual em delphi, mais como mostrei esta errado a grid em delphi.

As tabelas envolvidas são estas


Se repararem na tabela GRADE tenho o campo ID_GRADE_ATRIBUTO_VALOR com os dois ID envolvidos separado por virgula.

Tenho esta função que a principio era para retornar isso

Código:
CREATE OR REPLACE FUNCTION public.fn_get_descricao_grade(
    v_id_produto integer,
    v_id_atributo_valor character varying)
  RETURNS character varying AS
$BODY$
declare qtdReg integer;
declare i integer;
declare texto varchar(255);
declare textoAux varchar(255);
declare str_id varchar(255);
declare pos integer;
declare id_filtro integer;
begin
   IF (v_id_atributo_valor IS NULL) or (v_id_atributo_valor = '') THEN
      RETURN ' ';
   ELSE
      texto := '';
      qtdReg := CHAR_LENGTH(v_id_atributo_valor);
      raise notice 'Qtd registros: %', qtdReg;
      for i in 1..qtdReg loop     
          /*Pego o id da String de IDs*/
          raise notice '1ª v_id_atributo_valor: %', v_id_atributo_valor;
          pos := STRPOS(v_id_atributo_valor, ',');
          raise notice '1ª Pos: %', pos;
          if v_id_atributo_valor <> '' then
         if (pos = 0) then
           str_id := v_id_atributo_valor;
          else
           str_id := SUBSTR(v_id_atributo_valor, 1, pos-1);
         end if;
         raise notice 'StrId: %', str_id;
         id_filtro := cast(str_id as integer);
         /*Elimina os caracteres já recortados para as variáveis*/
         v_id_atributo_valor := SUBSTR(v_id_atributo_valor, pos+1, 5);
         raise notice '2ª v_id_atributo_valor: %', v_id_atributo_valor;
         /*Faz a verificação*/
         if str_id = ',' then
             texto := texto;
         else
             /*Monto o select com atributo e valor. EX: COR-PRETO*/
             select into textoAux gav.id_grade_atributo_valor, ga.atributo || '-' || gav.valor
             from grade_atributo_valor gav
             inner join grade_atributo ga on gav.id_atributo = ga.id_grade_atributo
             --Mgs Adriano Inclui mais este comando por causa do sincronismo Web Local
             or gav.id_atributo = ga.id_web
             where ga.ativo = 1 and gav.ativo = 1
                            and (gav.id_grade_atributo_valor = id_filtro or gav.id_web = id_filtro);
             texto := texto || textoAux || ',';
         end if;
          end if;
      end loop;
      raise notice 'sub de retorno: %', SUBSTR(texto, 1, CHAR_LENGTH(texto)-1);
      return SUBSTR(texto, 1, CHAR_LENGTH(texto)-1);
   END IF;
end
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION public.fn_get_descricao_grade(integer, character varying)
  OWNER TO postgres;


Inclusive esta sendo chamado na select acima, mais não ta dando certo.

Preciso de ajuda.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Seg Jul 31, 2017 8:31 pm    Assunto: Responder com Citação

Você está utilizando PostgreSQL né? Não tenho certeza mas também acho que o problema deve estar nessa função. Só que não tenho nenhuma experiência com o PostgreSQL, então fica complicado analisar essa função para postar alguma sugestão.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Ago 01, 2017 10:52 am    Assunto: Responder com Citação

imex escreveu:
Você está utilizando PostgreSQL né? Não tenho certeza mas também acho que o problema deve estar nessa função. Só que não tenho nenhuma experiência com o PostgreSQL, então fica complicado analisar essa função para postar alguma sugestão.
Sim postgres eu não consigo debugar esta função pra ver o problema

Será que não tem outra forma de fazer isso?

A função em MySQL que me passaram é esta aqui que faz isso segundo eles
Código:
CREATE DEFINER=`csinform`@`%` FUNCTION `fn_get_descricao_grade`(v_id_grade_atributo_valor VARCHAR(200)) RETURNS VARCHAR(255) CHARSET latin1
BEGIN
   
     IF v_id_grade_atributo_valor IS NULL THEN
    
      RETURN ' ';
    
     ELSE
      RETURN IFNULL(CONCAT(' ',(
         SELECT
         GROUP_CONCAT(p.atributo, '-', vpg.valor ORDER BY p.atributo ASC)
         FROM base_web_control.grade_atributo_valor vpg
         INNER JOIN base_web_control.grade_atributo p
          ON p.id_grade_atributo = vpg.id_atributo
         WHERE FIND_IN_SET(vpg.id_grade_atributo_valor,v_id_grade_atributo_valor)
         ORDER BY p.atributo ASC
        )),'');
   END IF;
                           
END$$

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Ago 01, 2017 11:01 am    Assunto: Responder com Citação

Desculpe mas esse caso é complicado para mim porque não tenho experiência nem com o PostgreSQL nem com o MySQL.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Ago 01, 2017 11:07 am    Assunto: Responder com Citação

imex escreveu:
Desculpe mas esse caso é complicado para mim porque não tenho experiência nem com o PostgreSQL nem com o MySQL.
Blz sem problemas amigo. Obrigado
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Ago 01, 2017 2:25 pm    Assunto: Responder com Citação

Mudei a função mais ainda não ta certo
Agora se tem um codigo na table grade no campo id_grade_atributo_valor esta mostrando como preciso


Mais se eu colocar mais de um ID ali neste campo separado por virgula não mostra nada no campo DESCRICAO daquela linha.

A função
Código:
CREATE OR REPLACE FUNCTION public.fn_get_descricao_grade_adr(v_id_grade_atributo_valor character varying DEFAULT 255) RETURNS character varying AS
$BODY$--//funcao array
declare qtdReg integer;
declare i integer;
declare texto varchar(255);
declare textoAux varchar(255);
declare str_id varchar(255);
declare pos integer;
declare id_filtro integer;
begin
   IF (v_id_grade_atributo_valor IS NULL) or (v_id_grade_atributo_valor = '') THEN
      RETURN ' ';
   ELSE
      texto := '';
      qtdReg := CHAR_LENGTH(v_id_grade_atributo_valor);
      raise notice 'Qtd registros: %', qtdReg;
      for i in 1..qtdReg loop     
          /*Pego o id da String de IDs*/
          raise notice '1ª v_id_atributo_valor: %', v_id_grade_atributo_valor;
          pos := STRPOS(v_id_grade_atributo_valor, ',');
          raise notice '1ª Pos: %', pos;
          if v_id_grade_atributo_valor <> '' then
         if (pos = 0) then
           str_id := v_id_grade_atributo_valor;
          else
           str_id := SUBSTR(v_id_grade_atributo_valor, 1, pos-1);
         end if;
         raise notice 'StrId: %', str_id;
         id_filtro := cast(str_id as integer);
         /*Elimina os caracteres já recortados para as variáveis*/
         v_id_grade_atributo_valor := SUBSTR(v_id_grade_atributo_valor, pos+1, 5);
         raise notice '2ª v_id_atributo_valor: %', v_id_grade_atributo_valor;
         /*Faz a verificação*/
         if str_id = ',' then
            texto := texto;
         else
             /*Monto o select com atributo e valor. EX: COR-PRETO*/
             select into textoAux p.atributo || ' - ' || vpg.valor
             from grade_atributo_valor vpg
             inner join grade_atributo p
             on p.id_grade_atributo = vpg.id_atributo
            --Mgs Adriano Inclui mais este comando por causa do sincronismo Web Local
             or p.id_web = vpg.id_atributo
             where vpg.ativo = 1 and p.ativo = 1
             and (vpg.id_grade_atributo_valor = id_filtro or vpg.id_web = id_filtro);
             texto := texto || textoAux || ',';
         end if;
          end if;
      end loop;
      raise notice 'sub de retorno: %', SUBSTR(texto, 1, CHAR_LENGTH(texto)-1);
      return SUBSTR(texto, 1, CHAR_LENGTH(texto)-1);
   END IF;
end
$BODY$
LANGUAGE plpgsql VOLATILE NOT LEAKPROOF
COST 255;


O select que uso para popular a dbGrid
Código:
with CTE_Count as
(

SELECT
p.id,
g.id_grade,
CASE WHEN g.codigo_barra_pai = g.codigo_barra THEN
CAST(p.descricao || '(Principal)' AS VARCHAR(255))
ELSE 
CAST(p.descricao || ' - ' || fn_get_descricao_grade_adr(
g.id_grade_atributo_valor) AS VARCHAR(255))
END AS descrição,

g.codigo_barra,
CAST(CAST(g.qtd_atual as integer) || '|' || u.sigla as varchar(20))  as quantidade_no_estoque,
c.descricao as classificação,
CAST(TO_CHAR(g.valor_varejo_aprazo, 'L9G999G990D99') as varchar(20)) as Valor_venda,
CAST(TO_CHAR(g.valor_atacado_aprazo, 'L9G999G990D99') as varchar(20)) as Valor_Atacado,
CAST('L' as varchar(10)) as visualizar,
CAST('''' as varchar(7)) as excluir,

g.codigo_barra_pai,
COUNT(p.id) OVER(PARTITION BY g.codigo_barra_pai) as Quantidade_Itens,

p.prod_serv
FROM grade g
LEFT JOIN produto p ON p.id_cadastro = g.id_cadastro   
AND p.id = g.id_produto 
AND g.codigo_barra_pai = p.codigo_barra 
LEFT JOIN classificacao c on p.id_classificacao = c.id 
LEFT JOIN unidade u on p.id_unidade = u.id
WHERE p.prod_serv = 'P'
AND g.ativo = 1
AND p.ativo <> 'E' 

--AND ((upper(p.descricao) LIKE '%MANIV%') or (g.codigo_barra LIKE ''))
LIMIT 20

)

SELECT
    *,
    CAST(CASE WHEN codigo_barra_pai = codigo_barra AND Quantidade_Itens > 1
             then 'o' else '' end
         as varchar(10)) AS grade
FROM CTE_Count
ORDER BY grade DESC

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Ago 01, 2017 3:21 pm    Assunto: Responder com Citação

Descobri o problema da função, quanto maior o tamanho do retorno maior tenho que calcular

Código:
CREATE OR REPLACE FUNCTION public.fn_get_descricao_grade_adr(v_id_grade_atributo_valor character varying DEFAULT 1500) RETURNS character varying AS
$BODY$--//funcao array tamanho
declare qtdReg integer;
declare i integer;
declare texto varchar(1500);
declare textoAux varchar(1500);
declare str_id varchar(1500);
declare pos integer;
declare id_filtro integer;
begin
   IF (v_id_grade_atributo_valor IS NULL) or (v_id_grade_atributo_valor = '') THEN
      RETURN ' ';
   ELSE
      texto := '';
      qtdReg := CHAR_LENGTH(v_id_grade_atributo_valor);
      raise notice 'Qtd registros: %', qtdReg;
      for i in 1..qtdReg loop     
          /*Pego o id da String de IDs*/
          raise notice '1ª v_id_atributo_valor: %', v_id_grade_atributo_valor;
          pos := STRPOS(v_id_grade_atributo_valor, ',');
          raise notice '1ª Pos: %', pos;
          if v_id_grade_atributo_valor <> '' then
         if (pos = 0) then
           str_id := v_id_grade_atributo_valor;
          else
           str_id := SUBSTR(v_id_grade_atributo_valor, 1, pos-1);
         end if;
         raise notice 'StrId: %', str_id;
         id_filtro := cast(str_id as integer);
         /*Elimina os caracteres já recortados para as variáveis*/
         v_id_grade_atributo_valor := SUBSTR(v_id_grade_atributo_valor, pos+1, 22);
         raise notice '2ª v_id_atributo_valor: %', v_id_grade_atributo_valor;
         /*Faz a verificação*/
         if str_id = ',' then
            texto := texto;
         else
             /*Monto o select com atributo e valor. EX: COR-PRETO*/
             select into textoAux p.atributo || ' - ' || vpg.valor
             from grade_atributo_valor vpg
             inner join grade_atributo p
             on (p.id_grade_atributo = vpg.id_atributo
            --Mgs Adriano Inclui mais este comando por causa do sincronismo Web Local
             or p.id_web = vpg.id_atributo)
             where vpg.ativo = 1 and p.ativo = 1 and
             (vpg.id_grade_atributo_valor = id_filtro or vpg.id_web = id_filtro);
             texto := texto || textoAux || ',';
         end if;
          end if;
      end loop;
      raise notice 'sub de retorno: %', SUBSTR(texto, 1, CHAR_LENGTH(texto)-1);
      return SUBSTR(texto, 1, CHAR_LENGTH(texto)-1);
   END IF;
end
$BODY$
LANGUAGE plpgsql VOLATILE NOT LEAKPROOF
COST 1500;


Primeiro aumentei este tamanho aqui de 255 para 1500, mais pelo visto o
Citação:
negocio vai aumentando se tiver muito
declare texto varchar(1500);
declare textoAux varchar(1500);
declare str_id varchar(1500);


Depois descobri outro problema aqui
v_id_grade_atributo_valor := SUBSTR(v_id_grade_atributo_valor, pos+1, 5);
Tava no final 5 por isso não mostrava o que tinha mais char na linha, ai subi para 11 seu tamanho
v_id_grade_atributo_valor := SUBSTR(v_id_grade_atributo_valor, pos+1, 11);
Ai apareceu o valor dos dois campos cfe a id_grade_atributo_valor, mais ai coloquei mais um novo codigo la 1000000071,1000000068,1000000070,
ai precisei aumentar de novo lá seu tamanho.
v_id_grade_atributo_valor := SUBSTR(v_id_grade_atributo_valor, pos+1, 22);
E ai como vou saber o tamanho final?

Funcionar, funciona, mais não sei o resultado final.

Resolvi colocar mais um codigo la, ai pra mostrar tudo tie que aumentar para 33 no final
Código:
v_id_grade_atributo_valor := SUBSTR(v_id_grade_atributo_valor, pos+1, 33);

Parece que tenho que aumentar 11 cada vez

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Ago 01, 2017 3:33 pm    Assunto: Responder com Citação

Mudei para 165 e sei la acho que ta bom assim
Código:
v_id_grade_atributo_valor := SUBSTR(v_id_grade_atributo_valor, pos+1, 165);


O tempo dirá se deu certo.

Vou deixar assim isso.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB