Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовой проект / Kyrsovik / DBKino_Last_Release / CFilm
.cpp#include "stdafx.h"
#include "CFilm.h"
CFilm::CFilm( CDatabase* pDatabase )
:CRecordset(pDatabase)
{
m_nFields = 4;
}
CFilm::~CFilm()
{
}
void CFilm::DoFieldExchange(CFieldExchange* pFX)
{
pFX -> SetFieldType(CFieldExchange::outputColumn);//(CFieldExchange* pFX);
RFX_Text(pFX, _T("Nazvanie"), s_FilmName, 100);
RFX_Text(pFX, _T("Proizv"), s_WorkFilm, 30);
RFX_Text(pFX, _T("Regis"), s_Regiessiuer, 100);
RFX_Text(pFX, _T("Genre"), s_Genre, 25);
}
void CFilm::GetFilmInfo(CMapStringToPtr* ptrMap)
{
CDatabase db;
db.Open("DBKino_MAccess", FALSE, FALSE, "ODBC;");
CRecordset RecSet( &db );// Набор записей
try
{
RecSet.Open(CRecordset::forwardOnly,"SELECT* FROM Film");//множество записей доступных только для чтения (::forwardOnly)
do{
RecSet.GetFieldValue(0, s_FilmName);
RecSet.GetFieldValue(1, s_WorkFilm);
RecSet.GetFieldValue(2, s_Regiessiuer);
RecSet.GetFieldValue(3, s_Genre);
void *ptr = new CFilm(s_FilmName,s_WorkFilm,s_Regiessiuer,s_Genre);
(*ptrMap)[s_FilmName] = ptr;
ptr = 0;
delete ptr;
RecSet.MoveNext();
}
while( !RecSet.IsEOF() );
RecSet.Close();
db.Close();
}
catch(CDBException* pException)
{
AfxMessageBox( pException -> m_strStateNativeOrigin );
AfxMessageBox( pException -> m_strError );
pException -> Delete();
}
}
void CFilm::AddFilmInfo(CMapStringToPtr* ptrMap, CFilm* ptrFilm)
{
CDatabase db;
db.Open("DBKino_MAccess", FALSE, FALSE, "ODBC;");
CFilm RecSet ( &db );
try
{
if(!RecSet.Open(CRecordset::snapshot,"SELECT* FROM Film"))
// Никакие другие мой ODBC не поддерживает(dynamic,dynset)
{AfxMessageBox("Can Not Open 'Recordset' !"); return;}
if(!RecSet.CanAppend())
{AfxMessageBox("function CanAppend is Failure! ( No Field Values Were Set! )"); return;}
if(!RecSet.CanUpdate())
{AfxMessageBox("function CanUpdate is Failure! ( Can't Update Database! )"); return;}
RecSet.AddNew();
RecSet.s_FilmName = ptrFilm->s_FilmName;
RecSet.s_WorkFilm = ptrFilm->s_WorkFilm;
RecSet.s_Regiessiuer = ptrFilm->s_Regiessiuer;
RecSet.s_Genre = ptrFilm->s_Genre;
RecSet.Update();
RecSet.Close();// Закрытие набора записей
db.Close();//Закрытие БД
}
catch (CDBException* pException)
{
AfxMessageBox( pException -> m_strStateNativeOrigin );
AfxMessageBox( pException -> m_strError );
pException -> Delete();
}
void* ptr;
if((*ptrMap).Lookup(ptrFilm->s_FilmName, ptr))
{
AfxMessageBox("Названия фильмов не могут повторяться !", MB_ICONINFORMATION);
return;
}
else
{
ptr = ((void *)ptrFilm);
(*ptrMap)[ptrFilm->s_FilmName] = ptr;
}
}
void CFilm::DelFilmInfo(CMapStringToPtr* ptrMap, CString Str)
{
int nItem = -1;
int I = 0;
CDatabase db;
db.Open("DBKino_MAccess", FALSE, FALSE, "ODBC;");
CFilm RecSet ( &db );
try
{
if(!RecSet.Open(CRecordset::snapshot, "SELECT* FROM Film"))
{AfxMessageBox("Can Not Open 'Recordset' !"); return;}
do{
RecSet.Move(I);
I=1;
nItem ++ ;
}while(RecSet.s_FilmName != Str);
RecSet.Delete();
if(!RecSet.IsDeleted())
{
AfxMessageBox("Нельзя удалить !");
}
void* ptr;
if((*ptrMap).Lookup(Str, ptr))//RemoveKey(Str)){}
{
CFilm* _film = ((CFilm*)ptr);
delete _film;
(*ptrMap).RemoveKey(Str);
}
else {AfxMessageBox("В архиве не найден фильм (НЕпредвиденная ошибка)");return;}
// {AfxMessageBox("Удалено из Словаря", MB_ICONINFORMATION);}
// else {AfxMessageBox("Не удаётся удалить из Словаря !", MB_ICONSTOP);}
RecSet.Close();
db.Close();
}
catch(CDBException* pException)
{
AfxMessageBox( pException -> m_strStateNativeOrigin );
AfxMessageBox( pException -> m_strError );
pException -> Delete();
}
}
void CFilm::EditFilmInfo(CMapStringToPtr* ptrMap, CString Str, CFilm* ptrFilm)
{
CDatabase db;
db.Open("DBKino_MAccess", FALSE, FALSE, "ODBC;");
CFilm RecSet ( &db );
int nItem = -1;
int I = 0;
try
{
if(!RecSet.Open(CRecordset::snapshot,"SELECT* FROM Film"))
{AfxMessageBox("Can Not Open 'Recordset' !"); return;}
if(!RecSet.CanAppend())
{AfxMessageBox("function CanAppend is Failure! ( No Field Values Were Set! )"); return;}
if(!RecSet.CanUpdate())
{AfxMessageBox("function CanUpdate is Failure! ( Can't Update Database! )"); return;}
do{
RecSet.Move(I);
I=1;
nItem ++ ;
}while(RecSet.s_FilmName != Str);
RecSet.Edit();
RecSet.s_FilmName = ptrFilm->s_FilmName;
RecSet.s_WorkFilm = ptrFilm->s_WorkFilm;
RecSet.s_Regiessiuer = ptrFilm->s_Regiessiuer;
RecSet.s_Genre = ptrFilm->s_Genre;
RecSet.Update();
RecSet.Close();
db.Close();
}
catch (CDBException* pException)
{
AfxMessageBox( pException -> m_strStateNativeOrigin );
AfxMessageBox( pException -> m_strError );
pException -> Delete();
}
void* ptr;
if((*ptrMap).Lookup(Str, ptr))//RemoveKey(Str)){}
{
CFilm* _film = ((CFilm*)ptr);
delete _film;
(*ptrMap).RemoveKey(Str);
}
else {AfxMessageBox("В архиве не найден фильм (НЕпредвиденная ошибка)");return;}
//{AfxMessageBox("Удалено из Словаря для Записи Новых Значений", MB_ICONINFORMATION);}
//else {AfxMessageBox("Не удаётся удалить из Словаря для Записи Новых Значений !", MB_ICONSTOP);}
ptr = ((void *)ptrFilm);
(*ptrMap)[s_FilmName] = ptr;
}
Соседние файлы в папке DBKino_Last_Release