Caros senhores.
Estou necessitando selecionar alguns registros de uma tabela para deletar, a partir de outra tabela, porém estou encontrando problemas.
Explico.
Tenho um formulário (Form_IpPessoa) baseado na tabela (tbIpPessoa), onde registro as pessoas envolvidas em um inquérito, com os seguintes campos:
idTab1, chave primária
nomTab1,chave primária
sitTab1
Neste formulário, caso o usuário queira deletar uma pessoa, preciso que seja verificado em outra tabela (tbIpPessoaMandado), onde ficam registrados as pessoas que tem mandado de prisão expedidos, e antes de excluir a pessoa na tbIpPessoa, sejam excluídos a pessoa da tbIpPessoamandado.
Como estou tentando fazer?
No evento onBeforeDelete do formulário Form_IpPessoa, criei um select que cheka se na tb_IpPessoaMandado, existe registro da mesma pessoa.
$var1 = {tbIP_idIP}; //guarda nesta variável o valor do campo {tbIp_idIP} do Form_IpPessoa
$var2 = {tbPessoa_idPessoa};//guarda nesta variável o valor do campo {tbIp_idIP} do Form_IpPessoa.
//cria um select para selecionar os registros para deletar na tabela tbIpPessoaMandado
$sql = “SELECT
idPessoaMandado,
tbIP_idIP,
tbPessoa_idPessoa
FROM
tbIpPessoaMandado
WHERE
tbIP_idIP = '”.$var1."’ and tbPessoa_idPessoa = ‘".$var2."’";
sc_select(rs, $sql);
if (false == {rs})
{
echo “ERRO DE PESQUISA”;
}
elseif ({rs}->EOF)
{
echo “REGISTRO NÃO ENCONTRADO”;
}
else
{
$campo0 = $rs->fields[0];
$campo1 = $rs->fields[1];
$campo2 = $rs->fields[2];
$delete_table = 'tbIpPessoaMandado'; //Nome da tabela
// $delete_where = “$campo1 = $var1 and $campo2 = $var2”; //Cláusula Where
// $delete_where = “$campo0 = '”.$rs->fields[0]."’"; //Cláusula Where
$delete_where = “$campo0”; //Cláusula Where
$delete_sql = 'DELETE FROM ' . $delete_table
. ' WHERE ' . $delete_where;
//fazer enquanto não for fim de arquivo
while (!$rs->EOF)
{
if($campo1 == $var1 and $campo2 == $var2)
{
sc_exec_sql($delete_sql);
}
$rs->MoveNext();
}
$rs->Close();
}
Ocorre que apesar de o select encontrar os registros, na hora de deletar ele apaga todos os
registros da tabela tbIpPessoaMandado e não os que foram encontrados pelo comando SELECT.
Usei a Cláusula WHERE das três formas acima (em vermelho) e sempre deleta todos os registros.
Alguém pode dar uma olhada para me ajudar?
Obrigado pela atenção.