UPD
ãã®ããã°ã¯
advixã®ãããã§ç»å ŽããŸããã ãã®äººã¯ãµã³ãããã¯ã¹ãžã®æçš¿ãæåŸ
ããŸããã圌ã«å¿ããæè¬ããŠããŸãã
ããã«ã¡ã¯ãæããhabrasocietyïŒ
ããŒã¿ããŒã¹ã¢ããªã±ãŒã·ã§ã³ã®ããã°ã©ãã³ã°ãç°¡çŽ åããããã«æžãããQtã®å°ããªã©ã€ãã©ãªãè£å€æã«çŽ¹ä»ããããšæããŸãã ããã䜿çšããŠã泚æããããŒã¿ããŒã¹ã1ã€äœæããŸãããããã¯åãªãçšèªéã§ãããå€ãã®ç¹ã磚ããèããã®ã«åœ¹ç«ã¡ãŸããã ä»ãç§ã¯çé¢ç®ãªçµç¹ã®ããã«ããã§ã«çŸå®ã®å¥ã®ããŒã¿ããŒã¹ãæžããŠããŸãã ã©ã€ãã©ãªã«æ°ããæ©èœãå°ããã€è¿œå ããŸãã ãã€ãè¯ãããšãå€æããã§ãããã
åæ
2009幎ã®å€ä»¥æ¥ãç§ã¯Qtãç©æ¥µçã«ç 究ããŠããŸãã ãããŠãããªãã¯ãã®ç°å¢ã§ããã°ã©ã ããããšãæ¬åœã«å¬ããæããŸãã 圌女ã¯ç§ã®ãã¹ãŠã®äž»ãªåé¡ã解決ããŸããã ããšãã°ãããã°ã©ã ã€ã³ã¿ãŒãã§ã€ã¹ã®æ§ç¯æ¹æ³ãããããªãã£ããããåãBuilderã®ãã¹ãŠã®ã³ã³ãããŒã«ãæŽåããã©ãã°ããµã€ãºãšäœçœ®ã調æŽããå¿
èŠãããããšã¯ç¹ã«é¢åã§ããã Qtã䜿çšãããšããã®ããšãå¿ããããšãã§ããŸãããããŠãã«ãŒãã³ãªãã§çŸåŠã«å°å¿µã§ããŸãã ããã«ãç§ã¯STLããã®å·§åŠãªã¢ãããŒãã§æ°ã«å
¥ã£ãŠããïŒãŸã ãŸã ç¥ããŸãããïŒãQtã«ã¯ç¬èªã®ã³ã³ãããããã ãã§ãªããåãã§äœ¿çšããŠããŸãã ãŸããããããã-éåžžã«èãæãããã©ã€ãã©ãªããã¹ãŠã®ãã®ãããªOOP-shnayaãšæè¡ã ãããŠãç§ã¯OOPãšãã¶ã€ã³ãã¿ãŒã³ãæ¬åœã«å°éããå°éããŠããŸã...
å€ã®çµããã«ãããŒã¿ããŒã¹ã®æ³šæãåãåããŸãã äœãæžãã¹ãããšãã質åã¯äŸ¡å€ããããŸããã ãã¡ãããQtïŒ ç·Žç¿ã¯ããŸã é ãããŠãããã®ãåŠã¶ã®ã«åœ¹ç«ã¡ãŸãã ã¢ããªã±ãŒã·ã§ã³ã®äœæ¥ãéå§ããŠããŸãã çŸãããã©ãŒã ãåŸãããã³ãŒããæžãã®ã䟿å©ã§ããã¹ãŠãæã£ãŠããããã§ã...ãããŠãç§ã¯å¹žãã«ãªãã¯ãã§ãããããã§ã¯SQL-C ++ã³ãŒããã麺ãå
¥æããŸãã ééããªãå±éºãªãå°é£ãªãã®ã䌎ããäžèŠäžæºã®ããã«èŠãã人...ã©ãããŠäººã
ã¯ç®ãèŠãŠãèªåãããã°ã©ããŒãšåŒã¶ããšãã§ããŸããïŒ
ãããã£ãŠããã¶ã€ããŒãçãŸããŸããã ã¯ãããã¹ãŠã®ãã®äžåèªãåãé€ãããã«èšèšãããå°ããªãããžã§ã¯ãã 幞ããªããšã«ããã®éã¯æã¡ã®ããããŠããããã¹ãŠã®ããã°ã©ãã³ã°èšèªããã¹ãŠã®ãã©ãããã©ãŒã ã«ã€ããŠããã§ã«ãã®ãããªããšããããŸãã ãŸãã倧äžå€«ã§ãã ç§ã¯èªåèªèº«ã欲ããã§ããç¹ã«Qtã®ããšã§ã¯ãè³¢æãªãã®ã¯èŠã€ãããŸããã§ããã
QSTïŒQsT SQLããŒã«
ããã¯ããŒã«ãããã§ããããããã©ã€ãã©ãªã§ãããããã«è¯ãããšã«ãã³ãŒãã®ãSQLããŒãã«ãããããã°ã©ããæãã¯ã©ã¹ã®ã»ããã§ãã åœç¶ãã¯ãšãªçæã䜿çšããŸãããåçŽã§ã¯ãããŸããããç¹å¥ãªDFDèšè¿°åã䜿çšããŸããããã«ãããå€ãã®äŸ¿å©ãªå©ç¹ãåŸãããŸãã ã©ãããããããããŒã¿ããŒã¹ããŒãã«ã®ãã£ãŒã«ããååã§èŠãŠãããŒã¿ãæœåºãããªã¯ãšã¹ãããšã«ç°ãªãDFDèšè¿°åã䜿çšãããã¥ãŒã¢ãã«ãæäœããããããã¹ãŠãã³ãã©ã¯ã©ã¹ã«ã«ãã»ã«åããŸãããããã§ãå€ãã®ããšãã§ããŸãã ...
ããã-é çªã«ã
Dfd
ç§ã¯
DFDãšããæŠå¿µãéçºããŸããïŒ
ã宣èšåãã£ãŒã«ãèšè¿°åã ã ïŒL [anguage]ãè¿œå ãããã®ã§ãããèšèªã«æç»ãããŸããïŒ..ïŒèšè¿°åããåçŽãªSQLã¯ãšãªãçæããæŠå¿µã äŸã§èª¬æããã®ãæãç°¡åã§ãã 次ã«ããã®ãããªãªã¯ãšã¹ããäœæããŸãã
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);
ã芧ã®ãšããã
FROMã®ãªã¹ã
㯠SqlBatch :: addSourceïŒïŒã䜿çšããŠèªã¿èŸŒãŸãããã£ãŒã«ãããã£ãŒã«ãããã£ãŒã«ãããããŸã...ç°¡åã§ãã
SqlFieldã¯ã©ã¹ã¯ãç¹å®ã®ãã£ãŒã«ãããã£ãŒã«ãã®åœ¹å²ãQtã®ãã¥ãŒã§ã®ååš/äžåšããã¥ãŒå
ã®åã®ããããŒãããã³ãã®åã®å¹
ãæ
åœ
ããSqlBatchã«ããŒãã
ããŸã ïŒã»ã¯ã·ã§ã³1ïŒã ããšãã°ãIDãã£ãŒã«ããããŒã§ãããããã¯éèŠãªãã€ã³ãã§ãããããŒããŒã«
fr_idãä»äžããŸãã ããã§ãããã¥ãŒã«è¡šç€ºãããã¹ãã§ã¯ãããŸãããã€ãŸããã¬ã³ãŒãå
ã®ããŒããŠãŒã¶ãŒããé ãããã®ã§ãã ããããé衚瀺ã«ããããªãå Žåã¯ã誰ãéªéããªãã§ãã ãããã»ã¯ã·ã§ã³2ã§
WHEREã®ãã£ã«ã¿ãŒã«ã€ããŠèª¬æããä»ãšåºå¥ããããã«ã
åæåSqlFieldPurposeã«å±ãã
fp_whereãã©ã¡ãŒã¿ãŒããããŸãã ãã£ã«ã¿ãŒã®å Žåããã£ãŒã«ããšå€ïŒç¹å¥ãªã¯ã©ã¹
SqlValueïŒãæå®ããå¿
èŠããããŸãã äŸã§ã¯ãæŽæ°å€ã衚瀺ãããŸãã ããã«ïŒ
batch << SqlField("[ID]", SqlValue(30, fo_greater), fp_where);
æ¯èŒãã¡ã³ã¯ã¿ãŒãmoreããæå®ãããŠããŸãããããã§ã¯ïŒ
batch << SqlField("DocType_ID", SqlValue(1), fp_where);
functorã¯æå®ãããŠããªããããæŽæ°ã§ã¯
fo_equalãããã©ã«ãã§äœ¿çšãããŸãã
ã¯ããã¯ããããã¯ãã¹ãŠè¯ãã§ãããä»ã®ã¿ã€ããç¹ã«æååãšæ¥ä»ã¯ã©ãã§ããïŒ ãã¹ãŠãå¯èœã§ãïŒ SQLã¯ãšãªã®ãããã®ã¹ããããã¯æ¬¡ã®ãšããã§ãã
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)));
ïŒæ¥ä»ã®å€æã¯ãå®æ°ã§æå®ããããã³ãã¬ãŒãã«åŸã£ãŠèªåçã«è¡ãããŸããïŒ
WHEREã»ã¯ã·ã§ã³ã«å ããŠãåçŽãª
SELECTã«ã¯
ORDER BYããã³
GROUP BYã å«ããããšãã§ããããšãæãåºããŠãã ããã
SqlFieldã¯ã©ã¹ã«ã¯ããããã®å Žåã®ã³ã³ã¹ãã©ã¯ã¿ãŒããã
ãŸã ã
SqlField("Birthday", fp_order_by)
SqlField("Birthday", fp_group_by)
ïŒç¢ºãã«ã
GROUP BYã®å Žåãéèšé¢æ°ãšãããã«é¢äžãããã£ãŒã«ãã®ã¿ãæå®ããå¿
èŠããããŸãããæå¹ãªSQLã¯ãšãªãååŸãããã©ããã¯ããã°ã©ãã®è¯å¿ã«ä»»ããŸããïŒ
ã¯ãšãªèªäœã¯ã
SqlGenã¯ã©ã¹ãš
SqlQueryComposerã¯ã©ã¹ã«ãã£ãŠçæãã
ãŸã ã å®éã
SqlQueryComposerã®ã¿ãçæãã
SqlGenã¯ãã£ãŒã«ãã®é åºã決å®ããçæçšã®é«ã¬ãã«ã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŸãã ïŒã¡ãªã¿ã«ãå¿
èŠã«å¿ããŠã
SqlQueryComposerã¯ã©ã¹ãå¥ã®SQLãã€ã¢ã¬ã¯ãã«æžãæããããšãã§ããŸããïŒãã£ãŒã«ãã§åãããã
SqlBatchã¯ã©ã¹ãæž¡ããŠ
SELECTã¯ãšãªãååŸããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
SqlGen gen;
QString selectQuery = gen.query(batch, sql_select);
ãããŠã
sql_selectã®ä»£ããã«äœãä»ã®ãã®ãäŸãã°
sql_updateãæžããšããžã§ãã¬ãŒã¿ã¯
UPDATEã¯ãšãªãçæããããšããèš±å¯ããããã£ãŒã«ãã®ã¿ãååŸããŸãã ã©ãïŒ ãŸãã
|ã®ä»£ããã«
SqlFieldPurposeãã©ã¡ãŒã¿ãŒãæã€ãã® ä»ã®äººãšäžç·ã«ã ãã®ãããªãã£ãŒã«ãã®äŸã次ã«ç€ºããŸãã
SqlField("Age", SqlValue(10), fp_where | fp_update | fp_insert)
ãããã£ãŠã
sql_updateã䜿çšãããšããSET Age = 10ãã®ãããªç»åã衚瀺ããã
sql_insertã䜿çšãããšæ¬¡ã®ããã«ãªããŸãã
INSERT INTO ⊠(Age)
VALUES (10)
ãã®ä»ãã¹ãŠã®å Žå
-WHEREã®åãªããã£ã«ã¿ãŒïŒ
WHERE
Age = 10
DFDèšè¿°åã®æŠå¿µã¯æ確ã«ãªãå§ããŠããŸããïŒ ãããŠããããä»ã®ã¢ãããŒããšéåžžã«äŒŒãŠããããšã¯äºå®ã§ãã ãªãªãžãã«ãäœããããªãã£ã...
ããããããã¯ãã¹ãŠãŽãã§ãã 質åã¯ç°ãªããŸã-ãŽãã®äœ¿ãæ¹ ããã§ã¯ãå®éã«ã¯ãã¢ã¡ããã£ã衚瀺ãããå Žæã«ã€ããŠãäžèšã®ãã¹ãŠãèªã¿ãŸããã
AbstractModelHandler
ç§ã®ã©ã€ãã©ãªã«ã¯ããã€ãã®æœè±¡ã¯ã©ã¹
AbstractModelHandlerããããŸãã ããã«ã¯å€ãã®è¯ããã®ãå«ãŸããŠãããDFDèšè¿°åã§ãã以äžã«ããŸãæ©èœãããã®ã¯ãããŸããã ããã°ã©ããè»äº
ãµãŒãã¹ããŒãã«
tArmyTypesã䜿çšããŠäœæ¥ãã«ãã»ã«åããããšããŸãã ãããè¡ãããã«ã圌ã¯
h_ArmyTypesHandleräžäœ
ã¯ã©ã¹ãäœæããŸãã
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;
};
ä»®æ³é¢æ°
_selectorïŒïŒã_ inserterïŒïŒãupdaterïŒïŒã_ deleterïŒïŒãããã³
_executorïŒïŒã¯ ãåºæ¬ã¯ã©ã¹ããç¶æ¿ãããŸãã ãããã«ã¯DFDèšè¿°åãå«ãŸããŠãããä»ã®
AbstractModelHandlerã®é¢æ°ã®èŠæ±ã§çºè¡ããŸãã ããšãã°ã
以äžã¯
_selectorïŒïŒé¢æ°ã®å
žåçãªãªãŒããŒã©ã€ãã§ãã
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);
}
ããã«æ°ãããã®ããããŸãïŒç¹å®ã®é¢æ°
å€ïŒïŒã§ãã ãããã誰ããã以åã«èšé²ããã
SqlValueïŒïŒå€ã
ååã§è¿ãããšãæ¢ã«æšæž¬ããŠãããããããŸãããããšãã°ããã©ãŒã ã¯ã©ã¹ã®ã©ããã§
h_ArmyTypesHandlerã«æž¡ãã
ãŸã ã
h_ArmyTypesHandler th;
th.setValue("Name", SqlValue("__", fo_not_equal, fb_none));
ã€ãŸããç®çã®ååã§
setValueïŒïŒé¢æ°ã
䜿çšããŠå€ãä¿åããïŒ
AbstractModelHandlerã¯ã©ã¹ãã
ïŒvalueïŒïŒé¢æ°ã䜿çšããŠèšè¿°åã§
å€ãååŸããŸãã ããã§ãèŠæ±ãçæãããšãã«ããã©ã¡ãŒã¿ãŒåãããDFDèšè¿°åãäœæãããŸãã
ãã®äŸã®æåŸãã2è¡ç®ã¯ã
SqlQueryDescriptorã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒã®3çªç®ã®ãã©ã¡ãŒã¿ãŒã瀺ããŠããŸããããã¯èŠæ±çªå·ã§ãã åã
_selectorïŒïŒé¢æ°ã䜿çšããŠãå°ãªããšã2ã€ãå°ãªããšã10ã®ç°ãªãèŠæ±ãçæã§ããŸããç¶æ³ããšã«ç°ãªãèŠæ±ããããŸãã ãããŠããã¯è¯ãããšã§ãã ãã®ãããªãã£ãŒã«ããå¿
èŠã«ãªã£ããããŸãå¥ã®æ©äŒã«ã 次ã«ãéèšé¢æ°ã䜿çšããŠã¯ãšãªãåŒã³åºããã¯ãšãªã ãã®å Žåã¯ééã£ãããŒãã«ããåŒã³åºããŸãã DFDèšè¿°åããšã«ãªã¯ãšã¹ãçªå·ã決å®ããã ãã§ååã§ãã
ããã«ãããäžè¬ã«SQLã¯ãšãªãçæããã³å®è¡ããæ¹æ³ã®è«ççãªåé¡ãçºçããŸãã ããŠãäŸãã°ããã®ããã«ïŒ
âŠ
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);
ãã®å Žåã察å¿ããé¢æ°ã
åŒã³åºãããŸãïŒ
_inserterïŒïŒ ã
_updaterïŒïŒããã³
_deleterïŒïŒ ãèšè¿°åãé
眮ãããŠããŸãã 次ã«ããã³ãã©ãŒã®æœè±¡èŠªãSQLãçæããQtã䜿çšããŠå®è¡ããŸãã ãã¹ãŠãã·ã³ãã«ã§ãã
ãã ããéžæã®çµæã確èªããå¿
èŠããããããå€ãã®å Žåããã€ããæºãããŠããªã
SELECTã¯ãšãªã䜿çšããå¿
èŠããããŸãã ããšãã°ãTableViewãè»äºæ¯éšã®ããŒãã«ã衚瀺ããããšãæã¿ãŸãã åé¡ãããŸããïŒ
...ããããæåã®åŸéã Qtã¯ã
QTableViewã®ããŒã¿ã¢ãã«ãå¿
èŠãšãã
MVCãã¿ãŒã³ã®çš®é¡ã®1ã€ãå®è£
ã
ãŸã ã ãããã¯Qtèªäœã«ãããŸãããç¬èªã«è¡ãããšãã§ããŸãã ç§ã¯èªåã®ã¢ãã«ã®ããã°ã©ãã³ã°ã«åŒ·ããªãããšãæ£çŽã«èªããŸãããã©ã€ãã©ãªã«ã€ããŠã¯ãç§ãæ¬åœã«èŠéããæãåçŽãªããªãŒã¢ãã«
-SqlTreeModelãæžããŸãã ã ã¯ããQtã«ã¯èŠä»¶ãæºããããªãŒã¢ãã«ããããŸããããŸãã¯ãããŸãç¥ããŸããã QSTã«ã¯ã
SqlTreeModelãš
SqlQueryModelã® 2ã€ã®ã¢ãã«ããããåŸè
ã¯
QSqlQueryModelãšãããã«ç°ãªãã ãã§ããããç¶æ¿ããŠããŸãã ã¢ãã«ã¯ã
AbstractModelHandlerã¯ã©ã¹ã§ç©æ¥µçã«äœ¿çšãããŠããŸãã
次ã«ãQSTã©ã€ãã©ãªã®å¥ã®æŠå¿µã§ããããŒã¿ãœãŒã¹ã詳ãã調ã¹ãå¿
èŠããããŸãã ããã¯å®éãDFD-ã¢ãã«-ãã¥ãŒã®æã§ãã åããŒã¿ãœãŒã¹ã«ã¯ååãä»ããããååã¯ããã°ã©ããŒã«ãã£ãŠèšå®ãããŸãã TableViewã§è»äºæ¯ç€Ÿã®ããŒãã«ã衚瀺ããã«ã¯ããã©ãŒã ã¯ã©ã¹ã§ããŒã¿ãœãŒã¹ãäœæããŸãã
âŠ
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);
}
ãããŠããã ãã§ãã æå®ãããå¹
ãšããããŒãæã€åãTableViewã«è¡šç€ºãããŸãã ãããã£ãŠããããã®ãã©ã¡ãŒã¿ãŒã¯ã
h_ArmyTypesHandler :: _ selectorïŒïŒé¢æ°ã§èšå®ãããŸãã 衚瀺ãããåããªã¹ãããŸãããShortNameããšããååã¯ãAbbreviationããå¹
ã¯90ã§ãã ååããTroopsãã§å¹
ã100ã®ãNameãããã ããfv_invisibleãããããããIDããã£ãŒã«ãã¯è¡šç€ºãããŸãããã€ãŸãã
reloadSourceïŒïŒããã³
setTableViewïŒïŒé¢æ°ã¯ãããã°ã©ããŒã®ããŒãã«ãã©ãŒãããã®ã«ãŒãã³å
šäœãå®è¡ããŸãã
ARMY_TYPES_SOURCEã¯ãæ°ããããŒã¿ãœãŒã¹ã®ããã¹ãåã§ãã
確ãã«ãloadArmyTypesïŒïŒãå床åŒã³åºããšããœãŒã¹ã¯ã
è£å
ããããŸã
ã_selectorïŒïŒé¢æ°ãå床åŒã³åºããã
SELECTèŠæ±ãå床çæãããããŒã¿ã¢ãã«ã¯å€ãè¡ãåé€ããŠããŒã¿ããŒã¹ããæ°ããè¡ãååŸããŸãã 次ã®é¢æ°ãåŒã³åºããšã2ã€ã®ç°ãªãè¡ã»ãããååŸãããŸãã
void f_ArmyTypesForm::someFunc1()
{
_handler.setValue(ID_VALUE, SqlValue(10));
loadArmyTypes();
}
void f_ArmyTypesForm::someFunc2()
{
_handler.setValue(ID_VALUE, SqlValue(111, fo_less));
loadArmyTypes();
}
ãããããã¯ç§ã«ã¯ååã§ã¯ãããŸããã
AbstractModelHandlerã䜿çšãããšãè€æ°ã®ããŒã¿ãœãŒã¹ãäœæã§ããŸãïŒããã§ãªãå Žåããªããããã«ååãä»ããã®ã§ããïŒïŒãïŒã
TableViewã«å ããŠããã©ãŒã ã«
TreeViewãš
ComboBoxããããåããã®ã衚瀺ããããšããŸãã åé¡ãããŸããïŒ æ¬¡ã®ãããªãã®ãæžããŠããŸãã
âŠ
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);
}
ããã§ãããªãã¯å°ããŸãã ã©ãïŒ ç°ãªãã¢ãã«ãéä¿¡ãããŠããŸããïŒ éãã ãããã£ãŠã3ã€ã®ããŒã¿ãœãŒã¹ããããŸãã ãã³ãã©ã®ã¿ãäžè¬çã§ãqueryNumberã¯åãã§ã-ARMY_TYPES_QUERYããããã£ãŠãåãã¯ãšãªãçæãããŸãã ããããç§ãã¡ã¯éæ³ã®ããšãããããšãã§ããŸãïŒ ããšãã°ã次ã®ãšããã§ãã
// 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());
ã³ãŒãå
ã®åäžã®SQLã¯ãšãªã§ã¯ãããŸããïŒ ãªããŠããš!!!
ãããŠçµè«ãšããŠ...
ãã¡ãããç§ã¯å€ãã®è©³çŽ°ãæããã«ããŸããã ãã®ãããªå°ããªã©ã€ãã©ãªã§ããããããã®åå以äžã®ãã®ããããŸãã æ®å¿µãªããã
QSTã®å€ãã¯ã§ããŸããã éåžžã®ããªãŒã¢ãã«ã¯éåžžã«äžè¶³ããŠããŸãã ãšã©ãŒãçºçããŠããå¯èœæ§ãããã
QTreeViewä¿¡å·ãšå¯Ÿè©±ãããšãã«å¥åŠãªåäœãããŸããç¹å®ã®æ¡ä»¶äžã§ã¯ãã¯ã©ãã·ã¥ããä»ã®èª°ãã®ã¡ã¢ãªã«ã¯ããŒã«ããŸãã ãšã©ãŒãèŠã€ãããŸããã 2ã€ã®Qtãã©ãŒã©ã ã®äººã
ã«å©ããæ±ããäŸããããŸãããä»ã®ãšãã誰ãäœãèšã£ãŠããŸããã
DFDãããè€éãªã¯ãšãªã«ã¯å ŽæããããŸããã ä»ã
WHEREã»ã¯ã·ã§ã³ã«ORæ¡ä»¶ãè¿œå ããæ¹æ³ãèããŠããŸãã
JOINã«ã€ããŠèããå¿
èŠããããããããŸããããããã¯éåžžã«å¿
èŠã§ãã å©çšå¯èœãªæ段ã§ã¯ãããã®å¶éãåé¿ããããšã¯äžå¯èœãšããããã§ã¯ãããŸãã-SQLèšèªã¯å€é¢çã§ãããéçºããå¿
èŠããããŸãã
ããã«ãã©ã€ãã©ãªã«ã¯ãããŒã¿ããŒã¹æ¥ç¶ãæäœããããã®ã¯ã©ã¹ïŒ
DBConnection ïŒãããã³
trïŒïŒé¢æ°ã®ã³ãŒããã¯ãèšå®ããã¯ã©ã¹ïŒ
ããªã«æå ïŒãå«ãŸããŠããŸãã ããŠãããŒããæäœããæ¹æ³ãåçšããèªäœã®
TreeItem ã ç§ã¯æ£çŽãã¯ã©ã¹ã奜ãã§ã¯ãããŸããã ãããŠã
SqlTreeModelã¯äŒŒãŠããŸããã ã³ãŒããæ£ãã°ã£ãŠ
æ°ãã åé€ããããšããç§ã¯ããã奜ãã§ã¯ãããŸããã ã¡ã¢ãªãæäœããå Žåã
ããªãœãŒã¹ãååŸããããšã¯åæåã§ãã
ããšããååãéããŠã èŠãŠããã¹ãŠãè³¢ãæžãçŽããŠãã ããã ãã€ãã
ãã®éçºãå©ããŠããã人ã«æ¬åœã«æ¬²ããã§ãã ãããŠãæ¹åææ¡ã®ããã«ã³ãã¥ããã£ããã°ãç¹å®ããã®ãæäŒã£ãŠãããŸããŸããã
QSTãœãŒã¹ã¯ãSourceForgeã®ã¢ãŒã«ã€ãïŒ
ãã¡ãïŒã«ãããŸã ã ã©ã€ã»ã³ã¹ã¯ç¡æãGPL v3ããã³LGPL v3ã§ãã 詳现ã«ã€ããŠã¯ã
ãã®ã¹ã¬ãããåç
§ããŠãã ãã ã
èå³ã®ããæ¹ã®è³ªåã«ãçãã§ããããšãå¬ããæããŸãã
ãããã
ã°ã©ãã³ã»ã¢ã¬ã¯ãµã³ããŒ