Erro com o comando Update no Evento OnAfterDelete

Boa tarde, senhores,
Faz pouco tempo que comecei a usar o Scriptcase e estou com um erro no comando update no evento OnAfterDelete.

Segue o código e na sequencia o erro que aparece:

$sql = "SELECT * FROM dados_cadastrais WHERE id_subeixo = ".{id_subeixo};
sc_lookup(rs, $sql);
$cont = count({rs});

$vagas_disp = 20 - $cont;

$update_sql = “Update sub_eixo set vagas_disp =’”.$vagas_disp. "’ where id = ".{id_subeixo};
sc_exec_sql ($update_sql);

o erro que aparece no modo debug:

(pdo-mysql): SELECT * FROM dados_cadastrais WHERE id_subeixo = 
1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1

ADOConnection._Execute(SELECT * FROM dados_cadastrais WHERE id_subeixo = , false) % line 1149, file: [adodb.inc.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/prod/third/adodb/adodb.inc.php) ADOConnection.Execute(SELECT * FROM dados_cadastrais WHERE id_subeixo = ) % line 5488, file: [form_dados_cadastrais_apl.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/app/cm_educacao/form_dados_cadastrais/form_dados_cadastrais_apl.php) form_dados_cadastrais_apl.nm_acessa_banco() % line 1370, file: [form_dados_cadastrais_apl.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/app/cm_educacao/form_dados_cadastrais/form_dados_cadastrais_apl.php) form_dados_cadastrais_apl.controle() % line 2350, file: [index.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/app/cm_educacao/form_dados_cadastrais/index.php)

(pdo-mysql): Update sub_eixo set vagas_disp ='19' where id = 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1

ADOConnection._Execute(Update sub_eixo set vagas_disp ='19' where id = , false) % line 1149, file: [adodb.inc.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/prod/third/adodb/adodb.inc.php) ADOConnection.Execute(Update sub_eixo set vagas_disp ='19' where id = ) % line 5518, file: [form_dados_cadastrais_apl.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/app/cm_educacao/form_dados_cadastrais/form_dados_cadastrais_apl.php) form_dados_cadastrais_apl.nm_acessa_banco() % line 1370, file: [form_dados_cadastrais_apl.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/app/cm_educacao/form_dados_cadastrais/form_dados_cadastrais_apl.php) form_dados_cadastrais_apl.controle() % line 2350, file: [index.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/app/cm_educacao/form_dados_cadastrais/index.php)

Se alguém puder dar alguma ajuda, agradeço desde já!

Olá, @rafabonatelli,

Você colocou o código no evento errado. Esse código você deve colocar no onBeforeDelete, uma vez que no onAfterDelete o registro não existe mais e então perde o id (no caso o campo {id_subeixo}) pra pesquisar.

Olá @Kleyber,

Coloquei no evento OnBeforeDelete e ainda apareceu o mesmo erro:

(pdo-mysql): SELECT * FROM dados_cadastrais WHERE id_subeixo = 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1

ADOConnection._Execute(SELECT * FROM dados_cadastrais WHERE id_subeixo = , false) % line 1149, file: [adodb.inc.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/prod/third/adodb/adodb.inc.php) ADOConnection.Execute(SELECT * FROM dados_cadastrais WHERE id_subeixo = ) % line 4308, file: [form_dados_cadastrais_apl.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/app/cm_educacao/form_dados_cadastrais/form_dados_cadastrais_apl.php) form_dados_cadastrais_apl.nm_acessa_banco() % line 1370, file: [form_dados_cadastrais_apl.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/app/cm_educacao/form_dados_cadastrais/form_dados_cadastrais_apl.php) form_dados_cadastrais_apl.controle() % line 2350, file: [index.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/app/cm_educacao/form_dados_cadastrais/index.php)

(pdo-mysql): Update sub_eixo set vagas_disp ='19' where id = 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1

ADOConnection._Execute(Update sub_eixo set vagas_disp ='19' where id = , false) % line 1149, file: [adodb.inc.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/prod/third/adodb/adodb.inc.php) ADOConnection.Execute(Update sub_eixo set vagas_disp ='19' where id = ) % line 4338, file: [form_dados_cadastrais_apl.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/app/cm_educacao/form_dados_cadastrais/form_dados_cadastrais_apl.php) form_dados_cadastrais_apl.nm_acessa_banco() % line 1370, file: [form_dados_cadastrais_apl.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/app/cm_educacao/form_dados_cadastrais/form_dados_cadastrais_apl.php) form_dados_cadastrais_apl.controle() % line 2350, file: [index.php](file:///C:/Program%20Files/NetMake/v9-php73/wwwroot/scriptcase/app/cm_educacao/form_dados_cadastrais/index.php) 

Continua perdendo o Id.

Esse SELECT funciona quando você executa diretamente no banco?
(SELECT * FROM dados_cadastrais WHERE id_subeixo = 1064)

Funciona @Kleyber,
Coloquei até no evento OnLoad só pra ver se ele tava pegando correto o Id do sub-eixo do cadastro e também deu certo.

Só no delete que tá dando problema

Se reparares na tela de erro no onBeforeDelete, o código também está vindo corretamente. Esse é todo o código que tens no onBeforeDelete ou tem mais alguma coisa?

@Kleyber, só tem esse código mesmo

Entendi. Bem, eu faria da seguinte forma:

$sql = "SELECT COUNT(*) FROM dados_cadastrais WHERE id_subeixo = ".{id_subeixo};
sc_lookup(rs, $sql);
$cont = {rs[0][0]};

$vagas_disp = 20 - $cont;

$update_sql = “UPDATE sub_eixo SET vagas_disp =’”.$vagas_disp. "’ WHERE id = ".{id_subeixo};
sc_exec_sql ($update_sql);

Mas antes de testar o código acima, dê um

echo {id_subeixo};

Antes de todo o código pra saber se está vindo informação desse campo.

@Kleyber, deu o echo no evento onLoad pra testar e ele pega certo o Id, porém teste o seu códio e retorna o mesmo erro

O echo é pra ser dado no evento onBeforeDelete pra se ter certeza de que o conteúdo do campo que está indo para o evento… Uma dúvida… você apagou o código do evento onAfterDelete?

@Kleyber sim apaguei do evento OnAfterDelete

Coloquei o echo no evento OnBefereDelete, ele apaga e não mostra o id

humm então tem algo estranho por aí… tens código no onValidate ou em outro evento?

Esse mesmo código tem no evento OnAfterInsert e no OnAfterUpdate e lá funcionam

Bem, é difícil dizer quando tem outros códigos envolvidos em outros eventos, mesmo que seja o mesmo código. O que está estranho é que no onBeforeDelete o ID esteja vindo vazio, pois como o DELETE ainda não foi executado, ele deveria aparecer… Aí eu não sei mais como te ajudar… desculpe. Talvez outro colega possa entender melhor o que está acontecendo ai.

Blz, obrigado pela ajuda @Kleyber