From 856419d4b5f945b5c65753d870448c470ca8bbd8 Mon Sep 17 00:00:00 2001 From: mtollari Date: Thu, 9 Nov 2017 08:56:30 +0000 Subject: [PATCH] Patch level : 12.0 478 Files correlati : Commento : - Sistemata la connessione, prima accettava solo odbc con login di windows, ora anche user e psw - Tolte assegnazioni messe in test git-svn-id: svn://10.65.10.50/branches/R_10_00@24185 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- src/bs/bs0100.cpp | 40 +++++++++++++++++++++++----------------- src/bs/bs0100a.h | 6 ++++-- src/bs/bs0100a.uml | 18 ++++++++++++++++-- src/bs/bs0200.cpp | 37 ++++++++++++++++++++----------------- 4 files changed, 63 insertions(+), 38 deletions(-) diff --git a/src/bs/bs0100.cpp b/src/bs/bs0100.cpp index bbed3cd4d..bfbf66bd4 100644 --- a/src/bs/bs0100.cpp +++ b/src/bs/bs0100.cpp @@ -1,8 +1,10 @@ #include #include #include +#include #include "bs0.h" +#include "bs0100a.h" class TParametri_mask : public TAutomask { @@ -10,9 +12,16 @@ protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: - TParametri_mask(const char* n) : TAutomask(n) {} + TParametri_mask(const char* n); }; +TParametri_mask::TParametri_mask(const char * n) : TAutomask(n) +{ + set(F_DATASOURCE, ini_get_string(CONFIG_DITTA, "BS", "DSN")); + set(F_USER, ini_get_string(CONFIG_DITTA, "BS", "USR")); + set(F_PASSWORD, decode(ini_get_string(CONFIG_DITTA, "BS", "PSW"))); + set(F_LOG, ini_get_string(CONFIG_DITTA, "BS", "Log")); +} bool TParametri_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { @@ -37,27 +46,24 @@ bool TParametri_mask::on_field_event(TOperable_field& o, TField_event e, long jo return true; } -class TParametri_ditta : public TConfig_application +class TParametri_ditta : public TSkeleton_application { - TParametri_mask* _pm; - -protected: - virtual TMask* create_mask(const TFilename& fname); - virtual TMask* get_mask() { return _pm; } - virtual void destroy_mask() { delete _pm; } - public: - virtual bool check_autorization() const { return false; } - virtual const char* get_mask_name() const { return "bs0100a"; } - - TParametri_ditta() : TConfig_application(CONFIG_DITTA), _pm(NULL) {} + virtual void main_loop(); }; -TMask* TParametri_ditta::create_mask(const TFilename& fname) +void TParametri_ditta::main_loop() { - if (_pm == NULL) - _pm = new TParametri_mask(fname); - return _pm; + TParametri_mask pm("bs0100a"); + while(pm.run() == K_ENTER) + { + ini_set_string(CONFIG_DITTA, "BS", "DSN", pm.get(F_DATASOURCE)); + ini_set_string(CONFIG_DITTA, "BS", "USR", pm.get(F_USER)); + ini_set_string(CONFIG_DITTA, "BS", "PSW", encode(pm.get(F_PASSWORD))); + ini_set_string(CONFIG_DITTA, "BS", "Log", pm.get(F_LOG)); + message_box("Dati salvati correttamente!"); + } + } int bs0100(int argc, char* argv[]) diff --git a/src/bs/bs0100a.h b/src/bs/bs0100a.h index b319029a1..022e87592 100644 --- a/src/bs/bs0100a.h +++ b/src/bs/bs0100a.h @@ -1,2 +1,4 @@ -#define F_DATASOURCE 101 -#define F_LOG 102 +#define F_DATASOURCE 101 +#define F_USER 102 +#define F_PASSWORD 103 +#define F_LOG 104 diff --git a/src/bs/bs0100a.uml b/src/bs/bs0100a.uml index 63ddc1ef6..4a77fa1f3 100644 --- a/src/bs/bs0100a.uml +++ b/src/bs/bs0100a.uml @@ -6,7 +6,7 @@ ENDPAGE PAGE "Parametri Bee Store" 0 2 0 0 -GROUPBOX DLG_NULL 78 4 +GROUPBOX DLG_NULL 78 6 BEGIN PROMPT 1 1 "@bODBC" END @@ -19,9 +19,23 @@ BEGIN FIELD DSN END +STRING F_USER 20 +BEGIN + PROMPT 2 3 "User " + FLAGS "" + FIELD USR +END + +STRING F_PASSWORD 20 +BEGIN + PROMPT 2 4 "Password " + FLAGS "*" + FIELD PSW +END + STRING F_LOG 260 50 BEGIN - PROMPT 2 3 "File di log errori SQL " + PROMPT 2 5 "File di log errori SQL " FIELD Log END diff --git a/src/bs/bs0200.cpp b/src/bs/bs0200.cpp index 3082b39aa..d207830ae 100644 --- a/src/bs/bs0200.cpp +++ b/src/bs/bs0200.cpp @@ -149,6 +149,8 @@ typedef bool TFieldEvaluator(const TISAM_recordset& rec, const char* fldname, co class TBeeStore_sync : public TSkeleton_application { TString16 _dsn; + TString _usr; + TString _psw; TFilename _sqlog; TLog_report* _log; @@ -286,13 +288,14 @@ const TString& expr2sql(const TISAM_recordset& set, const char* expr) void TBeeStore_sync::load_origine_1(TISAM_recordset& out_set, const char* in_table, const TString_array& pairs) { TString str(255); - str << "ODBC(" << _dsn << ")\nSELECT "; + str << "SELECT "; FOR_EACH_ARRAY_ROW(pairs, f, row) str << row->get(0) << ','; str.rtrim(1); // toglie ultima virgola str << "\nFROM " << in_table << " WHERE (Origine=1);"; TODBC_recordset odbc(str); + odbc.connect(_dsn, _usr, _psw); const TRecnotype n = odbc.items(); if (n > 0) { @@ -423,9 +426,8 @@ void TBeeStore_sync::save_origine_2(TISAM_recordset& in_set, const char* out_tab { const TRecnotype n = in_set.items(); TString str(255); - str << "ODBC(" << _dsn << ")\n"; TODBC_recordset odbc(str); - + odbc.connect(_dsn, _usr, _psw); str.cut(0) << "DELETE FROM " << out_table << " WHERE Origine=2;"; odbc.exec(str); @@ -651,13 +653,14 @@ void TBeeStore_sync::sync_barcode(const TDate& dal, const TDate& al) fields.add("BarCode|"ANAMAG_DESCR); TString str(255); - str << "ODBC(" << _dsn << ")\nSELECT "; + str << "SELECT "; FOR_EACH_ARRAY_ROW(fields, f, row) str << row->get(0) << ','; str.rtrim(1); // toglie ultima virgola str << "\nFROM tieArtBarCode WHERE (Origine=1);"; TODBC_recordset odbc(str); + odbc.connect(_dsn, _usr, _psw); const TRecnotype n = odbc.items(); if (n > 0) { @@ -858,12 +861,13 @@ bool TBeeStore_sync::split_phone(const TRecordset& odbc, const char* number, TIs void TBeeStore_sync::load_clifo(char tipocf) { TString str(255); - str << "ODBC(" << _dsn << ")\nSELECT * FROM tieAnagCFP WHERE (Origine=1)AND"; + str << "SELECT * FROM tieAnagCFP WHERE (Origine=1)AND"; str << '(' << (tipocf == 'F' ? "Fornitore" : "Cliente") << "=1);"; TFast_isamfile clifo(LF_CLIFO); TODBC_recordset odbc(str); + odbc.connect(_dsn, _usr, _psw); const TRecnotype n = odbc.items(); str.cut(0) << TR("Importazione ") << (tipocf == 'F' ? TR("Fornitori") : TR("Clienti")); @@ -1012,8 +1016,8 @@ void TBeeStore_sync::sync_clifo(int cfmask, const TDate& dal, const TDate& al) if (cfmask & 2) load_clifo('F'); TString str(255); - str << "ODBC(" << _dsn << ")\n"; TODBC_recordset clifo(str); + clifo.connect(_dsn, _usr, _psw); str << "DELETE FROM tieAnagCFP WHERE Origine=1;"; clifo.exec(str); // Elimina tutte le anagrafiche importate da BeeStore @@ -1084,9 +1088,8 @@ void TBeeStore_sync::sync_val(const TDate& dal, const TDate& al) void TBeeStore_sync::sync_listino(const TString& listino) { TString str(255); - str << "ODBC(" << _dsn << ")\n"; TODBC_recordset prz(str); - + prz.connect(_dsn, _usr, _psw); str = "DELETE FROM tiePrzVendita WHERE Origine=1"; prz.exec(str); // Ignora tutti i listini di BeeStore @@ -1141,7 +1144,6 @@ void TBeeStore_sync::sync_mov(int tipotestata, const TDate& dal, const TDate& al } TString str(255); - str << "ODBC(" << _dsn << ")\n"; str << "SELECT * FROM tieDMovMag WHERE Origine=1 AND TipoTestata=" << tipotestata; if (dal.ok() || al.ok()) { @@ -1159,6 +1161,7 @@ void TBeeStore_sync::sync_mov(int tipotestata, const TDate& dal, const TDate& al str << "\nORDER BY NumMov,NumRiga"; TODBC_recordset mov(str); + mov.connect(_dsn, _usr, _psw); TProgress_monitor pi(mov.items(), str); TString num_mov, nm; @@ -1219,7 +1222,6 @@ void TBeeStore_sync::sync_doc(const TDate& dal, const TDate& al) } TString str(255); - str << "ODBC(" << _dsn << ")\n"; str << "SELECT tieDMovMag.*,tieTBolFat.* FROM tieDMovMag,tieTBolFat WHERE tieDMovMag.Origine=1 AND tieDMovMag.TipoTestata=2 AND tieDMovMag.CodTestata=tieTBolFat.Cod_PK"; // verificare if (dal.ok() || al.ok()) { @@ -1237,6 +1239,7 @@ void TBeeStore_sync::sync_doc(const TDate& dal, const TDate& al) str << "\nORDER BY NumMov,NumRiga"; TODBC_recordset docs(str); + docs.connect(_dsn, _usr, _psw); TProgress_monitor pi(docs.items(), str); long num_doc = -1, nd, codcf ; @@ -1267,9 +1270,6 @@ void TBeeStore_sync::sync_doc(const TDate& dal, const TDate& al) TString8 numdoc =docs.get("TipoDocCE").as_string(); TString8 tipodoc =docs.get("TipoDocCE").as_string(); -numdoc = "B099"; -tipodoc = "B01"; - TTipo_documento tipo(tipodoc); const TString8 codcaus = tipo.caus_mov().blank() ? codcausdef : tipo.caus_mov(); @@ -1369,11 +1369,11 @@ void TBeeStore_sync::sync_corrisp(const TDate&, const TDate&) } TString str(255); - str << "ODBC(" << _dsn << ")\n"; str << "SELECT * FROM tieCorrispettivi WHERE Origine=1"; str << "\nORDER BY DataCorr,CodCorrispettivo"; TODBC_recordset corr(str); + corr.connect(_dsn, _usr, _psw); TProgress_monitor pi(corr.items(), str); TString num_mov, nm; @@ -1408,10 +1408,10 @@ void TBeeStore_sync::sync_corrisp(const TDate&, const TDate&) const real totdoc = corr.get("Valore").as_real(); mrec.put(MOV_TOTDOC, totdoc); - str.cut(0) << "ODBC(" << _dsn << ")\n"; str << "SELECT * FROM tieDCorrispettivi WHERE (Origine=1)"; str << "AND(CodCorrispettivo='" << corr.get("CodCorrispettivo") << "')"; TODBC_recordset dett(str); + dett.connect(_dsn, _usr, _psw); TBill zio1; caus.bill(1, zio1); TBill zio2; caus.bill(2, zio2); @@ -1486,8 +1486,8 @@ void TBeeStore_sync::sync_corrisp(const TDate&, const TDate&) if (!pi.is_cancelled()) { TString str(255); - str << "ODBC(" << _dsn << ")\n"; TODBC_recordset sco(str); + sco.connect(_dsn, _usr, _psw); str = "DELETE FROM tieCorrispettivi WHERE Origine=1"; sco.exec(str); @@ -1501,12 +1501,15 @@ bool TBeeStore_sync::create() { _dsn = ini_get_string(CONFIG_DITTA, "bs", "DSN", "BEESTORE"); _sqlog = ini_get_string(CONFIG_DITTA, "bs", "Log", ""); + _usr = ini_get_string(CONFIG_DITTA, "bs", "USR", "BEESTORE"); + _psw = decode(ini_get_string(CONFIG_DITTA, "bs", "PSW", "BEESTORE")); if (_dsn.full()) { TProgress_monitor ti(1, TR("Connessione a SQL Server"), false); - TString query; query << "ODBC(" << _dsn << ")\nSELECT * FROM tieValute;"; + TString query; query << "SELECT * FROM tieValute;";//"ODBC(" << _dsn << ")\nSELECT * FROM tieValute;"; TODBC_recordset recset(query); + recset.connect(_dsn, _usr, _psw); // Dovrebbe connettersi anche con solo _dsn valorizzato recset.move_first(); if (_sqlog.full() && _sqlog.is_relative_path()) {