Fórum Dynamic SQL Error. expression evaluation not supported. #572547
12/12/2016
0
como solucionar este erro no firebird
-- LOCALIZAR O PROXIMO CODIGO VAGO CAMPO TIPO VARCHAR()
-- na primeira linha eu concateno as 4 primeiras posições do código + as 3 últimas posicoes transformadas em inteiro somando + 1,
-- que já ira devolver o próximo código vago disponível,
-- no where só estou dizendo para selecionar somente os que começem com a mesma seção e grupo passado via aplicação ou procedure etc...,
-- e o AND NOT EXISTS eu falo para retornar linhas do select onde não exista uma consulta onde o código seja igual ao código novo já somado
-- com um 1 que seria o próximo,
-- o TOP 1 só diz para ele devolver uma linha, pois o legal dessa query que fiz é que se vc tiver 10 "buracos" nos registros tipo do 4 ao 10
-- está vago então essa query vai trazer todos os vagos já, basta alterar o TOP 1 para TOP a quantidade de próximos códigos disponíveis que vc quiser,
SELECT FIRST 1 cast(substring(c.CODIGO_BARRA from 1 for 4) as integer ) || lpad(cast(substring(c.CODIGO_BARRA from 5 for 7) + 1 as integer))
from COD_BARRAS as c
WHERE substring(c.CODIGO_BARRA from 1 for 4) = '0851'
AND NOT EXISTS(
SELECT cb.CODIGO_BARRA FROM COD_BARRAS cb
WHERE cb.CODIGO_BARRA = substring(cb.CODIGO_BARRA from 1 for 4) || lpad( cast( substring(cb.CODIGO_BARRA from 5 for 7) + 1 as integer) )
AND substring(cb.CODIGO_BARRA from 1 for 4) = '0851' )
alguem pode me ajudar a resolver este erro:
Dynamic SQL Error.
expression evaluation not supported.
Strings cannot be added or subtracted in dialect 3.
Essa dúvida foi gerada a partir de um comentário no artigo Seja um autor DevMedia
Paulo Agnezze
Curtir tópico
+ 0Post mais votado
12/12/2016
Seu erro está aqui
expression evaluation not supported. Strings cannot be added or subtracted in dialect 3.
É como se ele estivesse tentando somar antes de você converter para int.
Grande abs
Luiz Santos
Gostei + 1
Mais Posts
13/12/2016
Paulo Agnezze
Gostei + 0
16/12/2016
Paulo Agnezze
Resolvi em parte o erro
SELECT FIRST 1 substring(c.CODIGO_BARRA from 1 for 4) || LPAD(substring(c.CODIGO_BARRA from 5 for 7),3) AS CODIGO_NOVO
from COD_BARRAS as c WHERE substring(c.CODIGO_BARRA from 1 for 4) = '0854'
AND NOT EXISTS(
SELECT CODIGO_BARRA FROM COD_BARRAS
WHERE CODIGO_BARRA = substring(c.CODIGO_BARRA from 1 for 4) || LPAD(substring(c.CODIGO_BARRA from 5 for 7),3)
AND substring(c.CODIGO_BARRA from 1 for 4) = '0854' )
resultado da consulta
CODIGO_NOVO
0854001
Agora esta só faltando somar +1 , ai que esta o problema comando lpad nao aceita cast as integer
no aguardo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)