SELECT [ID], LastName, FirstName, ParentName, SerialNumber, Number, DocType_ID
FROM tPersonalDocuments
WHERE
[ID] > 30
AND
DocType = 1
SqlBatch batch;
batch.addSource("tPersonalDocuments");
// 1
batch << SqlField("[ID]", fv_invisible, fr_id)
<< SqlField("LastName", fv_visible, fr_none, "", 120)
<< SqlField("FirstName", fv_visible, fr_none, "", 120)
<< SqlField("ParentName", fv_visible, fr_none, "", 120)
<< SqlField("SerialNumber", fv_visible, fr_none, "", 45)
<< SqlField("Number", fv_visible, fr_none, "", 70)
<< SqlField("DocType_ID", fv_invisible)
// 2
<< SqlField("[ID]", SqlValue(30, fo_greater), fp_where)
<< SqlField("DocType_ID", SqlValue(1), fp_where);
// – . 0 .
SqlQueryDescriptor queryDescriptor(batch, sql_select, 0);
batch << SqlField("[ID]", SqlValue(30, fo_greater), fp_where);
batch << SqlField("DocType_ID", SqlValue(1), fp_where);
FirstName LIKE '%'
AND
Birthday BETWEEN convert(datetime '20.01.2009', 104) AND
convert(datetime '15.05.2009', 104)
batch << SqlField("FirstName", SqlValue("", fo_like, fb_right), fp_where)
<< SqlField("Birthday", SqlValue(QDate(2009, 1, 20)), SqlValue(QDate(2009, 5, 15)));
SqlField("Birthday", fp_order_by)
SqlField("Birthday", fp_group_by)
SqlGen gen;
QString selectQuery = gen.query(batch, sql_select);
SqlField("Age", SqlValue(10), fp_where | fp_update | fp_insert)
INSERT INTO … (Age)
VALUES (10)
WHERE
Age = 10
const int ARMY_TYPES_QUERY = 7575;
class h_ArmyTypesHandler : public AbstractModelHandler
{
public:
h_ArmyTypesHandler();
private:
virtual SqlQueryDescriptor _selector(const SqlQueryModelTypes &modelType = mt_plain, const int &queryNumber = 0) const;
virtual SqlQueryDescriptor _inserter(const int &queryNumber = 0) const;
virtual SqlQueryDescriptor _updater(const int &queryNumber = 0) const;
virtual SqlQueryDescriptor _deleter(const int &queryNumber = 0) const;
virtual SqlQueryDescriptor _executor(const int &queryNumber = 0) const;
};
SqlQueryDescriptor h_ArmyTypesHandler::_selector(const SqlQueryModelTypes &modelType, const int &queryNumber) const
{
SqlBatch batch;
batch.addSource("tArmyTypes");
if (queryNumber == ARMY_TYPES_QUERY)
{
batch << SqlField("ID", fv_invisible, fr_id)
<< SqlField("ShortName", fv_visible, fr_none, "", 90)
<< SqlField("Name", fv_visible, fr_none, " ", 100)
<< SqlField("ID", value(ID_VALUE), fp_where)
<< SqlField("Name", value("Name"), fp_where)
<< SqlField("ShortName", value("ShortName"), fp_where);
}
else
if (queryNumber == LAST_ID)
{
batch << SqlField("max(ID)", fv_visible, fr_none);
}
else
{
Q_ASSERT(false);
}
return SqlQueryDescriptor(batch, sql_select, queryNumber);
}
h_ArmyTypesHandler th;
th.setValue("Name", SqlValue("__", fo_not_equal, fb_none));
…
const int ARMY_TYPE_INSERT_QUERY = 5;
const int ARMY_TYPE_UPDATE_QUERY = 68;
…
h_ArmyTypesHandler th;
th.setValue("Name", SqlValue("__", fo_not_equal, fb_none));
th.Insert(ARMY_TYPE_INSERT_QUERY);
th.setValue(ID_VALUE, SqlValue(10));
th.Update(ARMY_TYPE_UPDATE_QUERY);
th.Delete(4);
…
h_ArmyTypesHandler _handler;
SqlQueryModel _model;
…
void f_ArmyTypesForm::loadArmyTypes()
{
_handler.reloadSource(ARMY_TYPES_SOURCE, ARMY_TYPES_QUERY, &_model);
_handler.setTableView(ARMY_TYPES_SOURCE, ui->TableView);
}
void f_ArmyTypesForm::someFunc1()
{
_handler.setValue(ID_VALUE, SqlValue(10));
loadArmyTypes();
}
void f_ArmyTypesForm::someFunc2()
{
_handler.setValue(ID_VALUE, SqlValue(111, fo_less));
loadArmyTypes();
}
…
h_ArmyTypesHandler _handler;
SqlQueryModel _model;
SqlQueryModel _modelPlainForTreeView;
SqlQueryModel _modelForComboBox;
…
void f_ArmyTypesForm::loadArmyTypes()
{
_handler.reloadSource(ARMY_TYPES_SOURCE, ARMY_TYPES_QUERY, &_model);
_handler.setTableView(ARMY_TYPES_SOURCE, ui->TableView);
_handler.reloadSource(TREE_VIEW_SOURCE, ARMY_TYPES_QUERY, &_modelPlainForTreeView);
_handler.setTreeView(TREE_VIEW_SOURCE, ui->TreeView);
_handler.reloadSource(COMBO_BOX_SOURCE, ARMY_TYPES_QUERY, &_modelForComboBox);
_handler.setComboBox(COMBO_BOX_SOURCE, ui->ComboBox);
}
// ComboBox:
QVariant id = _handler.keyValueOfCurrent(ARMY_TYPES_SOURCE, ui->ComboBox);
// TreeView:
QVariant id2 = _handler.keyValueOfView(TREE_VIEW_SOURCE);
// Name ID == id2:
h_ArmyTypesHandler th;
th.setValue(ID_VALUE, SqlValue(id2));
QVariant name = th.SelectToValue("Name", ARMY_TYPES_QUERY);
// TableView ( ):
_handler.DeleteCurrent(ARMY_TYPES_SOURCE, ui->TableView);
h_ArmyTypesHandler th;
th.setValue(ID_VALUE, SqlValue(id2));
QVariantMap valMap = th.SelectToMap(QStringList() << "Name" << "ShortName" << "ID", ARMY_TYPES_QUERY);
ui->LineEdit_Name->setText(valMap["Name"].toString());
Source: https://habr.com/ru/post/78394/