From 078154b7a1926c38170a074fdf44154b0bd7c24b Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Wed, 14 Jun 2023 15:14:57 +0200 Subject: [PATCH] Patch level : 12.00 1268 Files correlati : lv0.exe lv2.exe Commento : Invio postino con ODBC --- src/include/postman.cpp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/include/postman.cpp b/src/include/postman.cpp index 8f9145808..e8c0a158a 100755 --- a/src/include/postman.cpp +++ b/src/include/postman.cpp @@ -706,16 +706,31 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi TToken_string row(make_val(fld, t, str), '='); keys.add(row); } - const TString & statement = build_statement(op, curr_file_num, name, keys, values); + + TString statement; + + if (op < db_remove) + { + statement << "SELECT * FROM [" << name << "] WHERE "; + FOR_EACH_ARRAY_ROW(keys, rk, rowk) + { + if (rk > 0) + statement << " AND"; + statement << ' ' << *rowk; + } + statement << ";"; + int err = recset.exec(statement); + if (err == 0 && op == db_update) + op = db_add; + else + if (err > 0 && op == db_add) + op = db_update; + } + statement = build_statement(op, curr_file_num, name, keys, values); + int err = recset.exec(statement); - if (op < db_remove && err <= 0) - { - const TString & statement = build_statement(op == db_add ? db_update : db_add, curr_file_num, name, keys, values); - - err = recset.exec(statement); - } - if (err <= 0) + if (err < 0) error_box(FR("Errore n. %d invio file %d"), -err, curr_file_num); else recset.exec("COMMIT;");