In response to a Delete command, the record view deletes the current record by calling the Delete member function of its associated recordset.
To implement the Delete command
OnRecordDelete starter function in class CSectionForm.TRY
{
m_pSet->Delete();
}
CATCH(CDBException, e)
{
AfxMessageBox(e->m_strError);
return;
}
END_CATCH
// Move to the next record after the one just deleted
m_pSet->MoveNext();
// If we moved off the end of file, move back to last record
if (m_pSet->IsEOF())
m_pSet->MoveLast();
// If the recordset is now empty, clear the fields left over
// from the deleted record
if (m_pSet->IsBOF())
m_pSet->SetFieldNull(NULL);
UpdateData(FALSE);
Catch any exceptions thrown by the recordset’s Delete function so that errors are reported to the user. The CDBException data member m_strError is a fairly user-friendly error message, prepared by the underlying ODBC driver.
If you want to customize the error message, you can force the error condition, then examine m_strStateNativeOrigin for a particular state or native value. You can look up error messages in the ODBC Programmer’s Reference, Appendix A, ODBC Error Codes. Enroll takes the easy approach by displaying m_strError.
For Enroll, the decision was to move to the record following the deleted record. You could move to the previous record after a delete operation or anywhere else as long as you, or the user, moves off the deleted record.