mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
97 lines
1.7 KiB
C++
97 lines
1.7 KiB
C++
#include "SqlCtrl.h"
|
|
|
|
namespace Upp {
|
|
|
|
SqlDetail::SqlDetail()
|
|
{
|
|
present = false;
|
|
autocreate = false;
|
|
ssn = NULL;
|
|
}
|
|
|
|
SqlDetail& SqlDetail::Add(SqlId id, Ctrl& ctrl)
|
|
{
|
|
ctrls(id, ctrl);
|
|
ctrl.Disable();
|
|
return *this;
|
|
}
|
|
|
|
SqlDetail& SqlDetail::Join(SqlId id, ArrayCtrl& master)
|
|
{
|
|
master.AddCtrlAt(0, *this);
|
|
fk = id;
|
|
return *this;
|
|
}
|
|
|
|
SqlDetail& SqlDetail::Join(ArrayCtrl& master)
|
|
{
|
|
Join(master.GetKeyId(), master);
|
|
return *this;
|
|
}
|
|
|
|
void SqlDetail::Query()
|
|
{
|
|
present = false;
|
|
ctrls.Disable();
|
|
ctrls.SetNull();
|
|
if(fk.IsNull() || IsNull(fkval)) return;
|
|
Sql sql(Session());
|
|
sql.ClearError();
|
|
sql * Select(ctrls).From(table).Where(fk == fkval);
|
|
if(ShowError(sql)) return;
|
|
present = ctrls.Fetch(sql);
|
|
ctrls.Enable(present || autocreate);
|
|
ctrls.ClearModify();
|
|
WhenPostQuery();
|
|
}
|
|
|
|
bool SqlDetail::Create()
|
|
{
|
|
if(IsPresent() || fk.IsNull() || IsNull(fkval)) return false;
|
|
ClearModify();
|
|
Sql sql(Session());
|
|
sql.ClearError();
|
|
sql * ctrls.Insert(table)(fk, fkval);
|
|
if(ShowError(sql)) return false;
|
|
present = true;
|
|
ctrls.Enable();
|
|
return true;
|
|
}
|
|
|
|
bool SqlDetail::Delete()
|
|
{
|
|
if(!IsPresent() || fk.IsNull() || IsNull(fkval)) return false;
|
|
Sql sql(Session());
|
|
sql * UPP::Delete(table).Where(fk == fkval);
|
|
if(ShowError(sql)) return false;
|
|
present = false;
|
|
return true;
|
|
}
|
|
|
|
void SqlDetail::SetData(const Value& v)
|
|
{
|
|
fkval = v;
|
|
Query();
|
|
}
|
|
|
|
Value SqlDetail::GetData() const
|
|
{
|
|
return fkval;
|
|
}
|
|
|
|
bool SqlDetail::Accept()
|
|
{
|
|
ClearModify();
|
|
if(fk.IsNull() || IsNull(fkval)) return true;
|
|
if(!ctrls.IsModified()) return true;
|
|
if(IsPresent()) {
|
|
Sql sql(Session());
|
|
sql.ClearError();
|
|
sql * ctrls.UpdateModified(table).Where(fk == fkval);
|
|
return !ShowError(sql);
|
|
}
|
|
return autocreate ? Create() : true;
|
|
}
|
|
|
|
|
|
}
|