Не видя всей необходимой информации о вашем контексте и дизайне, трудно быть уверенным в том, чтобы помочь вам решить проблему, но две вещи выпадают из вашего сообщения.
Вы заявили, что в вашей базе данных есть ProductID повторяется много раз. Это может быть именно то, что вы хотите, но на первый взгляд, можно занять позицию, когда ProductID обычно является уникальным числом. Вы не указали, что ProductID является полем Key, но обычно ID является полем уникального ключа. Но это может привести к тому, что несколько записей удаляются одновременно, потому что ...
"DELETE FROM Receipt WHERE ProductID='"
специально просит удалить записи с какой бы то ни было спецификацией ProductID. Поэтому можно ожидать, что все записи с этим ProductID будут удалены. Если вы хотите удалить только одну запись, вы должны иметь уникальный идентификатор, да? Вам необходимо включить в свой ListView, даже если он скрыт, уникальный идентификатор записи, если вы хотите удалить только уникальную запись.
Пожалуйста, сообщите, если это поможет, или верните вопрос, чтобы сосредоточиться на вашей проблеме.
Добавлено после комментария ниже: Запрос / команда SQL также должны быть ограничены # Заказом на поставку. SQL выше выбирает только на основе WHERE ProductID = something
. Вам также необходимо выбрать номер заказа на основе заказа для более уникального удаления.
Что-то вроде: ГДЕ ProductID = something
И PO = something
.