From 3aaeb6c48bc64d4959095619922d36721c871b6c Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Tue, 30 Jul 2024 10:44:47 +0200 Subject: [PATCH] Patch level : 12.00 1326 Files correlati : ca0.exe cg0.exe ve0.exe Inivo a CRM Chiusura commesse fino all'anno --- src/include/postman.cpp | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/include/postman.cpp b/src/include/postman.cpp index 4f649d9c1..8b22d3fc5 100755 --- a/src/include/postman.cpp +++ b/src/include/postman.cpp @@ -731,20 +731,40 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi int nfields = wrk.fields(); const TString name = table_name(curr_file_num, mssql); TToken_string key(wrk.keydef(), '+'); - TString check_statement = "SHOW TABLES LIKE '"; + + int err = 0; if (mssql) { TString sqlname = name.mid(1, name.len() - 2); + TString check_statement = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = '"; - check_statement = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = '"; check_statement << sqlname << "';"; + int err = recset.exec(check_statement); } else - check_statement << name << "';"; + { + HIDDEN int __magic_find_tables = -2; - int err = recset.exec(check_statement); + if (__magic_find_tables == -2) + __magic_find_tables = ini_get_bool(CONFIG_STUDIO, "Main", "MAGIC_FIND_TABLES"); + if (__magic_find_tables) + { + TString check_statement = "SELECT * FROM "; + + check_statement << name << ";"; + err = recset.exec(check_statement); + err = err == -1146 ? 0 : 1; + } + else + { + TString check_statement = "SHOW TABLES LIKE '"; + + check_statement << name << "';"; + err = recset.exec(check_statement); + } + } if (err <= 0) { create_table(recset, curr_file_num, name, wrk);