Variavel global no MySql

(dgidgio) #1

Tenho a seguinte situação:

Tabela com o nome ‘teste’
Campos: nome(varchar,20), ano(inteiro)
Valores:
nome ano
nome1 2010
nome1 2011
nome3 2012

Pretendo na consulta criada no sriptcase, colocar uma nova coluna chamada ‘valor’ que terá os valores ‘certo’ ou ‘errado’ conforme o valor de ano passado por parãmetro seja igual ao campo ‘ano’.

Fiz assim no SQL:

SELECT
nome,
ano,
IF(ano = “[ano]”,“certo”,“errado”) as valor
FROM
teste

o resultado (colocando no parãmetro quando inicia a aplicação: 2012) é o seguinte:
nome ano valor
nome1 2010 errado
nome1 2011 errado
nome3 2012 errado

Como se pode verificar, o último registo deveria dar ‘certo’ mas colocou ‘errado’.

Mas o comando SQL funciona se em vez de colocar o parãmetro, colocar um valor para o ano no IF:

SELECT
nome,
ano,
IF(ano = “2012”,“certo”,“errado”) as valor
FROM
teste

o resultado é o seguinte:
nome ano valor
nome1 2010 errado
nome1 2011 errado
nome3 2012 certo

Assim já deu certo porque coloquei “2012” em vez de [ano] no IF.
Mas eu pretendo colocar a variável global [ano].

O que estou fazendo de errado? Alguém sabe?

Um abraço

(Haroldo) #2

coloque em modo debug (aplicação/configuração) e analise o código. Se a váriável estiver vindo vazia, não alimentada, vai dar errado mesmo.

(dgidgio) #3

Não aparece o ano definido na variável.

aparece:

SELECT nome, ano, IF(ano = “[sm_global_anotrabalho]”,“certo”,“errado”) as valor from teste LIMIT 0,17

(Bernhard) #4

Boa tarde,

Não sei se o Sr. está implementar um outro código, e tomou este apenas como exemplo. Mas não seria mais simples criar um campo virtual no ScriptCase e no evento onRecord, preencher o valor deste campo com certo ou errado de acordo com seu valor?

ex:

if ({ano} == [var]) { {valor} = "errado"; } else { {valor} = "certo"; }

Atenciosamente,
Bernhard Bernsmann

(dgidgio) #5

Valeu Sr. Bernhard.
Funcionou na perfeição.
Obrigadão.
Iniciei-me no scriptcase há pouco tempo (1 mês) e ainda tenho muito para aprender.

Já agora poderia dizer-me como resolver outra situação?

Tenho uma aplicação de formulário com os campos: codigo, nome, familia e preço
O campo ‘codigo’ é chave primária.

Quero que o campo ‘código’ fique desactivado no modo de actualização. Para tal vou às configurações do campo ‘código’ e coloco na opção ‘DESACTIVAR CAMPO’ o valor '‘MODO DE ACTUALIZAÇÃO’.

Realmente o campo fica desactivado mas tem um problema: não deixa eliminar os registos. Dá erro.
Isto acontece em todos os formulários em que coloco os campos-chave primária desactivados em modo de actualização.

Como contorno esta situação?
Eu queria realmente que não fosse possível alterar os campos chave-primária em modo de actualização.

Um abraço

(Bernhard) #6

Bom dia,

Como a macro sc_field_disabled está com um problema no momento de deletar registros, o Sr. poderia utilizar a macro sc_field display. No evento onLoad do formulário, verificaria se o campo ID está vazio - pois se estiver, então ele deve aparecer. E caso não esteja (vazio), ele não deve aparecer.

Apesar da explicação um pouco confusa, com o código de exemplo abaixo acredito que o Sr. entenderá:

if (!empty({Campo})) { sc_field_display({Campo}, off); }

Atenciosamente,
Bernhard Bernsmann

(dgidgio) #7

Ok, percebido.

Obrigado