Patch level : 10.0 838
Files correlati : ve0.exe Ricompilazione Demo : [ ] Commento : Aggiunta la possibilita di mettere campi della maschera nei join delle ricerche (cliente SRM) git-svn-id: svn://10.65.10.50/branches/R_10_00@21160 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
6ec84414f9
commit
a52ef0ef1f
@ -2523,6 +2523,7 @@ int TBrowse::do_input(
|
||||
}
|
||||
}
|
||||
|
||||
_cursor->relation()->mask2rel(field().mask());
|
||||
_cursor->setfilter(work, filter_update);
|
||||
_cursor->setregion(filtrec, filtrec);
|
||||
|
||||
|
@ -246,8 +246,11 @@ const char* TRelationdef::evaluate_expr(int j, const TLocalisamfile& to)
|
||||
TExpression& expr = (TExpression&)_exprs[j];
|
||||
for (int k = 0; k < expr.numvar(); k++)
|
||||
{
|
||||
const TFieldref fr(expr.varname(k), rec.num());
|
||||
expr.setvar(k, fr.read(rec));
|
||||
if (expr.varname(k)[0] != '#')
|
||||
{
|
||||
const TFieldref fr(expr.varname(k), rec.num());
|
||||
expr.setvar(k, fr.read(rec));
|
||||
}
|
||||
}
|
||||
|
||||
const char* val = (const char*)expr.as_string();
|
||||
@ -256,8 +259,11 @@ const char* TRelationdef::evaluate_expr(int j, const TLocalisamfile& to)
|
||||
TExpression& altexpr = (TExpression&)_altexprs[j];
|
||||
for (int k = 0; k < altexpr.numvar(); k++)
|
||||
{
|
||||
const TFieldref fr(altexpr.varname(k), rec.num());
|
||||
altexpr.setvar(k, fr.read(rec));
|
||||
if (altexpr.varname(k)[0] != '#')
|
||||
{
|
||||
const TFieldref fr(altexpr.varname(k), rec.num());
|
||||
altexpr.setvar(k, fr.read(rec));
|
||||
}
|
||||
}
|
||||
val = (const char*)altexpr.as_string();
|
||||
}
|
||||
@ -949,6 +955,35 @@ bool TRelation::exist(int logicnum) const
|
||||
return lucky;
|
||||
}
|
||||
|
||||
void TRelation::mask2rel(const TMask & m)
|
||||
{
|
||||
for (int i = 0; i < _reldefs.items(); i++)
|
||||
{
|
||||
TRelationdef& rdi = reldef(i);
|
||||
|
||||
for (int j = 0; j < rdi._exprs.items(); j++)
|
||||
{
|
||||
TExpression& expr = (TExpression&)rdi._exprs[j];
|
||||
for (int k = 0; k < expr.numvar(); k++)
|
||||
{
|
||||
const char * name = expr.varname(k);
|
||||
if (name[0] == '#')
|
||||
expr.setvar(k, m.fld(0).evaluate_field(name));
|
||||
}
|
||||
if (rdi._altexprs.objptr(j))
|
||||
{
|
||||
TExpression& altexpr = (TExpression&)rdi._altexprs[j];
|
||||
for (int k = 0; k < altexpr.numvar(); k++)
|
||||
{
|
||||
const char * name = altexpr.varname(k);
|
||||
if (name[0] == '#')
|
||||
altexpr.setvar(k, m.fld(0).evaluate_field(name));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TCursor
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -9,6 +9,10 @@
|
||||
class TSort;
|
||||
#endif
|
||||
|
||||
#ifndef __MASK_H
|
||||
class TMask;
|
||||
#endif
|
||||
|
||||
// @doc EXTERNAL
|
||||
|
||||
// @class TRelation | Classe per la definizione delle relazioni esistenti tra i file
|
||||
@ -196,6 +200,10 @@ public: // TObject
|
||||
TRecnotype operator --()
|
||||
{ return prev(); }
|
||||
|
||||
// @cmember Aggiorna i valori delle variabili udando maschera <m>
|
||||
// (ritorna lo stato)
|
||||
void mask2rel(const TMask & m);
|
||||
|
||||
// @cmember Costruttore dal numero logico del file
|
||||
TRelation(int logicnum);
|
||||
// @cmember Costruttore dal nome della tabella
|
||||
|
Loading…
x
Reference in New Issue
Block a user