Patch level : 12.0 no-patch

Files correlati     : ps
Commento            : Modifiche Diana 2000:
- Aggiunta modalità auto senza finestra
- Aggiunto lancio eseguibile post-esportazione
- Aggiunto prefisso tabelle
This commit is contained in:
Mattia Tollari 2018-10-19 12:10:12 +02:00
parent a150b1039c
commit 3e6707c33e
3 changed files with 53 additions and 22 deletions

View File

@ -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();
}
}
}

View File

@ -1,4 +1,5 @@
#define F_INDIRIZZO 101
#define F_DATABASE 102
#define F_USER 103
#define F_PASSWORD 104
#define F_PASSWORD 104
#define F_EXTERNAL 105

View File

@ -40,4 +40,9 @@ BEGIN
CHECKTYPE REQUIRED
END
STRING F_EXTERNAL 255 50
BEGIN
PROMPT 2 7 "Programma esterno"
END
ENDPAGE