[RESOLVIDO] Atualizar cada linha com o valor do select

Dentro do onScriptInit coloquei o código abaixo na grid, o problema é que ele traz somente a informação da primeira linha e repete o valor para a outras linhas. Sei que esto vacilando em algo, não sei onde…

$especialidade = {idespecialidade};

//identificando a especialidade do médico / profissional
sc_lookup(rs, “SELECT COUNT(DISTINCT (especialidade_idespecialidade))
FROM evento
WHERE CHAR_LENGTH(titulo) = 10
AND especialidade_idespecialidade= $especialidade
AND sec_users_login is NULL
AND medico_idmedico IS NOT NULL”);

$registros = count({rs});
{vagas} = $registros;

if($registros == 1 ) {
{vagas} = “Disponível”;
}else{
{vagas} = “Indisponível”;
}

Coloque no OnRecord

Persiste

Bom, vamos lá:

Primeiro coloque o teu SELECT em uma variável e não diretamente no sc_lookup. Aí coloque a variável que contém o SELECT dentro do sc_lookup. Isto evita alguns problemas.
Segundo, no teu SELECT mude para a seguinte forma:

“SELECT COUNT(DISTINCT (especialidade_idespecialidade))
FROM evento
WHERE CHAR_LENGTH(titulo) = 10
AND especialidade_idespecialidade = “.$especialidade.”
AND sec_users_login is NULL
AND medico_idmedico IS NOT NULL”;

Pelo ícone do campo vagas parece ser um campo numérico

Troque para texto para receber o valor Disponível / Indisponível

tire a linha {vagas} = $registros;

Fiz mas continua do mesmo jeito, inclusive fiz também a alteração que o Rodrigo Goulart Padovezzi coloquei posteriormente para testar, mas ainda persiste…

$especialidade = {idespecialidade};

//identificando a especialidade do médico / profissional

$vaga = “SELECT COUNT(DISTINCT (especialidade_idespecialidade))
FROM evento
WHERE CHAR_LENGTH(titulo) = 10
AND especialidade_idespecialidade = “.$especialidade.”
AND sec_users_login is NULL
AND medico_idmedico IS NOT NULL”;

sc_lookup(rs, $vaga);

$registros = count({rs});

if($registros == 1 ) {
{vagas} = “Disponível”;
}else{
{vagas} = “Indisponível”;
}

Remove todo este código onScriptInit e OnRecord.

Agora coloca só isso no OnRecord:
{vagas} = “Disponível”;

E roda veja o que acontece.

Se der certo o teste a gente passa para o próximo passo.

E Detalhe este campo {vagas} esta como número mude ele o SQL = Texto.

  • Todos os campos {vagas} retorna “Disponível”;
  • O campo {vagas} foi um campo criado, e já estava como Texto, pois o Rodrigo Goulart Padovezzi sugeriu…

Ok

Agora testa com este Código no OnRecord:
//identificando a especialidade do médico / profissional

$sql="
SELECT
COUNT(DISTINCT(especialidade_idespecialidade))
FROM
evento
WHERE
CHAR_LENGTH(titulo)=10 AND especialidade_idespecialidade={idespecialidade}
AND sec_users_login is NULL AND medico_idmedico IS NOT NULL
";

sc_lookup(eventos, $sql);

if (count({eventos})>=1) {
{vagas} = “Disponível ( “.count({eventos}).” )”;
}else{
{vagas} = “Indisponível”;
}

Todos ficaram disponíveis com o valor “'1” sendo que eu deixei um zerado para que tivesse que vir indisponível, logo ele continua trazendo a informação somente da primeira linha

não de 1000 voltas, coloque em modo DEBUG e analize cada query gerada, ou de um echo por cada linha com a query montada e teste no banco

Já havia verificado o debug e está tudo certo quanto ao sql, a questão é passar o valor mesmo que percebi onde está o problema.

OK, **Código corrigido.

Testa agora com este código:

//Identificando a Especialidade do Médico / Profissional

$sql="
SELECT
COUNT(DISTINCT(especialidade_idespecialidade))
FROM
evento
WHERE
CHAR_LENGTH(titulo)=10 AND especialidade_idespecialidade={idespecialidade}
AND sec_users_login is NULL AND medico_idmedico IS NOT NULL
";

sc_lookup(eventos, $sql);

if ({eventos[0][0]}>=1) {
{vagas} = “Disponível ( “.{eventos[0][0]}.” )”;
}else{
{vagas} = “Indisponível”;
}

Obrigado a todos, e principalmente ao mestre Jailton…
Funcionou…