Шаг 39 - Класс для передвижения по Recordset

Прочитав предыдущие шаги вы можете увидеть, что в шагах "Шаг 36 - Проект библиотека - Диалоговое окно - Разделы", "Шаг 34 - Проект библиотека - Диалоговое окно - Авторы - Кнопки и сохранение данных" нужно постоянно кодировать одни и те-же действия. Мол, вперед пошли, назад, в начало записей. Давайте сделаем класс, в котором будет весь этот код. И нам при кодировании нужно будет меньше работать. Назовем этот класс CDaoNavigator. В этот класс нужно будет передать указатель на набор записей.

class CDaoNavigator  
{
public:
	void SetRecordset(CDaoRecordset *cRecord);	// установить набор записей
	CDaoNavigator();
	virtual ~CDaoNavigator();	
private:
	CDaoRecordset * m_pRecord;		    	// указатель на набор записей
};


void CDaoNavigator::SetRecordset(CDaoRecordset *cRecord)
{
	m_pRecord=cRecord;
}

Теперь осталось, создать функции вперед назад, на первую, на последнею.

class CDaoNavigator  
{
public:
	void OnButtonNext();		// на следующую
	void OnButtonFirst();		// на первую
	void OnButtonPrev();		// на одну назад
	void OnButtonLast();		// на последнюю
	void SetRecordset(CDaoRecordset *cRecord);	// установить набор записей
	CDaoNavigator();
	virtual ~CDaoNavigator();	
private:
	CDaoRecordset * m_pRecord;	   	// указатель на набор записей
};

Реализуем:

void CDaoNavigator::OnButtonLast()
{
	m_pRecord->MoveLast();		// на последнюю
}

void CDaoNavigator::OnButtonPrev()
{
	m_pRecord->MovePrev();		// назад
	if (m_pRecord->IsBOF())
		m_pRecord->MoveNext();	//если вышли, то вернуть вперед
}

void CDaoNavigator::OnButtonFirst()
{
	m_pRecord->MoveFirst();		// на последнею
}

void CDaoNavigator::OnButtonNext()
{
	try
	{ 
		m_pRecord->MoveNext();	// вперед
		if (m_pRecord->IsEOF())
			throw CString("");	// если это последняя, то новая нужна
	}
	catch(...)			// если последняя то создать новую
	{
		m_pRecord->AddNew();	// новая
		m_pRecord->Update();	// подтвердить
		m_pRecord->MoveLast();	// на последнюю
	}
}

Вот и все. Теперь этот класс можно использовать в любом проекте.

В проекте находится класс CDaoNavigator упaкованный для использования в Component Gallery как ogx файл.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 11.08.2001