mestre detalhe NÂO DELETA O ULTIMO REGISTO (SC8)

AJUDA mestre detalhe Não Deleta o Ultimo Registo. FAZ tudo ( adiciono novo iten actualiza e o Valor total da factura, deleto itens e actuliza o Valor total ) MAS quando vou Deletar o ULTIMO REGISTO da Erro (Erro ao acessar o banco de dados
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘WHERE idfacturacao = ‘1’ AND cliente = ‘2101041200’’ at line 1)

View SQL

UPDATE facturacao SET valorfactura = WHERE idfacturacao = ‘1’ AND cliente = ‘2101041200’

Close )

o que não etendo que é que consigo DELETAR directo na BD ,

Por Favor Conhecidores na Materia to Pedindo a vossa Ajuda

codigo

// Calcula o Valor Total
sc_lookup(dtvalortotal,"SELECT
SUM(valor)
FROM
facturacaodetalhe
WHERE
idfacturacao = ‘[var_idfacturacao]’

                   AND
                      cliente = '[var_cliente]'");

if (empty({dtvalortotal})) { /* EOF */
$var_valor = 0;
} else {
sc_trunc_num({dtvalortotal[0][0]});
$var_valor = {dtvalortotal[0][0]};
}

//sc_trunc_num({dtvalortotal[0][0]});
//$var_valor = {dtvalortotal[0][0]};
sc_master_value(‘valorfactura’,$var_valor);

sc_exec_sql(“UPDATE facturacao SET valorfactura = $var_valor WHERE idfacturacao = ‘[var_idfacturacao]’ AND cliente = ‘[var_cliente]’”);

é porque esta vindo nulo em seu select.


//sc_trunc_num({dtvalortotal[0][0]});
//$var_valor = {dtvalortotal[0][0]};

if (is_null($var_valor)) $var_valor=“0”;

sc_master_value(‘valorfactura’,$var_valor);

sc_exec_sql(“UPDATE facturacao SET valorfactura = $var_valor WHERE idfacturacao = ‘[var_idfacturacao]’ AND cliente = ‘[var_cliente]’”);

Como está seu código aqui hoje?

// Calcula o Valor Total
sc_lookup(dtvalortotal,"SELECT
SUM(valor)
FROM
facturacaodetalhe
WHERE
idfacturacao = ‘[var_idfacturacao]’

                   AND
                      cliente = '[var_cliente]'");

if (is_null({dtvalortotal})) { /* EOF */

$var_valor = 0;

}
else

{
sc_trunc_num({dtvalortotal[0][0]});
$var_valor = {dtvalortotal[0][0]};
}

sc_master_value(‘valorfactura’,$var_valor);

sc_exec_sql(“UPDATE facturacao SET valorfactura = $var_valor WHERE idfacturacao = ‘[var_idfacturacao]’ AND cliente = ‘[var_cliente]’”);

Coloca em modo debug e apresenta o resultado.

(mysqlt): SELECT count(*) from facturacaodetalhe where idfacturacao = 1 and cliente = 2101041200 (mysqlt): SELECT iten, idfacturacao, npassagen, nsolicitacao, passageiro, valor, cliente from facturacaodetalhe where idfacturacao = 1 and cliente = 2101041200 order by iten LIMIT 0,10

(mysqlt): SET AUTOCOMMIT=0 (mysqlt): BEGIN (mysqlt): select count(*) from facturacaodetalhe where iten = 1 (mysqlt): DELETE FROM facturacaodetalhe where iten = 1 (mysqlt): SELECT SUM(valor) FROM facturacaodetalhe WHERE idfacturacao = ‘1’ AND cliente = ‘2101041200’ (mysqlt): UPDATE facturacao SET valorfactura = WHERE idfacturacao = ‘1’ AND cliente = ‘2101041200’ 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘WHERE idfacturacao = ‘1’ AND cliente = ‘2101041200’’ at line 1

                 ADOConnection._Execute(UPDATE facturacao SET valorfactura =  WHERE idfacturacao = '1' AND cliente = '2101041200', false) % line 1085, file: adodb.inc.php
              ADOConnection.Execute(UPDATE facturacao SET valorfactura =  WHERE idfacturacao = '1' AND cliente = '2101041200') % line 4070, file: form_facturacaodetalhe_apl.php
           form_facturacaodetalhe_apl.m_php_atualizafaturamento() % line 3490, file: form_facturacaodetalhe_apl.php
        form_facturacaodetalhe_apl.nm_acessa_banco() % line 1372, file: form_facturacaodetalhe_apl.php
     form_facturacaodetalhe_apl.controle_form_vert() % line 1066, file: form_facturacaodetalhe_apl.php

(mysqlt): ROLLBACK (mysqlt): SET AUTOCOMMIT=1

veja que seu $var_valor esta vindo vazio, totalmente sem valor.

ja tentei de tudo mas nada tens alguma ideia?

// Calcula o Valor Total
sc_lookup(dtvalortotal,"SELECT
SUM(valor)
FROM
facturacaodetalhe
WHERE
idfacturacao = ‘[var_idfacturacao]’

                   AND
                      cliente = '[var_cliente]'");

if (!isset({dtvalortotal})) { /* EOF */

sc_exec_sql(“UPDATE facturacao SET valorfactura = 0 WHERE idfacturacao = ‘[var_idfacturacao]’ AND cliente = ‘[var_cliente]’”);

}
else

{
sc_trunc_num({dtvalortotal[0][0]});
$var_valor = {dtvalortotal[0][0]};
sc_exec_sql(“UPDATE facturacao SET valorfactura = $var_valor WHERE idfacturacao = ‘[var_idfacturacao]’ AND cliente = ‘[var_cliente]’”);
}

sc_master_value(‘valorfactura’,$var_valor);

mesmo o seu codigo nao funciona debug

mysqlt): SELECT count(*) from facturacaodetalhe where idfacturacao = 1 and cliente = 2101041200 and (idfacturacao = 1) (mysqlt): SELECT iten, idfacturacao, npassagen, nsolicitacao, passageiro, valor, cliente from facturacaodetalhe where idfacturacao = 1 and cliente = 2101041200 and (idfacturacao = 1) order by iten LIMIT 0,10

Fechar Output
(mysqlt): SET AUTOCOMMIT=0 (mysqlt): BEGIN (mysqlt): select count(*) from facturacaodetalhe where iten = 1 (mysqlt): DELETE FROM facturacaodetalhe where iten = 1 (mysqlt): SELECT SUM(valor) FROM facturacaodetalhe WHERE idfacturacao = ‘1’ AND cliente = ‘2101041200’ (mysqlt): UPDATE facturacao SET valorfactura = WHERE idfacturacao = ‘1’ AND cliente = ‘2101041200’ 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘WHERE idfacturacao = ‘1’ AND cliente = ‘2101041200’’ at line 1

                 ADOConnection._Execute(UPDATE facturacao SET valorfactura =  WHERE idfacturacao = '1' AND cliente = '2101041200', false) % line 1085, file: adodb.inc.php
              ADOConnection.Execute(UPDATE facturacao SET valorfactura =  WHERE idfacturacao = '1' AND cliente = '2101041200') % line 4083, file: form_facturacaodetalhe_apl.php
           form_facturacaodetalhe_apl.m_php_atualizafaturamento() % line 3490, file: form_facturacaodetalhe_apl.php
        form_facturacaodetalhe_apl.nm_acessa_banco() % line 1372, file: form_facturacaodetalhe_apl.php
     form_facturacaodetalhe_apl.controle_form_vert() % line 1066, file: form_facturacaodetalhe_apl.php

tente trocar !isset por !empty

O erro é claro, esta vindo nulos.

execute um var_dump no resultset desse select.

Problema estava na posiçao do $var_valor = {dtvalortotal[0][0]};

tive que colocar depois do
sc_lookup(dtvalortotal,"SELECT
SUM(valor)
FROM
pagamentodetalhe
WHERE
idpagamento = ‘[var_idpagamento]’

                   AND
                      cliente = '[var_cliente]'");

muito obrigado HAROLDO pela Ajuda