From 006403f0ac8320ede94bef722d39f83820d65ef9 Mon Sep 17 00:00:00 2001 From: mtollari Date: Fri, 20 Jan 2017 10:51:28 +0000 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:=20mr0.exe=20Co?= =?UTF-8?q?mmento=20=20=20=20=20=20=20=20=20=20=20=20:=20=20Aggiornamento?= =?UTF-8?q?=20query=20Campo/Compass:=20-=20Sistemate=20tutte=20le=20funzio?= =?UTF-8?q?ni=20che=20utilizzano=20il=20filtro,=20adesso=20non=20dovrebber?= =?UTF-8?q?o=20pi=C3=B9=20crearsi=20problemi=20di=20sovrapposizione=20dei?= =?UTF-8?q?=20dati.=20-=20Aggiornamento=20generale=20query=20secondo=20le?= =?UTF-8?q?=20necessit=C3=A0=20del=20cliente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://10.65.10.50/branches/R_10_00@23541 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- src/mr/mr0600.cpp | 130 +++++++++++++++++++++++----------------------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/src/mr/mr0600.cpp b/src/mr/mr0600.cpp index 5f8fff41c..a602c3232 100644 --- a/src/mr/mr0600.cpp +++ b/src/mr/mr0600.cpp @@ -202,7 +202,6 @@ TString TCampass_app::esporta(const TString& DSN, const TString& usr, const TStr logFile << getTime() << " - Connessione effettuata!\n"; - // INIZIO O03 logFile << getTime() << " - Inizio esportazione O03:\n"; @@ -320,7 +319,7 @@ bool TCampass_app::a01a(const TString id) const // Controllo la connessione if (!sqlset.connect(DSN, usr, psw)) return false; - TRelation rilprod(LF_RILPROD),rdoc(LF_RIGHEDOC); + TRelation rilprod(LF_RILPROD), rdoc(LF_RIGHEDOC), filtro(LF_RIGHEDOC); int items; TString msg("Esportazione tabella "); msg << "A01A"; TCursor curRilprod(&rilprod, "CODNUM = \"ORC\" && QTA >= 0"); @@ -338,7 +337,7 @@ bool TCampass_app::a01a(const TString id) const TRectype rowRilprod = curRilprod.curr(); // Vado a prendere il documento di riferimento - TRectype filtroFiltro(rdoc.curr()); + TRectype filtroFiltro(filtro.curr()); filtroFiltro.put("CODNUM", rowRilprod.get("CODNUM")); filtroFiltro.put("ANNO", rowRilprod.get("ANNO")); filtroFiltro.put("PROVV", rowRilprod.get("PROVV")); @@ -355,7 +354,7 @@ bool TCampass_app::a01a(const TString id) const filtroRDoc.put("DAANNO", rowFiltro.get("ANNO")); filtroRDoc.put("DACODNUM", rowFiltro.get("CODNUM")); filtroRDoc.put("DANDOC", rowFiltro.get("NDOC")); - filtroRDoc.put("DAIDRIGA", rowFiltro.get("NRIGA")); + filtroRDoc.put("DAIDRIGA", rowFiltro.get("IDRIGA")); TString codartmag; codartmag << "CODARTMAG == \"" << rowRilprod.get("CODART") << "\""; TCursor curRdoc(&rdoc, codartmag, 4, &filtroRDoc, &filtroRDoc); if(curRdoc.items() > 0) @@ -366,7 +365,7 @@ bool TCampass_app::a01a(const TString id) const // Dichiaro la stringa TString sqlQuery; sqlQuery << "INSERT INTO A01A ( IKRUNIMP, FAZI, CStr, CPRD, NMOV, CMAC, QPFPRO, FSALDO, NFAS ) \ - VALUES('" << id << "','U','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("NRIGA") << "','1','" << rowRilprod.get("LINEA") << "','" << rowRilprod.get("QTA") << "','"; + VALUES('" << id << "','U','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("IDRIGA") << "','1','" << rowRilprod.get("LINEA") << "','" << rowRilprod.get("QTA") << "','"; sqlQuery << (rowRilprod.get("CHIUSO") == "X" ? "1" : "0"); sqlQuery << "','10');"; if(sqlset.exec(sqlQuery) != 1) { @@ -385,7 +384,7 @@ bool TCampass_app::o01a(const TString id) const // Controllo la connessione if (!sqlset.connect(DSN, usr, psw)) return false; - TRelation doc(LF_DOC),rdoc(LF_RIGHEDOC); + TRelation doc(LF_DOC),rdoc(LF_RIGHEDOC), filtro(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?) @@ -402,6 +401,7 @@ bool TCampass_app::o01a(const TString id) const break; // Prendo la riga del FILTRO TRectype rowRDoc = curRDoc.curr(); + if(rowRDoc.get("DACODNUM") != "ORC" && rowRDoc.get("DACODNUM") != "PRC") continue; // Filtro subito, evito di caricare un sacco di documenti per nulla // Vado a prendere il documento di riferimento TRectype filtroDoc(doc.curr()); @@ -417,53 +417,52 @@ bool TCampass_app::o01a(const TString id) const TRectype rowDoc = (curDoc.curr()); // Vado a prendere la riga di riferimento - TRectype filtroFiltro(rdoc.curr()); - if(rowRDoc.get("DACODNUM") == "ORC" || rowRDoc.get("DACODNUM") == "PRC") + TRectype filtroFiltro(filtro.curr()); + + 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("IDRIGA", rowRDoc.get("DAIDRIGA")); + TCursor curFiltro(&rdoc, "", 1, &filtroFiltro, &filtroFiltro); + + for (curFiltro = 0; curFiltro.pos() < curFiltro.items() && !p.is_cancelled(); ++curFiltro) { - 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) + if(rowRDoc.get_bool("RIGAEVASA")) continue; // Controllo ma la query sopra non mi va come al solito + // 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','" << zeroFill(rowDoc.get("NDOC")) << "." << rowRDoc.get("IDRIGA") << "','" << rowRDoc.get("CODARTMAG") << "','"; + + // Inserisco TIPORD + sqlQuery << (rowRDoc.get("DACODNUM") == "ORC" ? "R" : "P"); + + // Inserisco FLGSTA, CMAG, DPRICHI, DPRICHF, QPORD, XNOTE, CCLI + sqlQuery << "',NULL,'"; + + // Se non ho un codice magazzino metto lo standard, Roberto ha detto di metterlo a mano tanto non cambierà mai! + TString mag(rowRDoc.get("CODMAG")); + if(mag.full()) + sqlQuery << mag; + else + sqlQuery << "001"; + + sqlQuery << "','" << rowDoc.get_date("DATADOC").date2ansi() << "','" << rowRDoc.get_date("DATACONS").date2ansi() << "','" << zeroFill(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 << "'" << zeroFill(rowDoc.get("CODCF")) << "');"; + + if(sqlset.exec(sqlQuery) != 1) { - if(rowRDoc.get("RIGAEVASA") == "X") continue; // Controllo ma la query sopra non mi va come al solito - // 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','" << zeroFill(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 << "',NULL,'"; - - // Se non ho un codice magazzino metto lo standard, Roberto ha detto di metterlo a mano tanto non cambierà mai! - TString mag(rowRDoc.get("CODMAG")); - if(mag.full()) - sqlQuery << mag; - else - sqlQuery << "001"; - - sqlQuery << "','" << rowDoc.get_date("DATADOC").date2ansi() << "','" << rowRDoc.get_date("DATACONS").date2ansi() << "','" << zeroFill(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 << "'" << zeroFill(rowDoc.get("CODCF")) << "');"; - - if(sqlset.exec(sqlQuery) != 1) - { - message_box(sqlQuery); - return false; - } + message_box(sqlQuery); + return false; } } } @@ -477,7 +476,7 @@ bool TCampass_app::o01e(const TString id) const // Controllo la connessione if (!sqlset.connect(DSN, usr, psw)) return false; - TRelation doc(LF_DOC),rdoc(LF_RIGHEDOC); + TRelation doc(LF_DOC), rdoc(LF_RIGHEDOC), filtro(LF_RIGHEDOC); int items; TString msg("Esportazione tabella "); msg << "O01E"; // Creo il filtro per la chiave del cursore, da quel che ho capito le chiavi sono più veloci di un filtro (come è possibile?) @@ -491,14 +490,14 @@ bool TCampass_app::o01e(const TString id) const TRectype rowRDoc = curRDoc.curr(); // Vado a prendere la riga di riferimento - TRectype filtroFiltro(rdoc.curr()); + TRectype filtroFiltro(filtro.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")); + filtroFiltro.put("IDRIGA", rowRDoc.get("DAIDRIGA")); TCursor curFiltro(&rdoc, "RIGAEVASA != \"X\"", 1, &filtroFiltro, &filtroFiltro); for (curFiltro = 0; curFiltro.pos() < curFiltro.items() && !p.is_cancelled(); ++curFiltro) { @@ -508,14 +507,14 @@ bool TCampass_app::o01e(const TString id) const TString codagg; codagg << rowFiltro.get("CODAGG1"); // Inserisco IIKRUNIMP, FAZI, CStr, CPRD, CART sqlQuery << "INSERT INTO O01E ( IKRUNIMP, CSTR, CPRD, CPARAM, CPARVAL ) \ - VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("NRIGA") << "','TONING','" << codagg.sub(0,5) << "');"; + VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("IDRIGA") << "','TONING','" << codagg.sub(0,5) << "');"; sqlQuery << "INSERT INTO O01E ( IKRUNIMP, CSTR, CPRD, CPARAM, CPARVAL ) \ - VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("NRIGA") << "','CALING','" << codagg.sub(6) << "');"; + VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("IDRIGA") << "','CALING','" << codagg.sub(6) << "');"; codagg = rowFiltro.get("CODAGG2"); sqlQuery << "INSERT INTO O01E ( IKRUNIMP, CSTR, CPRD, CPARAM, CPARVAL ) \ - VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("NRIGA") << "','TONUSC','" << codagg.sub(0,5) << "');"; + VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("IDRIGA") << "','TONUSC','" << codagg.sub(0,5) << "');"; sqlQuery << "INSERT INTO O01E ( IKRUNIMP, CSTR, CPRD, CPARAM, CPARVAL ) \ - VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("NRIGA") << "','CALUSC','" << codagg.sub(6) << "');"; + VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("IDRIGA") << "','CALUSC','" << codagg.sub(6) << "');"; if(sqlset.exec(sqlQuery) != 1) { message_box(sqlQuery); @@ -532,11 +531,11 @@ bool TCampass_app::o02a(const TString CodNum, const TString id) const // Controllo la connessione if (!sqlset.connect(DSN, usr, psw)) return false; - TRelation doc(LF_DOC),rdoc(LF_RIGHEDOC); + TRelation doc(LF_DOC), rdoc(LF_RIGHEDOC), filtro(LF_RIGHEDOC); int items; TString msg("Esportazione tabella "); msg << "O02A - " << CodNum; // 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", CodNum); + TRectype filtroRDoc(filtro.curr()); filtroRDoc.put("CODNUM", CodNum); TCursor curRDoc(&rdoc, "RIGAEVASA != \"X\"", 1, &filtroRDoc, &filtroRDoc); items = curRDoc.items(); @@ -592,7 +591,7 @@ bool TCampass_app::o02c(const TString CodNum, const TString id) const // Controllo la connessione if (!sqlset.connect(DSN, usr, psw)) return false; - TRelation doc(LF_DOC),rdoc(LF_RIGHEDOC); + TRelation doc(LF_DOC), rdoc(LF_RIGHEDOC), filtro(LF_RIGHEDOC); int items; TString msg("Esportazione tabella "); msg << "O02C - " << CodNum; // Creo il filtro per la chiave del cursore, da quel che ho capito le chiavi sono più veloci di un filtro (come è possibile?) @@ -612,14 +611,14 @@ bool TCampass_app::o02c(const TString CodNum, const TString id) const TRectype rowRDoc = curRDoc.curr(); // Vado a prendere la riga di riferimento - TRectype filtroFiltro(rdoc.curr()); + TRectype filtroFiltro(filtro.curr()); if(rowRDoc.get("DACODNUM") == CodNum) { 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")); + filtroFiltro.put("IDRIGA", rowRDoc.get("DAIDRIGA")); TCursor curFiltro(&rdoc, "RIGAEVASA != \"X\"", 1, &filtroFiltro, &filtroFiltro); for (curFiltro = 0; curFiltro.pos() < curFiltro.items() && !p.is_cancelled(); ++curFiltro) { @@ -627,8 +626,8 @@ bool TCampass_app::o02c(const TString CodNum, const TString id) const 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("DAANNO") << "." << CodNum << "." << zeroFill(rowRDoc.get("DANDOC")) << "','" << rowRDoc.get("DAIDRIGA") << "','1');"; + sqlQuery << "INSERT INTO O02C ( IKRUNIMP, CStr, CPRD, CCLIH, CCLIR, BVAL, DBS_CART) \ + VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("IDRIGA") << "','" << rowRDoc.get("DAANNO") << "." << CodNum << "." << zeroFill(rowRDoc.get("DANDOC")) << "','" << rowRDoc.get("DAIDRIGA") << "','1','" << rowRDoc.get("CODART") << "');"; if(sqlset.exec(sqlQuery) != 1) { @@ -783,6 +782,7 @@ bool TCampass_app::p01a(const TString id) const } return sqlset.commit() == -1 ? false : true; } + bool TCampass_app::p01b(const TString id) const { TODBC_recordset sqlset("", true);