Patch level : 01.00 1372

Files correlati     : ve0.exe
Commento:
Inviati a db G1 DATAAGG UTENTE e RG1
sistemato magic_find_tables
This commit is contained in:
Alessandro Bonazzi 2024-11-26 23:01:36 +01:00
parent b2a41bf732
commit e4a40464cf
3 changed files with 48 additions and 60 deletions

View File

@ -747,59 +747,8 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi
{
if (__magic_find_tables)
{
// TString check_statement = "SELECT * FROM ";
// check_statement << name << " LIMIT 1;";
bool descr = false;
TString_array keyst;
TString_array valuest;
for (int i = 0; i < nfields; i++)
{
TToken_string def = wrk.fielddef(i);
TString field(def.get(0));
TFieldtypes t = (TFieldtypes)def.get_int(1);
TString str = ini.get(field);
if (key.find(field) >= 0 && str.blank())
{
ini.set_paragraph(main_file);
str = ini.get(field);
if (str.blank())
str << rowkey.get();
ini.set_paragraph(*row);
}
str = str.strip("\"");
if (key.find(field) >= 0 && str.blank())
str << rowkey; // qui max
if (curr_file_num == LF_RIGHEDOC)
{
if (field == RDOC_DESCR && str.len() > 50)
{
TString v;
TString add_fld;
TToken_string row("", '~');
add_fld = RDOC_DESCLUNGA;
v = "X";
row = make_val(add_fld, _boolfld, recset.driver(), v);
valuest.add(row);
add_fld = RDOC_DESCEST;
row = make_val(add_fld, _alfafld, recset.driver(), str.smid(50));
valuest.add(row);
str = str.sleft(50).trim();
descr = true;
}
else
if (descr && (field == RDOC_DESCLUNGA || field == RDOC_DESCEST))
continue;
}
TToken_string row(make_val(field, t, recset.driver(), str), '~');
valuest.add(row);
}
int pos = key.find("|");
if (pos > 0)
@ -852,10 +801,19 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi
keyst.add(row);
}
TString statement = "SELECT * FROM ";
TString check_statement = build_statement(recset, op, curr_file_num, name, keyst, valuest);
err = recset.exec(check_statement);
err = (abs(err) == SQL_NO_TABLE) ? 0 : 1;
statement << name << " WHERE ";
FOR_EACH_ARRAY_ROW(keyst, rk, rowk)
{
if (rk > 0)
statement << " AND";
statement << ' ' << rowk->get(0) << "=" << rowk->get(1);
}
statement << ";";
err = (abs(recset.exec(statement)) == SQL_NO_TABLE) ? 0 : 1;
}
else
{
@ -981,7 +939,7 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi
TString statement;
if (op < db_remove)
if (!__magic_find_tables && op < db_remove)
{
statement << "SELECT * FROM " << name << " WHERE ";
FOR_EACH_ARRAY_ROW(keys, rk, rowk)
@ -992,18 +950,24 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi
}
statement << ";";
int err = recset.exec(statement);
const int rows = recset.exec(statement);
if (err == 0 && op == db_update)
if (rows == 0 && op == db_update)
op = db_add;
else
if (err > 0 && op == db_add)
if (rows > 0 && op == db_add)
op = db_update;
}
statement = build_statement(recset, op, curr_file_num, name, keys, values);
int err = recset.exec(statement);
if (__magic_find_tables && op < db_remove && err <= 0)
{
const TString & update_statement = build_statement(recset, op == db_add ? db_update : db_add, curr_file_num, name, keys, values);
err = recset.exec(update_statement);
}
if (err < 0)
error_box(FR("Errore n. %d invio file %d\n%s"), -err, curr_file_num, (const char *) statement);
else
@ -1180,8 +1144,7 @@ bool TPostman::dispatch_transaction(const TRectype& rec,
const TString dsn = r;
TAuto_token_string files = odbc_files;
::odbc_send(dsn, rec.num(), files, name);
}
remove_file(name);

10
src/ve/verig16.ini Normal file
View File

@ -0,0 +1,10 @@
#Profilo di riga tipo sconto finanziario in percentuale
[MAIN]
CALCOLI=*
CAMPICALC=
IMPONIBILE=IMPNN
BASESCONTO=TOTDOC
[HANDLERS]
NHANDLER = 0

15
src/ve/verig16.uml Normal file
View File

@ -0,0 +1,15 @@
#include "verigdef.h"
#define FULL_SCREEN
#define MASK_TITLE1 "Sconto finanziario"
DEFINE_FIELD(DESCR)
DEFINE_FIELD(SCONTO)
F_POS(SCONTO, 2, 9,"Sconto " )
DEFINE_FIELD(CODIVA)
DEFINE_FIELD(DESIVA)
#include "verig.uml"