Dynamic SQL Error. expression evaluation not supported.
12/12/2016
0
Boa Tarde
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
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
+ 0
Responder
Post mais votado
12/12/2016
Paulo.
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
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
Responder
Mais Posts
16/12/2016
Paulo Agnezze
Boa tarde a todos
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
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
Responder
Clique aqui para fazer login e interagir na Comunidade :)