Patch level : 12.0 no-patch
Files correlati : Commento : Inizio sviluppo personalizzazione Campo/Compass - Caricamento tutte le tabelle tranne A01A (non sono sicuro funzioni al 100%), le tabelle 001B/C sono state momentaneamente sospese - Preparate funzioni per comunicare il trasferimento di dati a Compass - Aggiunta funzione zeroFill per sistemare i codici più corti di 6 caratteri git-svn-id: svn://10.65.10.50/branches/R_10_00@23385 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
550794c12a
commit
51ad4ae994
@ -98,14 +98,27 @@ class TCampass_app : public TSkeleton_application
|
||||
protected:
|
||||
TToken_string tables;
|
||||
const TString getFam(TString codArt) const {TString app; app << codArt[3] << codArt[4] << codArt[5]; return app; } // Restituisce la famiglia di un prodotto CODART[3,5]
|
||||
const TString getGroup(TString codTab) const {TString app; app << codTab[1] << codTab[2] << codTab[3]; return app; } // Restituisce la famiglia di un prodotto CODART[3,5]
|
||||
const TString toEscape(TString val) const; // Prende una stringa e sistema i caratteri di escape
|
||||
const TString zeroFill(TString val) const; // Riempe di 0 se non ci sono 6 caratteri
|
||||
//*****************************************************************
|
||||
// Funzioni per segnalare a Compass il trasferimento delle tabelle
|
||||
TString startExport(const TString& DSN, TString prefixTables) const;
|
||||
void endExport(const TString& DSN, TString id) const;
|
||||
//*****************************************************************
|
||||
bool create_table(const TString& DSN, TIsam_handle lf) const;
|
||||
bool emptyTables(const TString& DSN) const;
|
||||
bool esporta(const TString& DSN, const TDate& datef, const TDate& datet) const;
|
||||
// Funzioni di esportazione
|
||||
bool o02a(const TString& DSN) const;
|
||||
bool o03a(const TString& DSN) const;
|
||||
bool p01a(const TString& DSN) const;
|
||||
bool a01a(const TString& DSN, const TString id) const;
|
||||
bool o01a(const TString& DSN, const TString id) const;
|
||||
bool o02a(const TString& DSN, const TString id) const;
|
||||
bool o02c(const TString& DSN, const TString id) const;
|
||||
bool o03a(const TString& DSN, const TString id) const;
|
||||
bool p01a(const TString& DSN, const TString id) const;
|
||||
bool p01b(const TString& DSN, const TString id) const;
|
||||
bool p02a(const TString& DSN, const TString id) const;
|
||||
//bool o01b(const TString& DSN) const; Messa in pausa
|
||||
|
||||
public:
|
||||
virtual void main_loop();
|
||||
@ -129,6 +142,44 @@ const TString TCampass_app::toEscape(TString val) const
|
||||
}
|
||||
return app;
|
||||
}
|
||||
|
||||
const TString TCampass_app::zeroFill(TString val) const
|
||||
{
|
||||
TString app;
|
||||
if (6 - val.len() > 0)
|
||||
app.fill('0', 6 - val.len());
|
||||
app << val;
|
||||
return app;
|
||||
}
|
||||
|
||||
TString TCampass_app::startExport(const TString& DSN, TString prefixTables) const
|
||||
{
|
||||
TODBC_recordset sqlset("", true);
|
||||
// Controllo la connessione
|
||||
if (!sqlset.connect(DSN))
|
||||
return "";
|
||||
|
||||
//Preparo la query
|
||||
TString sqlQuery; sqlQuery << "INSERT INTO RunImp (CFLUSSO, DWINI) VALUES ('" << prefixTables << "',CURRENT_TIMESTAMP);";
|
||||
TString selectString; selectString << "SELECT TOP 1 IDRUNIMP FROM RunImp ORDER BY IDRUNIMP DESC";
|
||||
sqlset.exec(sqlQuery);
|
||||
sqlset.commit();
|
||||
sqlset.exec(selectString);
|
||||
sqlset.move_next();
|
||||
TVariant idrunimp = sqlset.get("IDRUNIMP");
|
||||
return idrunimp.as_string();
|
||||
}
|
||||
|
||||
void TCampass_app::endExport(const TString& DSN, TString id) const
|
||||
{
|
||||
TODBC_recordset sqlset("", true);
|
||||
sqlset.connect(DSN);
|
||||
//Preparo la query
|
||||
TString sqlQuery; sqlQuery << "UPDATE RunImp SET DWEND = CURRENT_TIMESTAMP WHERE IDRUNIMP = '" << id << "'";
|
||||
sqlset.exec(sqlQuery);
|
||||
sqlset.commit();
|
||||
}
|
||||
|
||||
bool TCampass_app::emptyTables(const TString& DSN) const
|
||||
{
|
||||
TODBC_recordset sqlset("");
|
||||
@ -155,18 +206,199 @@ bool TCampass_app::esporta(const TString& DSN, const TDate& datef, const TDate&
|
||||
// Innanzitutto svuoto le tabelle
|
||||
if(!emptyTables(DSN)) return false;
|
||||
|
||||
// Adesso inizio a riempirle
|
||||
// O02A
|
||||
if(!o02a(DSN)) return false;
|
||||
// O03A
|
||||
if(!o03a(DSN)) return false;
|
||||
// P01A
|
||||
if(!p01a(DSN)) return false;
|
||||
// Adesso inizio a popolarle
|
||||
|
||||
// O01B, quasi finito di implementarla, è stata messa in pausa
|
||||
//if(!o01b(DSN)) return false;
|
||||
|
||||
// INIZIO A01
|
||||
TString a01; a01 << startExport(DSN, "A01");
|
||||
|
||||
//if(!a01a(DSN, a01)) return false; // A01A
|
||||
|
||||
endExport(DSN, a01);
|
||||
|
||||
|
||||
// INIZIO O01
|
||||
TString o01; o01 << startExport(DSN, "O01");
|
||||
|
||||
//if(!o01a(DSN, o01)) return false; // O01A
|
||||
|
||||
endExport(DSN, o01);
|
||||
|
||||
// INIZIO O02
|
||||
TString o02; o02 << startExport(DSN, "O02");
|
||||
|
||||
//if(!o02a(DSN, o02)) return false; // O02A
|
||||
if(!o02c(DSN, o02)) return false; // O02C
|
||||
|
||||
endExport(DSN, o02);
|
||||
|
||||
// INIZIO O03
|
||||
TString o03; o03 << startExport(DSN, "O03");
|
||||
|
||||
//if(!o03a(DSN, o03)) return false; // O03A
|
||||
|
||||
endExport(DSN, o03);
|
||||
|
||||
// INIZIO p01
|
||||
TString p01; p01 << startExport(DSN, "P01");
|
||||
|
||||
//if(!p01a(DSN, p01)) return false; // P01A
|
||||
//if(!p01b(DSN, p01)) return false; // P01B
|
||||
|
||||
endExport(DSN, p01);
|
||||
|
||||
// INIZIO p02
|
||||
TString p02; p02 << startExport(DSN, "P02");
|
||||
|
||||
//if(!p02a(DSN, p02)) return false; // P02A
|
||||
|
||||
endExport(DSN, p02);
|
||||
|
||||
return true;
|
||||
}
|
||||
bool TCampass_app::o02a(const TString& DSN) const
|
||||
|
||||
// Non sono molto sicuro del suo funzionamento
|
||||
bool TCampass_app::a01a(const TString& DSN, const TString id) const
|
||||
{
|
||||
TODBC_recordset sqlset("", true);
|
||||
// Controllo la connessione
|
||||
if (!sqlset.connect(DSN))
|
||||
return false;
|
||||
TRelation rilprod(LF_RILPROD),rdoc(LF_RIGHEDOC);
|
||||
int items;
|
||||
TString msg("Esportazione tabella "); msg << "A01A";
|
||||
TCursor curRilprod(&rilprod, "CODNUM == \"ORC\"");
|
||||
|
||||
items = curRilprod.items();
|
||||
TProgress_monitor p(items, msg);
|
||||
// Adesso inserisco tutta la bella roba
|
||||
for (curRilprod = 0; curRilprod.pos() < items && !p.is_cancelled(); ++curRilprod)
|
||||
{
|
||||
int num = curRilprod.pos();
|
||||
// Aggiorno il Progress Monitor
|
||||
if (!p.add_status())
|
||||
break;
|
||||
// Prendo la riga di RILPROD
|
||||
TRectype rowRilprod = curRilprod.curr();
|
||||
|
||||
// Vado a prendere il documento di riferimento
|
||||
TRectype filtroFiltro(rdoc.curr());
|
||||
filtroFiltro.put("CODNUM", "ORC"); // Passo direttamente questo senza richiederlo
|
||||
filtroFiltro.put("ANNO", rowRilprod.get("ANNO"));
|
||||
filtroFiltro.put("PROVV", rowRilprod.get("PROVV"));
|
||||
filtroFiltro.put("NDOC", rowRilprod.get("NDOC"));
|
||||
TCursor curFiltro(&rdoc, "RIGAEVASA != \"X\"", 1, &filtroFiltro, &filtroFiltro);
|
||||
if(curFiltro.items() > 0)
|
||||
{
|
||||
curFiltro = 0;
|
||||
// Prendo la riga di Filtro
|
||||
TRectype rowFiltro = curFiltro.curr();
|
||||
// Preparo la riga del documento
|
||||
TRectype filtroRDoc(rdoc.curr());
|
||||
filtroRDoc.put("DAPROVV", rowFiltro.get("PROVV")); // Passo direttamente questo senza richiederlo
|
||||
filtroRDoc.put("DAANNO", rowFiltro.get("ANNO"));
|
||||
filtroRDoc.put("DACODNUM", "ORC");
|
||||
filtroRDoc.put("DANDOC", rowFiltro.get("NDOC"));
|
||||
filtroRDoc.put("DAIDRIGA", rowFiltro.get("NRIGA"));
|
||||
TString codartmag; codartmag << "CODARTMAG == \"" << rowRilprod.get("CODART") << "\"";
|
||||
TCursor curRdoc(&rdoc, codartmag, 4, &filtroRDoc, &filtroRDoc);
|
||||
if(curRdoc.items() == 1)
|
||||
{
|
||||
curRdoc = 0;
|
||||
// Prendo la riga di RDOC
|
||||
TRectype rowRDoc = curRdoc.curr();
|
||||
// Dichiaro la stringa
|
||||
TString sqlQuery;
|
||||
sqlQuery << "INSERT INTO A01A ( IKRUNIMP, FAZI, CPRD, NMOV, CMAC, QPFPRO, FSALDO ) \
|
||||
VALUES('" << id << "','U','" << rowRDoc.get("NDOC") << "." << rowRDoc.get("NRIGA") << "','1','" << rowRilprod.get("LINEA") << "','" << rowRilprod.get("QTA") << "','";
|
||||
sqlQuery << (rowRilprod.get("CHIUSO") == "-1" ? "1" : "0"); sqlQuery << "');";
|
||||
if(sqlset.exec(sqlQuery) != 1)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return sqlset.commit() == -1 ? false : true;
|
||||
}
|
||||
bool TCampass_app::o01a(const TString& DSN, const TString id) const
|
||||
{
|
||||
TODBC_recordset sqlset("", true);
|
||||
// Controllo la connessione
|
||||
if (!sqlset.connect(DSN))
|
||||
return false;
|
||||
TRelation doc(LF_DOC),rdoc(LF_RIGHEDOC);
|
||||
int items;
|
||||
TString msg("Esportazione tabella "); msg << "O01A";
|
||||
// Creo il filtro per la chiave del cursore, da quel che ho capito le chiavi sono più veloci di un filtro (come è possibile?)
|
||||
TRectype filtroRDoc(rdoc.curr()); filtroRDoc.put("CODNUM", "ORP1");
|
||||
TCursor curRDoc(&rdoc, "", 1, &filtroRDoc, &filtroRDoc);
|
||||
items = curRDoc.items();
|
||||
TProgress_monitor p(items, msg);
|
||||
// Adesso inserisco tutta la bella roba
|
||||
for (curRDoc = 0; curRDoc.pos() < items && !p.is_cancelled(); ++curRDoc)
|
||||
{
|
||||
int num = curRDoc.pos();
|
||||
// Aggiorno il Progress Monitor
|
||||
if (!p.add_status())
|
||||
break;
|
||||
// Prendo la riga del FILTRO
|
||||
TRectype rowRDoc = curRDoc.curr();
|
||||
|
||||
// Vado a prendere il documento di riferimento
|
||||
TRectype filtroDoc(doc.curr());
|
||||
filtroDoc.put(DOC_PROVV, rowRDoc.get("PROVV"));
|
||||
filtroDoc.put(DOC_ANNO, rowRDoc.get("ANNO"));
|
||||
filtroDoc.put(DOC_CODNUM, rowRDoc.get("CODNUM"));
|
||||
filtroDoc.put(DOC_NDOC, rowRDoc.get("NDOC"));
|
||||
TCursor curDoc(&doc, "", 1, &filtroDoc, &filtroDoc);
|
||||
if(curDoc.items() > 0)
|
||||
{
|
||||
// Forzo a 0, sennò ci sono problemi di sporcizia
|
||||
curDoc = 0;
|
||||
TRectype rowDoc = (curDoc.curr());
|
||||
|
||||
// Vado a prendere la riga di riferimento
|
||||
TRectype filtroFiltro(rdoc.curr());
|
||||
if(rowRDoc.get("DACODNUM") == "ORC")
|
||||
{
|
||||
filtroFiltro.put("CODNUM", rowRDoc.get("DACODNUM"));
|
||||
filtroFiltro.put("ANNO", rowRDoc.get("DAANNO"));
|
||||
filtroFiltro.put("PROVV", rowRDoc.get("DAPROVV"));
|
||||
filtroFiltro.put("NDOC", rowRDoc.get("DANDOC"));
|
||||
filtroFiltro.put("NRIGA", rowRDoc.get("DAIDRIGA"));
|
||||
TCursor curFiltro(&rdoc, "RIGAEVASA != \"X\"", 1, &filtroFiltro, &filtroFiltro);
|
||||
for (curFiltro = 0; curFiltro.pos() < curFiltro.items() && !p.is_cancelled(); ++curFiltro)
|
||||
{
|
||||
// Dichiaro la stringa
|
||||
TString sqlQuery;
|
||||
|
||||
// Inserisco IIKRUNIMP, FAZI, CStr, CPRD, CART
|
||||
sqlQuery << "INSERT INTO O01A ( IKRUNIMP, FAZI, CStr, CPRD, CART, TIPORD, FLGSTA, CMAG, DPRICHI, DPRICHF, QPORD, XNOTE, CCLI ) \
|
||||
VALUES('" << id << "','U','DBS','" << rowDoc.get("NDOC") << "." << rowRDoc.get("NRIGA") << "','" << rowRDoc.get("CODARTMAG") << "','";
|
||||
|
||||
// Inserisco TIPORD
|
||||
sqlQuery << (rowRDoc.get("DACODNUM") == "ORC" ? "R" : "P");
|
||||
// Inserisco FLGSTA, CMAG, DPRICHI, DPRICHF, QPORD, XNOTE, CCLI
|
||||
sqlQuery << "','" << rowRDoc.get("RIGAEVASA") << "','" << rowRDoc.get("CODMAG") << "','" << rowDoc.get("DATADOC") << "','" << rowRDoc.get("DATACONS")
|
||||
<< "','" << rowRDoc.get("QTA") << "',";
|
||||
// Controllo che il campo DESCEST sia pieno
|
||||
TString desc; desc << rowRDoc.get("DESCEST");
|
||||
if(desc.len() == 0)
|
||||
sqlQuery << "NULL,";
|
||||
else
|
||||
sqlQuery << "'" << desc << "',";
|
||||
sqlQuery << "'" << rowDoc.get("CODCF") << "');";
|
||||
|
||||
if(sqlset.exec(sqlQuery) != 1)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return sqlset.commit() == -1 ? false : true;
|
||||
}
|
||||
bool TCampass_app::o02a(const TString& DSN, const TString id) const
|
||||
{
|
||||
TODBC_recordset sqlset("", true);
|
||||
// Controllo la connessione
|
||||
@ -194,11 +426,6 @@ bool TCampass_app::o02a(const TString& DSN) const
|
||||
|
||||
// Vado a prendere il documento di riferimento
|
||||
TRectype filtroDoc(doc.curr());
|
||||
TString a,b,c,d;
|
||||
a << rowRDoc.get("PROVV");
|
||||
b << rowRDoc.get("ANNO");
|
||||
c << rowRDoc.get("CODNUM");
|
||||
d << rowRDoc.get("NDOC");
|
||||
filtroDoc.put(DOC_PROVV, rowRDoc.get("PROVV"));
|
||||
filtroDoc.put(DOC_ANNO, rowRDoc.get("ANNO"));
|
||||
filtroDoc.put(DOC_CODNUM, rowRDoc.get("CODNUM"));
|
||||
@ -211,7 +438,7 @@ bool TCampass_app::o02a(const TString& DSN) const
|
||||
|
||||
// Inserisco IKRUNIMP, FAZI, CStr, CMAG, CCLIH, CCLIR, CCLI
|
||||
sqlQuery << "INSERT INTO O02A ( IKRUNIMP, FAZI, CStr, CMAG, CCLIH, CCLIR, CCLI, FLGSTA, XRIFCLI, XNOTE, CART, QCORD, QCSPE, DCCONF ) \
|
||||
VALUES('1','U','DBS','" << rowRDoc.get("CODMAG") << "','" << rowRDoc.get("NDOC") << "','" << rowRDoc.get("NRIGA") << "','" << rowDoc.get("CODCF") << "','";
|
||||
VALUES('" << id << "','U','DBS','" << rowRDoc.get("CODMAG") << "','" << rowRDoc.get("NDOC") << "','" << rowRDoc.get("NRIGA") << "','" << rowDoc.get("CODCF") << "','";
|
||||
// Inserisco FLGSTA
|
||||
sqlQuery << (rowRDoc.get("RIGAEVASA") == "X" ? "C" : "A");
|
||||
// Inserisco XRIFCLI, XNOTE, CART, QCORD, QCSPE, DCCONF
|
||||
@ -223,7 +450,57 @@ bool TCampass_app::o02a(const TString& DSN) const
|
||||
}
|
||||
return sqlset.commit() == -1 ? false : true;
|
||||
}
|
||||
bool TCampass_app::o03a(const TString& DSN) const
|
||||
bool TCampass_app::o02c(const TString& DSN, const TString id) const
|
||||
{
|
||||
TODBC_recordset sqlset("", true);
|
||||
// Controllo la connessione
|
||||
if (!sqlset.connect(DSN))
|
||||
return false;
|
||||
TRelation doc(LF_DOC),rdoc(LF_RIGHEDOC);
|
||||
int items;
|
||||
TString msg("Esportazione tabella "); msg << "O02C";
|
||||
// Creo il filtro per la chiave del cursore, da quel che ho capito le chiavi sono più veloci di un filtro (come è possibile?)
|
||||
TRectype filtroRDoc(rdoc.curr()); filtroRDoc.put("CODNUM", "ORP1");
|
||||
TCursor curRDoc(&rdoc, "", 1, &filtroRDoc, &filtroRDoc);
|
||||
items = curRDoc.items();
|
||||
TProgress_monitor p(items, msg);
|
||||
// Adesso inserisco tutta la bella roba
|
||||
for (curRDoc = 0; curRDoc.pos() < items && !p.is_cancelled(); ++curRDoc)
|
||||
{
|
||||
int num = curRDoc.pos();
|
||||
// Aggiorno il Progress Monitor
|
||||
if (!p.add_status())
|
||||
break;
|
||||
// Prendo la riga del FILTRO
|
||||
TRectype rowRDoc = curRDoc.curr();
|
||||
|
||||
// Vado a prendere la riga di riferimento
|
||||
TRectype filtroFiltro(rdoc.curr());
|
||||
if(rowRDoc.get("DACODNUM") == "ORC")
|
||||
{
|
||||
filtroFiltro.put("CODNUM", rowRDoc.get("DACODNUM"));
|
||||
filtroFiltro.put("ANNO", rowRDoc.get("DAANNO"));
|
||||
filtroFiltro.put("PROVV", rowRDoc.get("DAPROVV"));
|
||||
filtroFiltro.put("NDOC", rowRDoc.get("DANDOC"));
|
||||
filtroFiltro.put("NRIGA", rowRDoc.get("DAIDRIGA"));
|
||||
TCursor curFiltro(&rdoc, "RIGAEVASA != \"X\"", 1, &filtroFiltro, &filtroFiltro);
|
||||
for (curFiltro = 0; curFiltro.pos() < curFiltro.items() && !p.is_cancelled(); ++curFiltro)
|
||||
{
|
||||
// Dichiaro la stringa
|
||||
TString sqlQuery;
|
||||
|
||||
// Inserisco Tutto (yeeeeeeeeeeeeeee)
|
||||
sqlQuery << "INSERT INTO O02C ( IKRUNIMP, CStr, CPRD, CCLIH, CCLIR, BVAL) \
|
||||
VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("NRIGA") << "','" << rowRDoc.get("DANDOC") << "','" << rowRDoc.get("DAIDRIGA") << "','1');";
|
||||
|
||||
if(sqlset.exec(sqlQuery) != 1)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return sqlset.commit() == -1 ? false : true;
|
||||
}
|
||||
bool TCampass_app::o03a(const TString& DSN, const TString id) const
|
||||
{
|
||||
TODBC_recordset sqlset("", true);
|
||||
// Controllo la connessione
|
||||
@ -257,7 +534,7 @@ bool TCampass_app::o03a(const TString& DSN) const
|
||||
}
|
||||
return sqlset.commit() == -1 ? false : true;
|
||||
}
|
||||
bool TCampass_app::p01a(const TString& DSN) const
|
||||
bool TCampass_app::p01a(const TString& DSN, const TString id) const
|
||||
{
|
||||
TODBC_recordset sqlset("", true);
|
||||
// Controllo la connessione
|
||||
@ -283,7 +560,7 @@ bool TCampass_app::p01a(const TString& DSN) const
|
||||
TRectype rowAna = curAna.curr();
|
||||
// Inserisco IKRUNIMP,CART,RPART,CFAM
|
||||
sqlQuery << "INSERT INTO P01A (IKRUNIMP,CART,RART,CFAM,CTART,CUDMP,CUDMM,CUDMA,CUDMV,PCONVPMN,PCONVPMD,PCONVPVN,PCONVPVD,PCONVPAN,PCONVPAD,FOBS) \
|
||||
VALUES('1','" << toEscape(rowAna.get("CODART")) << "','" << toEscape(rowAna.get("DESCR")) << "','" << getFam(rowAna.get("CODART")) <<"','";
|
||||
VALUES('" << id << "','" << toEscape(rowAna.get("CODART")) << "','" << toEscape(rowAna.get("DESCR")) << "','" << getFam(rowAna.get("CODART")) <<"','";
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
@ -360,6 +637,77 @@ bool TCampass_app::p01a(const TString& DSN) const
|
||||
}
|
||||
return sqlset.commit() == -1 ? false : true;
|
||||
}
|
||||
bool TCampass_app::p01b(const TString& DSN, const TString id) const
|
||||
{
|
||||
TODBC_recordset sqlset("", true);
|
||||
// Controllo la connessione
|
||||
if (!sqlset.connect(DSN))
|
||||
return false;
|
||||
TRelation anamag(LF_ANAMAG);
|
||||
int items;
|
||||
TString msg("Esportazione tabella "); msg << "P01B";
|
||||
TCursor curAna(&anamag, "USER3 != \"\"");
|
||||
items = curAna.items();
|
||||
TProgress_monitor p(items, msg);
|
||||
// Adesso inserisco tutta la bella roba
|
||||
for (curAna = 0; curAna.pos() < items && !p.is_cancelled(); ++curAna)
|
||||
{
|
||||
int num = curAna.pos();
|
||||
// Aggiorno il Progress Monitor
|
||||
if (!p.add_status())
|
||||
break;
|
||||
|
||||
// Prendo la riga di TAB
|
||||
TRectype rowAna = curAna.curr();
|
||||
|
||||
// Dichiaro la stringa
|
||||
TString sqlQuery;
|
||||
|
||||
// Inserisco Tutto
|
||||
sqlQuery << "INSERT INTO P01B ( IKRUNIMP, CStr, CART, CPARAM, CPARVAL ) \
|
||||
VALUES('" << id << "','DBS','" << rowAna.get("CODART") << "','MISREA','" << rowAna.get("USER3") << "x"<< rowAna.get("USER4") << "');";
|
||||
if(sqlset.exec(sqlQuery) != 1)
|
||||
return false;
|
||||
}
|
||||
return sqlset.commit() == -1 ? false : true;
|
||||
}
|
||||
bool TCampass_app::p02a(const TString& DSN, const TString id) const
|
||||
{
|
||||
TODBC_recordset sqlset("", true);
|
||||
// Controllo la connessione
|
||||
if (!sqlset.connect(DSN))
|
||||
return false;
|
||||
TRelation tab(LF_TAB);
|
||||
int items;
|
||||
TString msg("Esportazione tabella "); msg << "P02A";
|
||||
// Creo il filtro per la chiave del cursore, da quel che ho capito le chiavi sono più veloci di un filtro (come è possibile?)
|
||||
TRectype filtroTab(tab.curr()); filtroTab.put("COD", "GCA"); filtroTab.put("CODTAB", "2");
|
||||
TCursor curTab(&tab, "", 1, &filtroTab, &filtroTab);
|
||||
items = curTab.items();
|
||||
TProgress_monitor p(items, msg);
|
||||
// Adesso inserisco tutta la bella roba
|
||||
for (curTab = 0; curTab.pos() < items && !p.is_cancelled(); ++curTab)
|
||||
{
|
||||
int num = curTab.pos();
|
||||
// Aggiorno il Progress Monitor
|
||||
if (!p.add_status())
|
||||
break;
|
||||
|
||||
// Prendo la riga di TAB
|
||||
TRectype rowTab = curTab.curr();
|
||||
|
||||
TString codTab; codTab << rowTab.get("CODTAB");
|
||||
// Dichiaro la stringa
|
||||
TString sqlQuery;
|
||||
|
||||
// Inserisco Tutto
|
||||
sqlQuery << "INSERT INTO P02A (IKRUNIMP, FAZI, CStr, FGRP, NLIV0, RLIV0, CGRP0, RGRP0 ) \
|
||||
VALUES('" << id << "','U','DBS','0','0','0','" << getGroup(rowTab.get("CODTAB")) << "','" << rowTab.get("S0") << "');";
|
||||
if(sqlset.exec(sqlQuery) != 1)
|
||||
return false;
|
||||
}
|
||||
return sqlset.commit() == -1 ? false : true;
|
||||
}
|
||||
|
||||
void TCampass_app::main_loop()
|
||||
{
|
||||
@ -419,3 +767,61 @@ int ca2600(int argc, char* argv[])
|
||||
app.run(argc, argv, TR("Collegamento Campo/Compass"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool TCampass_app::o01b(const TString& DSN) const
|
||||
{
|
||||
TODBC_recordset sqlset("", true);
|
||||
// Controllo la connessione
|
||||
if (!sqlset.connect(DSN))
|
||||
return false;
|
||||
TRelation rdoc(LF_RIGHEDOC), rdist(LF_RDIST), tab(LF_TAB);
|
||||
int items;
|
||||
TString msg("Esportazione tabella "); msg << "O01B";
|
||||
// Creo il filtro per la chiave del cursore, da quel che ho capito le chiavi sono più veloci di un filtro (come è possibile?)
|
||||
TRectype filtroRdoc(rdoc.curr()); filtroRdoc.put("CODNUM", "ORP1");
|
||||
TRectype filtroTab(rdoc.curr()); filtroTab.put("CODTAB", "LAV");
|
||||
TCursor curRDoc(&rdoc, "RIGAEVASA != \"X\"", 1, &filtroRdoc, &filtroRdoc);
|
||||
TCursor curTab(&tab, "", 1, &filtroTab, &filtroTab);
|
||||
TCursor curDist(&rdist, "TIPO = \"L\"");
|
||||
items = curRDoc.items();
|
||||
TProgress_monitor p(items, msg);
|
||||
// Adesso inserisco tutta la bella roba
|
||||
for (curRDoc = 0; curRDoc.pos() < items && !p.is_cancelled(); ++curRDoc)
|
||||
{
|
||||
int num = curRDoc.pos();
|
||||
// Aggiorno il Progress Monitor
|
||||
if (!p.add_status())
|
||||
break;
|
||||
|
||||
// Prendo la riga di RDOC
|
||||
TRectype rowRDoc = curRDoc.curr();
|
||||
|
||||
// Verifico la presenza di un ordine cliente con i valori della riga attuale
|
||||
TRectype filtroFiltro(rdoc.curr());
|
||||
filtroFiltro.put(RDOC_CODNUM, rowRDoc.get("DACODNUM"));
|
||||
filtroFiltro.put(RDOC_ANNO, rowRDoc.get("DAANNO"));
|
||||
filtroFiltro.put(RDOC_PROVV, rowRDoc.get("DAPROVV"));
|
||||
filtroFiltro.put(RDOC_NDOC, rowRDoc.get("DANDOC"));
|
||||
filtroFiltro.put(RDOC_NRIGA, rowRDoc.get("DAIDRIGA"));
|
||||
TCursor curFiltro(&rdoc, "RIGAEVASA != \"X\"", 1, &filtroFiltro, &filtroFiltro); // Applico un FILTRO al FILTRO così da FILTRARE la tabella per lavorare sui dati FILTRATI che necessito siano FILTRATI
|
||||
int itemFiltro = curFiltro.items();
|
||||
if(itemFiltro > 0) // Se non ci sono match non ha senso proseguire
|
||||
{
|
||||
// DA FINIRE, É STATA MESSA IN PAUSA
|
||||
|
||||
// Inserisco IKRUNIMP, CStr
|
||||
sqlQuery << "INSERT INTO O01B ( IKRUNIMP, CStr, CPRD, NFAS, RFAS, XNOTE, QPFFAS, CUDMF, XCONVFN, XCONVFD, BSCH, CMAC, EBASE, QBASE, XPINS, XPUTIL ) \
|
||||
VALUES('1','DBS','" << rowDoc.get("CODCF") << "','";
|
||||
|
||||
|
||||
if(sqlset.exec(sqlQuery) != 1)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return sqlset.commit() == -1 ? false : true;
|
||||
}
|
||||
*/
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user