From 3e6707c33ea76397c39b85bc6e1cec7f7e32055f Mon Sep 17 00:00:00 2001 From: Mattia Tollari Date: Fri, 19 Oct 2018 12:10:12 +0200 Subject: [PATCH] =?UTF-8?q?Patch=20level=20=20=20=20=20=20=20=20=20:=2012.?= =?UTF-8?q?0=20no-patch=20Files=20correlati=20=20=20=20=20:=20ps=20Comment?= =?UTF-8?q?o=20=20=20=20=20=20=20=20=20=20=20=20:=20Modifiche=20Diana=2020?= =?UTF-8?q?00:=20-=20Aggiunta=20modalit=C3=A0=20auto=20senza=20finestra=20?= =?UTF-8?q?-=20Aggiunto=20lancio=20eseguibile=20post-esportazione=20-=20Ag?= =?UTF-8?q?giunto=20prefisso=20tabelle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ps/ps1004100.cpp | 67 +++++++++++++++++++++++++++++-------------- src/ps/ps1004100a.h | 3 +- src/ps/ps1004100a.uml | 5 ++++ 3 files changed, 53 insertions(+), 22 deletions(-) diff --git a/src/ps/ps1004100.cpp b/src/ps/ps1004100.cpp index 0067b2a4f..adfbf9e0c 100644 --- a/src/ps/ps1004100.cpp +++ b/src/ps/ps1004100.cpp @@ -125,6 +125,7 @@ void TDianaExport_mask::save_all() const ini_set_string(CONFIG_DITTA, "ps1004", "db", get(F_DATABASE)); ini_set_string(CONFIG_DITTA, "ps1004", "usr", get(F_USER)); ini_set_string(CONFIG_DITTA, "ps1004", "psw", encode(get(F_PASSWORD))); + ini_set_string(CONFIG_DITTA, "ps1004", "ext", get(F_EXTERNAL)); } void TDianaExport_mask::load_all() @@ -133,6 +134,7 @@ void TDianaExport_mask::load_all() set(F_DATABASE, ini_get_string(CONFIG_DITTA, "ps1004", "db")); set(F_USER, ini_get_string(CONFIG_DITTA, "ps1004", "usr")); set(F_PASSWORD, decode(ini_get_string(CONFIG_DITTA, "ps1004", "psw"))); + set(F_EXTERNAL, ini_get_string(CONFIG_DITTA, "ps1004", "ext")); } @@ -148,8 +150,10 @@ class TDianaExport_app : public TSkeleton_application bool create_table(const int logicnum); bool deploy_data(const int logicnum); inline bool rko_outta_nowhere(const int logicnum); + bool launch_ext(); public: virtual bool create(); + virtual void main_loop(); TDianaExport_app() : _visual(false) {} }; @@ -176,7 +180,7 @@ bool TDianaExport_app::create_table(const int logicnum) const RecDes& rd = prefix().get_recdes(logicnum); // Create new table - TString sql; sql.cut(0) << "CREATE TABLE " << table << "\n("; + TString sql; sql.cut(0) << "CREATE TABLE CAMPO_" << table << "\n("; for (int i = 0; i < rd.NFields; i++) { if (i > 0) sql << ','; @@ -218,7 +222,7 @@ bool TDianaExport_app::deploy_data(const int logicnum) { if (_visual && !p.add_status()) return false; - queryF.cut(0) << "INSERT INTO [" << logic2table(logicnum) << "] ("; // Tolgo il simbolo iniziale + queryF.cut(0) << "INSERT INTO [CAMPO_" << logic2table(logicnum) << "] ("; // Tolgo il simbolo iniziale queryV.cut(0) << "("; for (int k = 0; k < rd.NFields; k++) { @@ -279,7 +283,18 @@ bool TDianaExport_app::deploy_data(const int logicnum) bool TDianaExport_app::rko_outta_nowhere(const int logicnum) { - diana_db().sq_set_exec(TString().cut(0) << "DROP TABLE " << logic2table(logicnum) << ';') && diana_db().sq_commit(); + diana_db().sq_set_exec(TString().cut(0) << "DROP TABLE CAMPO_" << logic2table(logicnum) << ';') && diana_db().sq_commit(); + return true; +} + +bool TDianaExport_app::launch_ext() +{ + TString ext = ini_get_string(CONFIG_DITTA, "ps1004", "ext"); + if(ext.full()) + { + TExternal_app e(ext); + e.run(true); + } return true; } @@ -292,28 +307,38 @@ bool TDianaExport_app::create() void TDianaExport_app::main_loop() { - TDianaExport_mask msk; - while (msk.run() == K_ENTER) - { - bool connected = false; - _visual = true; + const TFixed_string arg = argv(2); + if(arg.starts_with("-a") || arg.starts_with("-A")) + { + const WINDOW task = TASK_WIN; + xvt_vobj_set_visible(task, FALSE); + export_all() && launch_ext(); + } + else + { + TDianaExport_mask msk; + while (msk.run() == K_ENTER) { - TString ad; ad << msk.get(F_INDIRIZZO) << "@" << msk.get(F_DATABASE); + bool connected = false; + _visual = true; + { + TString ad; ad << msk.get(F_INDIRIZZO) << "@" << msk.get(F_DATABASE); - SSimple_query s(ad, msk.get(F_USER), msk.get(F_PASSWORD), TSDB_MSSQL); - connected = s.sq_is_connect(); - if (connected) - { - msk.save_all(); - message_box("Dati salvati correttamente!"); - } - else - { - error_box("Impossibile stabilire una connessione al database"); + SSimple_query s(ad, msk.get(F_USER), msk.get(F_PASSWORD), TSDB_MSSQL); + connected = s.sq_is_connect(); + if (connected) + { + msk.save_all(); + message_box("Dati salvati correttamente!"); + } + else + { + error_box("Impossibile stabilire una connessione al database"); + } } + connected && yesno_box("Vuoi eseguire l'esportazione dei dati?") && export_all() && launch_ext(); } - connected && yesno_box("Vuoi eseguire l'esportazione dei dati?") && export_all(); - } + } } diff --git a/src/ps/ps1004100a.h b/src/ps/ps1004100a.h index 9a2396dfb..419c45317 100644 --- a/src/ps/ps1004100a.h +++ b/src/ps/ps1004100a.h @@ -1,4 +1,5 @@ #define F_INDIRIZZO 101 #define F_DATABASE 102 #define F_USER 103 -#define F_PASSWORD 104 \ No newline at end of file +#define F_PASSWORD 104 +#define F_EXTERNAL 105 \ No newline at end of file diff --git a/src/ps/ps1004100a.uml b/src/ps/ps1004100a.uml index 78623cded..432dc8996 100644 --- a/src/ps/ps1004100a.uml +++ b/src/ps/ps1004100a.uml @@ -40,4 +40,9 @@ BEGIN CHECKTYPE REQUIRED END + +STRING F_EXTERNAL 255 50 +BEGIN + PROMPT 2 7 "Programma esterno" +END ENDPAGE \ No newline at end of file