Patch level : 12.0 1028
Files correlati : ve0.exe ve1.exe ve5.exe ve6.exe Commento : Modficata la possibilità di caricare campi delle righe documento con i valori di campi delle righe di riferimento. Interno: Per recuperare i valori bisogna definire nel profilo riga ducumento e profilo documento due variabili : RIF_FLD_ROW per i valori da recuperare dichiarato come TRecfield cioè campo virtuale es. RG1:RIFFLEX ora è una token string es. Campo1|Campo2|Campo3..... RIF_FLD_UPDATE_ROW per i campi da aggiornare dichiarato come campo normale es. RIFFLEX ora è una token string es. Campo1|Campo2|Campo3..... Se invece voglio caricare la maschera di inserimento invece di definire RIF_FLD_UPDATE_ROW bisogna definire un handler di riga sul campo da caricare con codice 9.
This commit is contained in:
parent
9606cf6656
commit
258579ca17
@ -740,7 +740,7 @@ public:
|
||||
const TDate get_property_date(const char * paragraph, const char * property_name, const char * defval = "", int idx = -1) const;
|
||||
const real get_property_real(const char * paragraph, const char * property_name, const char * defval = "", int idx = -1) const;
|
||||
|
||||
const TString & retrieve_original_row_field();
|
||||
const TString & retrieve_original_row_field(const TString & rif_fld);
|
||||
|
||||
TRiga_documento(TDocumento* doc, const char* tipo = NULL);
|
||||
TRiga_documento(const TRiga_documento & row);
|
||||
|
@ -1896,7 +1896,7 @@ const real TRiga_documento::get_property_real(const char * paragraph, const char
|
||||
return r;
|
||||
}
|
||||
|
||||
const TString & TRiga_documento::retrieve_original_row_field()
|
||||
const TString & TRiga_documento::retrieve_original_row_field(const TString & rif_fld)
|
||||
{
|
||||
TString & val = get_tmp_string(4096);
|
||||
|
||||
@ -1914,7 +1914,6 @@ const TString & TRiga_documento::retrieve_original_row_field()
|
||||
FOR_EACH_ARRAY_ROW(row_refs, r, row_ref)
|
||||
{
|
||||
const TRectype& orig_row = cache().get(LF_RIGHEDOC, *row_ref); // ORC | 2020 | D | 3 | 8
|
||||
const TString & rif_fld = get_property_str("", RIF_FLD_ROW);
|
||||
TRecfield riffld((TRectype &)orig_row, rif_fld);
|
||||
const TString rifval = (const char *)riffld;
|
||||
|
||||
|
@ -1580,9 +1580,16 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
|
||||
}
|
||||
FOR_EACH_SELF_PHYSICAL_RDOC(i, rdoc)
|
||||
{
|
||||
const TString & row_field = rdoc->get_property_str("", RIF_FLD_UPDATE_ROW);
|
||||
if (row_field.full())
|
||||
rdoc->put(row_field, rdoc->retrieve_original_row_field());
|
||||
TToken_string row_fields = rdoc->get_property_str("", RIF_FLD_UPDATE_ROW);
|
||||
TToken_string rif_fields = rdoc->get_property_str("", RIF_FLD_ROW);
|
||||
|
||||
if (row_fields.full())
|
||||
FOR_EACH_TOKEN(row_fields, f)
|
||||
{
|
||||
const TString rif_fld = rif_fields.get();
|
||||
|
||||
rdoc->put(f, rdoc->retrieve_original_row_field(rif_fld));
|
||||
}
|
||||
}
|
||||
err = TMultiple_rectype::write_rewrite(f, re);
|
||||
|
||||
|
@ -3671,7 +3671,15 @@ bool multi_row_rif_handler(TMask_field& f, KEY key)
|
||||
const int current_doc_row = sh.selected() + 1;
|
||||
TRiga_documento & row = mask.doc()[current_doc_row];
|
||||
|
||||
f.set(row.retrieve_original_row_field());
|
||||
const TToken_string rif_fields = row.get_property_str("", RIF_FLD_ROW);
|
||||
int nfield = rif_fields.find(f.field()->name());
|
||||
|
||||
if (nfield >= 0)
|
||||
{
|
||||
const TString rif_fld = rif_fields.get(nfield);
|
||||
|
||||
f.set(row.retrieve_original_row_field(rif_fld));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user