Problemas com variável global

(wetsite) #1

Prezado Srs,

Estou com o seguinte problema, criei um um filtro que gera pra mim três variável e redireciona para uma grid, nessa grid o sql recebe essas variável para o funcionamento. As variáveis aparecem apenas em parte do código, coloquei em modo debug e aparece assim:

SELECT LICENCA_INICIO, LICENCA_TERMINO, LICENCA_FRACAO, (
CASE WHEN LICENCA_TERMINO < “[liCENCA_TERMINO]”
THEN (
CASE WHEN “[liCENCA_INICIO]” > LICENCA_INICIO
THEN DATEDIFF( LICENCA_TERMINO, “[liCENCA_INICIO]” ) +1
ELSE LICENCA_DIAS END)
ELSE DATEDIFF( “[liCENCA_TERMINO]”, LICENCA_INICIO ) +1 END)
AS dias
FROM cad_licenca
WHERE LICENCA_CIDADE = “739001”
AND ((LICENCA_INICIO BETWEEN “2010-07-06” AND “2010-07-11”)
OR (LICENCA_TERMINO BETWEEN “2010-07-06” AND “2010-07-11”))

Como vcs podem ver, a variável que contém as dadas aparecem no final do código, mas dentro dos Cases, aparece com [variavel].

O que poderia ser isso e como resolver.

De já agradeço.

(Yuri Esteves) #2

A variavel utilizada para as funções case utilizadas são de Datas? ou qualquer valor que colocar vai ficar dessa forma?

Qual o Banco de dados utilizado nessa aplicação?

(wetsite) #3

Prezado Yuri,

Inicialmente agradeço a atenção e ajuda. Uso banco de dados mysql.

Na verdade, “[liCENCA_INICIO]” e “2010-07-06”, são a mesma coisa, porém na parte de cima do código a data não veio e sim o código “[liCENCA_INICIO]” e na parte debaixo a data veio como deveria. A mesma coisa vale para liCENCA_TERMINO.

Assim, respondendo sua pergunta, as funções case utilizadas são de Datas, na verdade as mesmas mostradas na parte debaixo do script, ou seja, na parte de cima do código a variável veio e abaixo não veio.

Não consigo resolver, peço ajuda.

(Haroldo) #4

pode colar o SQL original aqui?

(wetsite) #5

Bom dia Harold,

Agradeço pela ajuda, segue SQL:

SELECT LICENCA_INICIO, LICENCA_TERMINO, LICENCA_CIDADE, (
CASE WHEN LICENCA_TERMINO < “[liCENCA_TERMINO]”
THEN (
CASE WHEN “[liCENCA_INICIO]” > LICENCA_INICIO
THEN DATEDIFF( LICENCA_TERMINO, “[liCENCA_INICIO]” ) +1
ELSE LICENCA_DIAS END)
ELSE DATEDIFF( “[liCENCA_TERMINO]”, LICENCA_INICIO ) +1 END)
AS DIAS
FROM cad_licenca
WHERE LICENCA_CIDADE = “[liCENCA_CIDADE]”
AND ((LICENCA_INICIO BETWEEN “[liCENCA_INICIO]” AND “[liCENCA_TERMINO]”)
OR (LICENCA_TERMINO BETWEEN “[liCENCA_INICIO]” AND “[liCENCA_TERMINO]”))

(Haroldo) #6

Mude o nome da váriável global, adquira um padrão, algo como uma sigla_nomevar.
Evite usar nome de variáveis iguais as das colunas de suas tabelas, o sc internamente pode criar variáveis com o mesmo nome.

(wetsite) #7

Prezado Horold,

A verdade é que usei o mesmo nome do campo uma vez que antes tentei usar apenas como variável comum {variável} e como não funcionou, fui tentando de outras formas. Já tentei também colocar nomes diferentes mas com poucoa alteração como [variável1] e assim por diante. Até agora não funcionou. Farei novos testes, observando suas orientações e e posto o resultado aqui. Desde já agraço a ajuda.