Do not concatenate strings to build a SQL command. It leaves you wide open to accidental or deliberate SQL Injection attack which can destroy your entire database. Use Parametrized queries instead.
using (cmd = new OleDbCommand("SELECT InvoiceNo,p_custname,payment_date,FinalTotal,P_totalpayment,P_paymentdue,Reminder_Date from Payment where Reminder_Date = @DT, con))
{
cmd.Parameters.AddWithValue("@DT", System.DateTime.Now);
...
}
And you problem will also disappear...