Soys unos maquinas ya funciona!!!
Parecera una tonteria pero llevo todo el puto dia con esto. La Solucion:
Código Delphi
[-]query.SQL.Text := 'UPDATE ' + bdticket + ' SET ptotal = total, pagado = agado, debe = :debe ' + 'where id = :id';
query.Prepare;
query.ParamByName('ptotal').AsFloat := StrToFloat(ptotal.Caption);
query.ParamByName('pagado').AsFloat := StrToFloat(editentrega.Text);
query.ParamByName('debe').AsFloat := resto;
query.ParamByName('id').AsInteger := idcabecera;
por cierto donde salen las caritas hay que poner dospuntospe vale?