void tb_TextChanged(object sender, EventArgs e)
{
var enteredText = (sender as TextBox).Text
...
}
Если ваши данные действительно упорядочены по возрастанию, когда вы их показываете, тогда проще использовать поле идентификатора суррогатного ключа.
SELECT packages_sent
FROM packages
WHERE ID =
(SELECT max(ID)
FROM packages
WHERE date <= '2017-05-29');
Поскольку идентификатор всегда увеличивается с датой и отправленным заказом, обнаружение его максимума также находит максимум двух других за один шаг.