Patch level : 12.0 no-patch
Files correlati : Commento : Modifica programma esportazione: - Separata creazione e sportazione delle tabelle di campo dalle tabelle gen. - Aggiunta creazione degli indici con [COLONNA],...,[_ID_] per ottimizzare le chiamate a database - Spostata funzione di creazione degli indici solo se ricreate le tabelle di campo git-svn-id: svn://10.65.10.50/branches/R_10_00@23500 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
45f28a5232
commit
7322cf44f0
@ -5,9 +5,12 @@
|
|||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
#include <extcdecl.h>
|
#include <extcdecl.h>
|
||||||
|
#include <real.h>
|
||||||
|
|
||||||
#include "ba2900.h"
|
#include "ba2900.h"
|
||||||
|
|
||||||
|
#define TABELLE_CAMPO 171
|
||||||
|
|
||||||
class TMSSQLExport_msk : public TAutomask
|
class TMSSQLExport_msk : public TAutomask
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
@ -48,6 +51,10 @@ TMSSQLExport_msk::TMSSQLExport_msk() : TAutomask("ba2900a")
|
|||||||
set(F_DSN, ini_get_string(CONFIG_DITTA, "Campo_MSSQL_Export", "DSN"));
|
set(F_DSN, ini_get_string(CONFIG_DITTA, "Campo_MSSQL_Export", "DSN"));
|
||||||
set(F_USR, ini_get_string(CONFIG_DITTA, "Campo_MSSQL_Export", "User"));
|
set(F_USR, ini_get_string(CONFIG_DITTA, "Campo_MSSQL_Export", "User"));
|
||||||
set(F_PWD, ini_get_string(CONFIG_DITTA, "Campo_MSSQL_Export", "Password"));
|
set(F_PWD, ini_get_string(CONFIG_DITTA, "Campo_MSSQL_Export", "Password"));
|
||||||
|
set(CHK_CREATEGEN, "X");
|
||||||
|
set(CHK_CREATETABLES, "X");
|
||||||
|
set(CHK_EXPORTGEN, "X");
|
||||||
|
set(CHK_EXPORTTABLES, "X");
|
||||||
}
|
}
|
||||||
|
|
||||||
class TMSSQLExport_app : public TSkeleton_application
|
class TMSSQLExport_app : public TSkeleton_application
|
||||||
@ -60,8 +67,11 @@ protected:
|
|||||||
const TString queryToNull (TString val) const; // Da una query sostituisce tutti i valori vuoti ('') con null
|
const TString queryToNull (TString val) const; // Da una query sostituisce tutti i valori vuoti ('') con null
|
||||||
//*****************************************************************
|
//*****************************************************************
|
||||||
bool emptyTables() const;
|
bool emptyTables() const;
|
||||||
bool esporta() const;
|
bool exportGen() const;
|
||||||
bool createAll() const;
|
bool exportTables() const;
|
||||||
|
bool createGen() const;
|
||||||
|
bool createTables() const;
|
||||||
|
bool createIndexes() const;
|
||||||
// Funzioni di esportazione
|
// Funzioni di esportazione
|
||||||
bool dir_gen() const;
|
bool dir_gen() const;
|
||||||
bool trc_gen() const;
|
bool trc_gen() const;
|
||||||
@ -102,9 +112,19 @@ const TString TMSSQLExport_app::queryToNull(TString val) const
|
|||||||
lastpos++;
|
lastpos++;
|
||||||
val[lastpos] = ' ';
|
val[lastpos] = ' ';
|
||||||
val[lastpos+1] = ' ';
|
val[lastpos+1] = ' ';
|
||||||
val.insert("null", lastpos);
|
val.insert("NULL", lastpos);
|
||||||
lastpos = val.find(",\'\'", lastpos);
|
lastpos = val.find(",\'\'", lastpos);
|
||||||
}
|
}
|
||||||
|
lastpos = val.find(",\'\'", 0); // Devo trovarne uno tra virgole
|
||||||
|
while(lastpos != -1)
|
||||||
|
{
|
||||||
|
lastpos++;
|
||||||
|
val[lastpos] = ' ';
|
||||||
|
val[lastpos+1] = ' ';
|
||||||
|
val.insert("NULL", lastpos);
|
||||||
|
lastpos = val.find(",\'\'", lastpos);
|
||||||
|
}
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,8 +179,7 @@ bool TMSSQLExport_app::testFieldSeq(int val, int arr[]) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Main Program *****************************************************************************************************************************************************************
|
// Main Program *****************************************************************************************************************************************************************
|
||||||
|
bool TMSSQLExport_app::createGen() const
|
||||||
bool TMSSQLExport_app::createAll() const
|
|
||||||
{
|
{
|
||||||
TODBC_recordset sqlset("");
|
TODBC_recordset sqlset("");
|
||||||
// Controllo la connessione di nuovo per essere scrupolosi
|
// Controllo la connessione di nuovo per essere scrupolosi
|
||||||
@ -190,7 +209,18 @@ bool TMSSQLExport_app::createAll() const
|
|||||||
message_box(msg);
|
message_box(msg);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Committo la creazione iniziale delle tabelle custom fondamentali per il passaggio a DB di Campo
|
||||||
|
return sqlset.commit() != -1;
|
||||||
|
}
|
||||||
|
bool TMSSQLExport_app::createTables() const
|
||||||
|
{
|
||||||
|
TODBC_recordset sqlset("");
|
||||||
|
// Controllo la connessione di nuovo per essere scrupolosi
|
||||||
|
if (!sqlset.connect(DSN, usr, psw))
|
||||||
|
return false;
|
||||||
|
ifstream queryFile; // stream dei files con le query
|
||||||
|
|
||||||
// Le tabelle comuni
|
// Le tabelle comuni
|
||||||
TFilename studio("sql\\studiosql.sql");
|
TFilename studio("sql\\studiosql.sql");
|
||||||
queryFile.open(studio);
|
queryFile.open(studio);
|
||||||
@ -209,7 +239,7 @@ bool TMSSQLExport_app::createAll() const
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TString msg("Errore apertura file "); msg << gen;
|
TString msg("Errore apertura file "); msg << studio;
|
||||||
message_box(msg);
|
message_box(msg);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -222,6 +252,12 @@ bool TMSSQLExport_app::createAll() const
|
|||||||
TFilename ditta("sql\\dittesql.sql");
|
TFilename ditta("sql\\dittesql.sql");
|
||||||
TString appsql;
|
TString appsql;
|
||||||
queryFile.open(ditta);
|
queryFile.open(ditta);
|
||||||
|
|
||||||
|
// Creo il cursore delle ditte
|
||||||
|
TRelation relTDitte(LF_NDITTE);
|
||||||
|
TCursor curDitte(&relTDitte);
|
||||||
|
int itemsDitte = curDitte.items();
|
||||||
|
|
||||||
if(queryFile.is_open())
|
if(queryFile.is_open())
|
||||||
{
|
{
|
||||||
while(!queryFile.eof())
|
while(!queryFile.eof())
|
||||||
@ -230,11 +266,7 @@ bool TMSSQLExport_app::createAll() const
|
|||||||
queryFile.getline(aganaye, 10000); // Sei stronzo se fai una riga con più di 10.000 caratteri
|
queryFile.getline(aganaye, 10000); // Sei stronzo se fai una riga con più di 10.000 caratteri
|
||||||
appsql << aganaye;
|
appsql << aganaye;
|
||||||
}
|
}
|
||||||
// Guardo le ditte che ci sono
|
for(curDitte = 0; curDitte.pos() < curDitte.items(); ++curDitte)
|
||||||
TRelation relTDitte(LF_NDITTE);
|
|
||||||
TCursor curDitte(&relTDitte);
|
|
||||||
int itemsDitte = curDitte.items();
|
|
||||||
for(;curDitte.pos() < curDitte.items(); ++curDitte)
|
|
||||||
{
|
{
|
||||||
TRectype dittaCurr = curDitte.curr();
|
TRectype dittaCurr = curDitte.curr();
|
||||||
TString nomeDitta(dittaCurr.get("CODDITTA"));
|
TString nomeDitta(dittaCurr.get("CODDITTA"));
|
||||||
@ -260,18 +292,113 @@ bool TMSSQLExport_app::createAll() const
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TString msg("Errore apertura file "); msg << gen;
|
TString msg("Errore apertura file "); msg << ditta;
|
||||||
message_box(msg);
|
message_box(msg);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Committo la creazione iniziale delle tabelle custom fondamentali per il passaggio a DB di Campo
|
// Committo la creazione iniziale delle tabelle custom fondamentali per il passaggio a DB di Campo
|
||||||
return sqlset.commit() == -1 ? false : true;
|
return sqlset.commit() != -1 && createIndexes();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TMSSQLExport_app::esporta() const
|
/*
|
||||||
|
* Creatore di indici NON CLUSTER per campo
|
||||||
|
* Sintassi: CREATE NONCLUSTERED INDEX nome_indice ON nome_tabella (colonna1 [ASC | DESC], colonna2 [ASC | DESC][,...n])
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
bool TMSSQLExport_app::createIndexes() const
|
||||||
|
{
|
||||||
|
TODBC_recordset sqlset("");
|
||||||
|
if (!sqlset.connect(DSN, usr, psw))
|
||||||
|
return "Connessione fallita!";
|
||||||
|
int items = TABELLE_CAMPO; // Numero totale di tabelle
|
||||||
|
COpenDir((int)_manulock, NORDIR); // Apro dir.gen
|
||||||
|
|
||||||
|
// Creo il cursore delle ditte per i nomi delle tabelle
|
||||||
|
TRelation relTDitte(LF_NDITTE);
|
||||||
|
TCursor curDitte(&relTDitte);
|
||||||
|
int itemsDitte = curDitte.items();
|
||||||
|
|
||||||
|
TProgress_monitor p(items, "Creazione indici");
|
||||||
|
for (int i = 2; i < items; i++)
|
||||||
|
{
|
||||||
|
if (!p.add_status())
|
||||||
|
break;
|
||||||
|
if (i > 30 && i != 171) continue;
|
||||||
|
FileDes d;
|
||||||
|
CGetFile(i, &d, _nolock, NORDIR);
|
||||||
|
|
||||||
|
RecDes r;
|
||||||
|
CGetRec(i, &r, NORDIR);
|
||||||
|
for (int k = 0; k < r.NKeys; k++)
|
||||||
|
{
|
||||||
|
KeyDes key = r.Ky[k];
|
||||||
|
// Precarico le chiavi
|
||||||
|
TString columns;
|
||||||
|
for(int j = 0; j < key.NkFields; j++)
|
||||||
|
{
|
||||||
|
// Trovo il numero del campo
|
||||||
|
int field = (int)key.FieldSeq[j];
|
||||||
|
// Controllo se è upper
|
||||||
|
bool upper = false;
|
||||||
|
if (field > 100)
|
||||||
|
{
|
||||||
|
field -= 100;
|
||||||
|
upper = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lo vado a trovare in RecFieldDes
|
||||||
|
RecFieldDes fDes = r.Fd[field];
|
||||||
|
|
||||||
|
columns << (false ? "UPPER (" : "") << fDes.Name << (false ? ")," : ","); // Disabilitato upper
|
||||||
|
}
|
||||||
|
columns << "_ID_";
|
||||||
|
|
||||||
|
TString sqlQuery(""); // Inizio la creazione dell'indice
|
||||||
|
TString indexName;
|
||||||
|
if(d.SysName[0] == '%')
|
||||||
|
{
|
||||||
|
indexName << "CI_" << TString(d.SysName + 1).upper() << "_K" << k + 1;
|
||||||
|
TString tableName; tableName << "[" << d.SysName + 1 << "]";
|
||||||
|
//Creo la query
|
||||||
|
sqlQuery << "CREATE NONCLUSTERED INDEX " << indexName << " ON [" << d.SysName + 1 << "] (" << columns << ");";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Ciclo per ogni azienda
|
||||||
|
for(curDitte = 0; curDitte.pos() < curDitte.items(); ++curDitte)
|
||||||
|
{
|
||||||
|
TRectype dittaCurr = curDitte.curr();
|
||||||
|
TString nomeDitta(dittaCurr.get("CODDITTA"));
|
||||||
|
for (int i = 0, applen = nomeDitta.len(); i < 5 - applen; i++)
|
||||||
|
nomeDitta.insert("0");
|
||||||
|
|
||||||
|
indexName = TString("CI_") << nomeDitta << "A_" << TString(d.SysName + 1).upper() << "_K" << k + 1;
|
||||||
|
TString tableName; tableName << "[" << nomeDitta << "A_" << d.SysName + 1 << "]";
|
||||||
|
// Aggiungo alla query
|
||||||
|
sqlQuery << "CREATE NONCLUSTERED INDEX " <<indexName << " ON "<< tableName << " (" << columns << ");";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(sqlset.exec(queryToNull(sqlQuery)) != 1)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(sqlset.commit() == -1)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TMSSQLExport_app::exportGen() const
|
||||||
|
{
|
||||||
|
return dir_gen() && trc_gen();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TMSSQLExport_app::exportTables() const
|
||||||
{
|
{
|
||||||
// Funzione disabilitata di debug
|
|
||||||
// Innanzitutto svuoto le tabelle
|
// Innanzitutto svuoto le tabelle
|
||||||
if(!emptyTables()) return false;
|
if(!emptyTables()) return false;
|
||||||
|
|
||||||
@ -282,15 +409,8 @@ bool TMSSQLExport_app::esporta() const
|
|||||||
{
|
{
|
||||||
bool wat = false;
|
bool wat = false;
|
||||||
// Inizio con dir.gen
|
// Inizio con dir.gen
|
||||||
if(!dir_gen()) //throw "ERRORE DIR.GEN";
|
|
||||||
wat = true;
|
|
||||||
if(!trc_gen()) //throw "ERRORE TRC.GEN";
|
|
||||||
wat = true;
|
|
||||||
TString generalErrors;
|
TString generalErrors;
|
||||||
if(!exportManager(generalErrors))
|
exportManager(generalErrors);
|
||||||
wat = true;
|
|
||||||
//throw generalErrors;
|
|
||||||
//if(!o01a("O01")) throw "ERRORE TABELLA: O01A";
|
|
||||||
}
|
}
|
||||||
catch (TString orrore)
|
catch (TString orrore)
|
||||||
{
|
{
|
||||||
@ -306,7 +426,7 @@ bool TMSSQLExport_app::dir_gen() const
|
|||||||
// Controllo la connessione
|
// Controllo la connessione
|
||||||
if (!sqlset.connect(DSN, usr, psw))
|
if (!sqlset.connect(DSN, usr, psw))
|
||||||
return false;
|
return false;
|
||||||
int items = 171; // Numero totale di tabelle
|
int items = TABELLE_CAMPO; // Numero totale di tabelle
|
||||||
TString msg("Esportazione elenco directory");
|
TString msg("Esportazione elenco directory");
|
||||||
COpenDir((int)_manulock, NORDIR); // Apro dir.gen
|
COpenDir((int)_manulock, NORDIR); // Apro dir.gen
|
||||||
TProgress_monitor p(items, msg);
|
TProgress_monitor p(items, msg);
|
||||||
@ -340,7 +460,7 @@ bool TMSSQLExport_app::trc_gen() const
|
|||||||
// Controllo la connessione
|
// Controllo la connessione
|
||||||
if (!sqlset.connect(DSN, usr, psw))
|
if (!sqlset.connect(DSN, usr, psw))
|
||||||
return false;
|
return false;
|
||||||
int items = 171; // Numero totale di tabelle
|
int items = TABELLE_CAMPO; // Numero totale di tabelle
|
||||||
TString msg("Esportazione tracciati record");
|
TString msg("Esportazione tracciati record");
|
||||||
COpenDir((int)_manulock, NORDIR); // Apro dir.gen
|
COpenDir((int)_manulock, NORDIR); // Apro dir.gen
|
||||||
TProgress_monitor p(items-1, msg);
|
TProgress_monitor p(items-1, msg);
|
||||||
@ -398,13 +518,9 @@ bool TMSSQLExport_app::trc_gen() const
|
|||||||
// siccome i valori possono essere sporchi (mannaggina) controllo che dopo la prima chiave (must have) le altre celle non abbiano un valore fuori range o != 0
|
// siccome i valori possono essere sporchi (mannaggina) controllo che dopo la prima chiave (must have) le altre celle non abbiano un valore fuori range o != 0
|
||||||
TToken_string FieldSeq("");
|
TToken_string FieldSeq("");
|
||||||
int appFS = 0, vappFS[MKFields] = { 0 };
|
int appFS = 0, vappFS[MKFields] = { 0 };
|
||||||
do
|
// Metto tanti valori quanti ne sono presenti in NkFields
|
||||||
{
|
for(int i = 0; i < k.NkFields; i++)
|
||||||
vappFS[appFS] = k.FieldSeq[appFS];
|
FieldSeq.add((int)k.FieldSeq[i]);
|
||||||
FieldSeq.add((int)k.FieldSeq[appFS]);
|
|
||||||
appFS++;
|
|
||||||
} while (appFS < MKFields && testFieldSeq((int)k.FieldSeq[appFS], vappFS) && k.FieldSeq[appFS] < 200);
|
|
||||||
|
|
||||||
// FromCh, ToCh
|
// FromCh, ToCh
|
||||||
TToken_string FromCh(""), ToCh("");
|
TToken_string FromCh(""), ToCh("");
|
||||||
int app = 0;
|
int app = 0;
|
||||||
@ -439,15 +555,15 @@ bool TMSSQLExport_app::exportManager(TString generalErrors) const
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
COpenDir((int)_manulock, NORDIR); // Apro dir.gen
|
COpenDir((int)_manulock, NORDIR); // Apro dir.gen
|
||||||
int items = 171; // Numero totale di tabelle
|
int items = TABELLE_CAMPO; // Numero totale di tabelle
|
||||||
TString msg("Esportazione Tabelle");
|
TString msg("Esportazione Tabelle");
|
||||||
TProgress_monitor p(items-1, msg);
|
TProgress_monitor p(items-1, msg);
|
||||||
|
|
||||||
for (int i = 2; i <= items && !p.is_cancelled(); i++)
|
for (int i = 2; i <= items && !p.is_cancelled(); i++)
|
||||||
{
|
{
|
||||||
//if (!p.add_status())
|
if (!p.add_status())
|
||||||
//break;
|
break;
|
||||||
if (i != 2 && i != 4 && i != 6 && i != 9 && i != 10 && i != 11 && i != 13 && i != 3) continue;
|
if (i > 30 && i != 171) continue;
|
||||||
FileDes fd;
|
FileDes fd;
|
||||||
CGetFile(i, &fd, _nolock, NORDIR); // Informazioni per il nome tabella
|
CGetFile(i, &fd, _nolock, NORDIR); // Informazioni per il nome tabella
|
||||||
|
|
||||||
@ -458,16 +574,16 @@ bool TMSSQLExport_app::exportManager(TString generalErrors) const
|
|||||||
TCursor curTable(&relTable);
|
TCursor curTable(&relTable);
|
||||||
int itemsTable = curTable.items();
|
int itemsTable = curTable.items();
|
||||||
TString msgTable; msgTable << "Esportazione tabella " << fd.SysName;
|
TString msgTable; msgTable << "Esportazione tabella " << fd.SysName;
|
||||||
TProgress_monitor pTable(itemsTable, msg);
|
TProgress_monitor pTable(itemsTable, msgTable);
|
||||||
for(int j = curTable.pos(); curTable.pos() < itemsTable; j++, ++curTable)
|
for(int j = curTable.pos(); curTable.pos() < itemsTable; j++, ++curTable)
|
||||||
{
|
{
|
||||||
//if (!pTable.add_status()) Sputtana a caso
|
if (!pTable.add_status())
|
||||||
//break;
|
break;
|
||||||
TRectype rowTable = curTable.curr();
|
TRectype rowTable = curTable.curr();
|
||||||
// Creo la query con due stringhe
|
// Creo la query con due stringhe
|
||||||
TString queryF, queryV;
|
TString queryF, queryV;
|
||||||
|
TString prefix(fd.SysName[0] == '$' ? "00001A_" : "");
|
||||||
queryF << "INSERT INTO [dbo].[" << fd.SysName + 1 << "] ("; // Tolgo il simbolo iniziale
|
queryF << "INSERT INTO [dbo].[" << prefix << fd.SysName + 1 << "] ("; // Tolgo il simbolo iniziale
|
||||||
queryV << "(";
|
queryV << "(";
|
||||||
|
|
||||||
for(int k = 0; k < rd.NFields; k++)
|
for(int k = 0; k < rd.NFields; k++)
|
||||||
@ -478,15 +594,49 @@ bool TMSSQLExport_app::exportManager(TString generalErrors) const
|
|||||||
queryV << "''";
|
queryV << "''";
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(rd.Fd[k].TypeF == 5) // É di tipo data
|
switch (rd.Fd[k].TypeF)
|
||||||
|
{
|
||||||
|
// Int
|
||||||
|
case 2:
|
||||||
|
case 6:
|
||||||
|
queryV << "'" << atoi(rowTable.get(rd.Fd[k].Name)) << "'";
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Long
|
||||||
|
case 3:
|
||||||
|
queryV << "'" << atol(rowTable.get(rd.Fd[k].Name)) << "'";
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Real
|
||||||
|
case 4:
|
||||||
|
queryV << "'" << real(rowTable.get(rd.Fd[k].Name)) << "'";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5:
|
||||||
queryV << "'" << toDate(rowTable.get(rd.Fd[k].Name)) << "'";
|
queryV << "'" << toDate(rowTable.get(rd.Fd[k].Name)) << "'";
|
||||||
else if(rd.Fd[k].TypeF == 8) // É di tipo bool
|
break;
|
||||||
|
|
||||||
|
case 8:
|
||||||
if(rowTable.get(rd.Fd[k].Name) == "X")
|
if(rowTable.get(rd.Fd[k].Name) == "X")
|
||||||
queryV << "'True'";
|
queryV << "'True'";
|
||||||
else
|
else
|
||||||
queryV << "'False'";
|
queryV << "'False'";
|
||||||
else
|
break;
|
||||||
|
|
||||||
|
// Int zerof
|
||||||
|
case 9:
|
||||||
|
queryV << "'" << atoi(rowTable.get(rd.Fd[k].Name)) << "'";
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Long zerof
|
||||||
|
case 10:
|
||||||
|
queryV << "'" << atol(rowTable.get(rd.Fd[k].Name)) << "'";
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
queryV << "'" << toEscape(rowTable.get(rd.Fd[k].Name)) << "'";
|
queryV << "'" << toEscape(rowTable.get(rd.Fd[k].Name)) << "'";
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if( k+1 < rd.NFields ) // Modo più comodo
|
if( k+1 < rd.NFields ) // Modo più comodo
|
||||||
{
|
{
|
||||||
@ -524,10 +674,19 @@ void TMSSQLExport_app::main_loop()
|
|||||||
if(checkParameters(DSN, usr, psw))
|
if(checkParameters(DSN, usr, psw))
|
||||||
{
|
{
|
||||||
// Per comodità utilizzo gli AND short circuits, solo se i bool danno true eseguo la funzione dopo!
|
// Per comodità utilizzo gli AND short circuits, solo se i bool danno true eseguo la funzione dopo!
|
||||||
if(m.get_bool(CHK_CREATEALL) && createAll())
|
if(m.get_bool(CHK_CREATEGEN))
|
||||||
message_box("Create ok!");
|
if(!createGen())
|
||||||
if(m.get_bool(CHK_LOAD) && esporta())
|
message_box("ERROR: Creazione tabelle gen fallita");
|
||||||
message_box("Migrazione effettuata correttamente!");
|
if(m.get_bool(CHK_CREATETABLES))
|
||||||
|
if(!createTables())
|
||||||
|
message_box("ERROR: Creazione tabelle campo fallita");
|
||||||
|
if(m.get_bool(CHK_EXPORTGEN))
|
||||||
|
if (!exportGen())
|
||||||
|
message_box("CERROR: Esportazione tabelle gen fallita");
|
||||||
|
if(m.get_bool(CHK_EXPORTTABLES))
|
||||||
|
if(!exportTables())
|
||||||
|
message_box("ERROR: Esportazione tabelle campo fallita");
|
||||||
|
message_box("Migrazione effettuata correttamente!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
message_box("Fallita connessione");
|
message_box("Fallita connessione");
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#define F_DSN 250
|
#define F_DSN 250
|
||||||
#define F_USR 251
|
#define F_USR 251
|
||||||
#define F_PWD 252
|
#define F_PWD 252
|
||||||
#define CHK_CREATEALL 253
|
#define CHK_CREATEGEN 253
|
||||||
#define CHK_LOAD 254
|
#define CHK_CREATETABLES 254
|
||||||
|
#define CHK_EXPORTGEN 255
|
||||||
|
#define CHK_EXPORTTABLES 256
|
||||||
|
@ -27,14 +27,24 @@ BEGIN
|
|||||||
FLAGS "*"
|
FLAGS "*"
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN CHK_CREATEALL
|
BOOLEAN CHK_CREATEGEN
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 5 "Elimina e ricrea tutte le tabelle, Attenzione! I dati presenti verranno eliminati!"
|
PROMPT 1 5 "Elimina e ricrea tutte le tabelle gen, Attenzione! I dati presenti verranno eliminati!"
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN CHK_LOAD
|
BOOLEAN CHK_CREATETABLES
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 6 "Carica tutti i dati nel DB"
|
PROMPT 1 6 "Elimina e ricrea tutte le tabelle campo, Attenzione! I dati presenti verranno eliminati!"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN CHK_EXPORTGEN
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 7 "Esporta tabelle gen"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN CHK_EXPORTTABLES
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 8 "Esporta tabelle dati"
|
||||||
END
|
END
|
||||||
|
|
||||||
END
|
END
|
||||||
|
Loading…
x
Reference in New Issue
Block a user