Quebra por campo criado

Bom dia,
criei um campo numa consulta que contém um resultado amigável: Exemplo: se saldo >0 “Devedor” else “Credor”
o campo está sendo exibido corretamente com seu valor tratado OnRecord…

mas gostaria agora de criar uma quebra por este campo e ele nao aparece na lista de campos da quebra estática.

é possivel ou é uma limitacao ?

grato.

É possível sim, e muito simples de fazer.
Basta criar este campo no teu SQL da consulta.
Não sei qual teu banco, mas pode ser algo como:

SELECT codigo,nome,
CASE WHEN saldo > 0 THEN ‘Devedor’
WHEN saldo <= 0 THEN ‘Credor’
END as saldo
FROM tabela.

Pronto, é so usar o campo Saldo na Quebra.

Att,
Paulo.

Perfeito Paulo,
pelo que vi funcionou, o campo foi criado…
mas… quando marco ele quer seja no Editar Campos para aparecer no relatório ou na quebra para criar uma quebra por ele e executo a consulta ela dá pau…

veja meu código sql…

SELECT
C1_FILIAL,
C1_NUM,
C1_ITEM,
C1_PRODUTO,
C1_DESCRI,
C1_UM,
C1_QUANT,
C1_LOCAL,
C1_EMISSAO,
C1_QUJE,
D_E_L_E_T_,
R_E_C_N_O_,
R_E_C_D_E_L_,
CASE WHEN (C1_QUANT - C1_QUJE) > 0 THEN ‘Pendente’
WHEN (C1_QUANT - C1_QUJE) = 0 THEN ‘Atendida’
END AS SALDO1
FROM
dbo.SC1010
WHERE D_E_L_E_T_ <> “*”
ORDER BY C1_EMISSAO ASC

o erro que dá:

Atenção
Erro ao acessar o banco de dados
Incorrect syntax near the keyword ‘CASE’.
SelectLimit(SELECT C1_FILIAL, C1_EMISSAO, C1_NUM, C1_ITEM, C1_PRODUTO, C1_DESCRI, C1_UM, C1_QUANT, C1_QUJE, C1_LOCAL, C1_USRCODE CASE WHEN (C1_QUANT - C1_QUJE) > 0 THEN ‘Pendente’ WHEN (C1_QUANT - C1_QUJE) = 0 THEN ‘Atendida’ END as saldo1, R_E_C_N_O_ from dbo.SC1010 where D_E_L_E_T_ <> “*” order by C1_FILIAL asc, C1_USRCODE CASE WHEN (C1_QUANT - C1_QUJE) > 0 THEN ‘Pendente’ WHEN (C1_QUANT - C1_QUJE) = 0 THEN ‘Atendida’ END asc, C1_NUM asc, C1_EMISSAO ASC, 25, 0)

Estou usando MIcrosoft SQL Server…

obrigado pelo apoio…

Olá, fiz um teste aqui e tudo OK.

SELECT
lanctocxa,
datalancto,
contacxa,
entrada,
saida,
saldo,
cxadocto,
CASE WHEN (entrada - saida) > 0 THEN ‘Pendente’
WHEN (entrada - saida) = 0 THEN ‘Atendida’
END AS SALDO1
FROM
“public”.caixa

Verifique o SQL SERVER com o CASE e a sintaxe correta.

Att,
Paulo.

Ok Paulo, obrigado mais uma vez…
mas parece termos um problema:

eu recrio a consulta e coloco a instrução SQL, tudo corre bem…

preciso mexer nela…altero, por exemplo invertendo os valores dados ao campo que eu criei…

a consulta nao reconhece a alteração, mesmo salvando, gerando fonte, executando, etc…

entao meu problema começou aí, minha instrução SQL foi lapidada no decorrer do desenvolvimento…e parece ter um bug aí,
faça um teste invertendo os valores de resultado do campo…salve, gere, e veja se o novo codigo gerado contempla a sua alteração no código SQL gerado.

  • acabo de descobrir que se eu quiser que a consulta sofra as alteracoes feitas na sintaxe SQL para a criacao deste campo eu tenho que mudar o nome dele a cada vez que o fizer…exemplo SALDO1 … SALDO2

trocando de nome ele altera a consulta, mas porque ?

grato.

Não faço idéia, são coisas que nem ‘Freud’ explica. Rssss.

No meu banco PostgreSQL não tenho este problema, deve ser algo do teu banco.
Recrio, mexo, altero, recompilo e tudo OK.
Testei no SC 7.1 e 8.0.

O que você pode fazer é criar uma VIEW ao invés do SQL direto na consulta.

Att,
Paulo.

Obrigado Paulo !

foi muito prestativo e esclarecedor, estou entrando agora no mundo SC e espero em breve contribuir com algo.

sds.