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:
parent
b2a41bf732
commit
e4a40464cf
@ -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
10
src/ve/verig16.ini
Normal 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
15
src/ve/verig16.uml
Normal 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"
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user