Buenas,
Viendo por encima tu codigo esta claro que la linea conflicitiva es la que calcula la cantidad antes de hacer el update:
Código Java:
Ver originallong Calcula
= rs.
getLong("Cantidades") - Long.
valueOf(tD.
getValueAt(x,
0).
toString().
replace(",",
""));
En mi opinion, y sin saber como esta el resto de tu codigo, me da la sensacion de que cuando haces tD.getValueAt(x, 0) estas recuperando la primera columna de cada fila, que se debe corresponder con el ID del producto.
Por tanto, estas restando de el ID en lugar de la cantidad.
Un saludo