Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовой проект / Kyrsovik / TheOne / TOneTable
.cpp#include "StdAfx.h"
#include ".\tonetable.h"
#include "tonedatabase.h"
#include "sqlfilter.h"
#include "tonerow.h"
#include "afxdb.h"
CTOneTable::CTOneTable(void): CRecordset((CDatabase*)(&(CTOneDataBase::Instance())))
{
m_iID = 0;
}
CTOneTable::~CTOneTable(void)
{
}
CString& CTOneTable::TableName()
{
return m_TableName;
}
bool CTOneTable::AddEntity(CMapStringToPtr &values)
{
bool result = true;
this->Open(CRecordset::snapshot, TableName());
if(this->CanAppend() && this->CanUpdate())
{
CString message = OnAddCheck(values);
if(message != "")
{
AfxMessageBox(message, MB_OK | MB_ICONSTOP);
result = false;
}
else
{
this->AddNew();
OnAddFill(values);
this->Update();
}
}
this->Close();
return result;
}
CString CTOneTable::GetListSql()
{
CString sql = "select * from ";
sql += TableName();
sql += " ";
return sql;
}
bool CTOneTable::List(CListObjectPtr &obj, CListObjectPtr &filters)
{
obj.RemoveAll();
bool result = true;
CString sql = GetListSql();
bool bAddWhere = true;
CString id_name = TableName().MakeLower();
id_name += "_id";
if(!filters.IsEmpty())
{
void *ptr = NULL;
for(POSITION position = filters.GetHeadPosition(); position != NULL; ptr = filters.GetNext(position))
{
if(bAddWhere)
{
sql += " where ";
}
if(bAddWhere)
{
bAddWhere = false;
}
else
{
sql += " and ";
}
CSqlFilter *filter = (CSqlFilter*)ptr;
sql += filter->Sql();
}
}
this->Open(CRecordset::snapshot, sql);
int iRecordCount = this->GetRecordCount();
if(iRecordCount != 0)
{
do
{
CTOneRow *row = (CTOneRow*)GetFilledObject();
CDBVariant value;
GetFieldValue(id_name, value, SQL_C_SLONG);
//row->m_iID = value.;
obj.AddTail(row);
this->MoveNext();
}
while( !this->IsEOF() );
}
this->Close();
return result;
}
Соседние файлы в папке TheOne