Patch level : 12.0 978

Files correlati     : ba8.exe ba8200b.msk
Commento            :

- Corretta generazione quesry per il file del 770
This commit is contained in:
Alessandro Bonazzi 2020-07-17 13:09:46 +02:00
parent de496673aa
commit 7138353652
2 changed files with 42 additions and 17 deletions

View File

@ -138,12 +138,22 @@ public:
int TTable_mask::father_logicnum() const int TTable_mask::father_logicnum() const
{ {
return table2logic(get(F_FATHER)); TFilename n = get(F_FATHER);
int logic = table2logic(n);
if (logic <= 0)
logic = table2logic(n.name_only());
return logic;
} }
int TTable_mask::son_logicnum() const int TTable_mask::son_logicnum() const
{ {
return table2logic(get(F_SON)); TFilename n = get(F_SON);
int logic = table2logic(n);
if (logic <= 0)
logic = table2logic(n.name_only());
return logic;
} }
// Dato il numero logico di una tabella ed un campo (di un'altra tabella) // Dato il numero logico di una tabella ed un campo (di un'altra tabella)
@ -263,13 +273,14 @@ TTable_mask::TTable_mask() : TAutomask("ba8200b")
for (int logic = LF_USER; logic < nfiles; logic++) for (int logic = LF_USER; logic < nfiles; logic++)
{ {
const FileDes& fd = prefix().get_filedes(logic); const FileDes& fd = prefix().get_filedes(logic);
tt = fd.SysName;
tt = fd.SysName;
if (tt.full()) if (tt.full())
{ {
tt.strip("$%"); tt.upper(); tt.strip("$%"); tt.upper();
tt.add(logic); tt.add(logic);
tt.add(fd.Des); tt.add(fd.Des);
sht.rows_array().add(tt); sht.rows_array().add(tt);
} }
} }
sht.rows_array().sort(); sht.rows_array().sort();
@ -617,10 +628,11 @@ static bool sql_tree_handler(TTree& tree, void* jolly, word flags)
TString& where = *(TString*)arr.objptr(1); TString& where = *(TString*)arr.objptr(1);
TString_array& join = rn->join(); TString_array& join = rn->join();
TString str; TString str;
TFilename n = rn->name(); n = n.name_only();
if (from.get_pos(rn->id()) < 0) if (from.get_pos(rn->id()) < 0)
{ {
from.add(rn->name()); from.add(n);
if (rn->alias().not_empty()) if (rn->alias().not_empty())
from << " AS " << rn->alias(); from << " AS " << rn->alias();
@ -630,10 +642,17 @@ static bool sql_tree_handler(TTree& tree, void* jolly, word flags)
{ {
if (where.not_empty()) if (where.not_empty())
where << "AND"; where << "AND";
where << '(' << rn->id() << '.' << row->get(0) << '=';
TFilename id = rn->id(); id = id.name_only();
where << '(' << id << '.' << row->get(0) << '=';
str = row->get(); str = row->get();
if (isalpha(str[0])) if (isalpha(str[0]))
where << rn->father()->id() << '.'; {
TFilename father_id = rn->father()->id(); father_id = father_id.name_only();
where << father_id << '.';
}
where << str << ')'; where << str << ')';
} }
} }
@ -718,8 +737,10 @@ void TQuery_mask::sheet2sql()
{ {
if (multiple) if (multiple)
{ {
const TString& tab = row->get(0); TFilename tab = row->get(0);
if (!tab.blank())
tab = tab.name_only();
if (tab.full())
{ {
field.insert("."); field.insert(".");
field.insert(tab); // Table name field.insert(tab); // Table name
@ -788,9 +809,13 @@ void TQuery_mask::sheet2isam()
TString_array rel; TString_array rel;
tree2isam(rel); tree2isam(rel);
TString use; TString use("USE ");
FOR_EACH_ARRAY_ROW(rel, i, row) FOR_EACH_ARRAY_ROW(rel, i, row)
use << *row << '\n'; {
TFilename t = *row; t = t.name_only();
use << t << '\n';
}
set(F_SQL, use, true); set(F_SQL, use, true);
_sql_dirty = false; _sql_dirty = false;

View File

@ -7,11 +7,11 @@ BEGIN
PROMPT 1 0 "@bTabella collegata" PROMPT 1 0 "@bTabella collegata"
END END
STRING F_SON 10 STRING F_SON 30 10
BEGIN BEGIN
PROMPT 2 1 "Tabella " PROMPT 2 1 "Tabella "
FLAGS "U" FLAGS "U"
SHEET "Tabella@10|Num@3R|Descrizione archivio@70" SHEET "Tabella@30|Num@3R|Descrizione archivio@70"
INPUT F_SON INPUT F_SON
OUTPUT F_SON OUTPUT F_SON
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
@ -28,7 +28,7 @@ BEGIN
PROMPT 25 0 "@bTabella principale" PROMPT 25 0 "@bTabella principale"
END END
STRING F_FATHER 10 STRING F_FATHER 30 10
BEGIN BEGIN
PROMPT 26 1 "Tabella " PROMPT 26 1 "Tabella "
FLAGS "D" FLAGS "D"