Patch level : 2.0 232
Files correlati : ve0.exe Ricompilazione Demo : [ ] Commento : Migliorata ricerca su campi "zoom" (descrizione articolo in righe documento) Correzione necessaria per PG200009 git-svn-id: svn://10.65.10.50/trunk@11342 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
e17772ddf0
commit
217b32a84a
@ -1,16 +1,11 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include <applicat.h>
|
||||||
|
#include <expr.h>
|
||||||
#include <files.h>
|
#include <files.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#ifndef FOXPRO
|
|
||||||
#include <expr.h>
|
|
||||||
#include <applicat.h>
|
|
||||||
#else
|
|
||||||
#include <strings.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <extcdecl.h>
|
#include <extcdecl.h>
|
||||||
#include <lffiles.h>
|
#include <lffiles.h>
|
||||||
|
|
||||||
@ -20,10 +15,8 @@
|
|||||||
HIDDEN char _files_tmp_string[256];
|
HIDDEN char _files_tmp_string[256];
|
||||||
|
|
||||||
TFile::TFile (int lenrec, int base)
|
TFile::TFile (int lenrec, int base)
|
||||||
|
|
||||||
{
|
{
|
||||||
_file = new SecDef;
|
_file = new SecDef;
|
||||||
// if (_file == NULL) fatal_box ("Can't allocate record file ");
|
|
||||||
_file->IOR = NOERR;
|
_file->IOR = NOERR;
|
||||||
_len = lenrec;
|
_len = lenrec;
|
||||||
_base = base;
|
_base = base;
|
||||||
@ -33,7 +26,6 @@ TFile::TFile (int lenrec, int base)
|
|||||||
}
|
}
|
||||||
|
|
||||||
TFile::~TFile ()
|
TFile::~TFile ()
|
||||||
|
|
||||||
{
|
{
|
||||||
delete _file;
|
delete _file;
|
||||||
}
|
}
|
||||||
@ -682,29 +674,26 @@ void TTrec::print_on (ostream & out) const
|
|||||||
void TTrec::read_from (istream & in)
|
void TTrec::read_from (istream & in)
|
||||||
|
|
||||||
{
|
{
|
||||||
int ln;
|
|
||||||
const int n = num();
|
const int n = num();
|
||||||
|
|
||||||
in.getline (_files_tmp_string, sizeof (_files_tmp_string), '\n');
|
in.getline (_files_tmp_string, sizeof (_files_tmp_string), '\n');
|
||||||
if (_des && n>=LF_TABGEN && n<=LF_TAB)
|
if (_des && n>=LF_TABGEN && n<=LF_TAB)
|
||||||
{
|
{
|
||||||
TString t(_files_tmp_string);
|
const TFixed_string t(_files_tmp_string);
|
||||||
|
if (t.find('|') >= 0)
|
||||||
if (t.find('|')>-1)
|
|
||||||
{
|
{
|
||||||
TString tabname(t.right(3));
|
const TString4 tabname(t.right(3));
|
||||||
strcpy(_files_tmp_string,t.left(t.len()-4)); // Toglie il nome della tabella
|
strcpy(_files_tmp_string,t.left(t.len()-4)); // Toglie il nome della tabella
|
||||||
if (_tab != tabname && !yesno_box("Descrizione relativa alla tabella %s.\n Continuo ?",(const char*) tabname))
|
if (_tab != tabname && !yesno_box("Descrizione relativa alla tabella %s.\n Continuo ?",(const char*) tabname))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ln = atoi (_files_tmp_string);
|
const int ln = atoi (_files_tmp_string);
|
||||||
if (ln != n && !yesno_box ("Descrizione relativa al file n.ro %d.\n Continuo ?", ln))
|
if (n > 0 && ln != n && !yesno_box ("Descrizione relativa al file n.ro %d.\n Continuo ?", ln))
|
||||||
return;
|
return;
|
||||||
int nfields;
|
|
||||||
|
|
||||||
in.getline (_files_tmp_string, sizeof (_files_tmp_string), '\n');
|
in.getline (_files_tmp_string, sizeof (_files_tmp_string), '\n');
|
||||||
nfields = atoi (_files_tmp_string);
|
const int nfields = atoi (_files_tmp_string);
|
||||||
set_fields (nfields);
|
set_fields (nfields);
|
||||||
TToken_string t;
|
TToken_string t;
|
||||||
for (int i = 0; i < nfields; i++)
|
for (int i = 0; i < nfields; i++)
|
||||||
|
@ -3221,14 +3221,14 @@ void TRectype::put(const char* fieldname, const TDate& val)
|
|||||||
|
|
||||||
void TRectype::put(const char* fieldname, char val)
|
void TRectype::put(const char* fieldname, char val)
|
||||||
{
|
{
|
||||||
const char w[2] = {val, '\0'};
|
const char w[2] = { val, '\0' };
|
||||||
put_str( fieldname, w);
|
put_str( fieldname, w);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TRectype::put(const char* fieldname, bool val)
|
void TRectype::put(const char* fieldname, bool val)
|
||||||
{
|
{
|
||||||
char s[2] = { val ? 'X' : ' ', '\0'};
|
const char s[2] = { val ? 'X' : ' ', '\0' };
|
||||||
put_str( fieldname, s);
|
put_str( fieldname, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3251,7 +3251,7 @@ void TRectype::put_str(const char* fieldname, const char* val)
|
|||||||
if (ft == _boolfld)
|
if (ft == _boolfld)
|
||||||
val = (*val && strchr("1STXY", toupper(*val)) != NULL) ? "T" : "F";
|
val = (*val && strchr("1STXY", toupper(*val)) != NULL) ? "T" : "F";
|
||||||
|
|
||||||
if (*val == '\0') // VERIFICRE COL REPOSITORY
|
if (*val == '\0') // VERIFICARE COL REPOSITORY
|
||||||
{
|
{
|
||||||
TRecfield f(*this, fieldname);
|
TRecfield f(*this, fieldname);
|
||||||
if (*f.pos() == '\0') return;
|
if (*f.pos() == '\0') return;
|
||||||
@ -3456,7 +3456,7 @@ bool TRectype::get_relapp(TString& app) const
|
|||||||
{
|
{
|
||||||
if (*_tab)
|
if (*_tab)
|
||||||
{
|
{
|
||||||
TString8 cod(_tab);
|
TString4 cod(_tab);
|
||||||
if (num() == LF_TABCOM)
|
if (num() == LF_TABCOM)
|
||||||
cod.insert("%");
|
cod.insert("%");
|
||||||
else
|
else
|
||||||
@ -3472,51 +3472,47 @@ void TRectype::edit(int logicnum, const char * alternate_key_fields) const
|
|||||||
{
|
{
|
||||||
if (logicnum <= 0)
|
if (logicnum <= 0)
|
||||||
logicnum = num();
|
logicnum = num();
|
||||||
|
|
||||||
TToken_string key_labels;
|
|
||||||
|
|
||||||
TRectype r(logicnum);
|
TRectype r(logicnum);
|
||||||
|
|
||||||
if (*_tab)
|
if (*_tab)
|
||||||
r.settab(_tab);
|
r.settab(_tab);
|
||||||
|
|
||||||
const RecDes* recd = r.rec_des(); // Descrizione del record della testata
|
|
||||||
const KeyDes& kd = recd->Ky[0]; // Elenco dei campi della chiave 1
|
|
||||||
for (int i = 0; i < kd.NkFields; i++)
|
|
||||||
{
|
|
||||||
const int nf = kd.FieldSeq[i] % MaxFields;
|
|
||||||
const RecFieldDes& rf = recd->Fd[nf];
|
|
||||||
key_labels.add(rf.Name);
|
|
||||||
}
|
|
||||||
|
|
||||||
TToken_string key_fields(alternate_key_fields);
|
|
||||||
|
|
||||||
if (key_fields.empty_items())
|
|
||||||
key_fields = key_labels;
|
|
||||||
|
|
||||||
TFilename ininame; ininame.temp();
|
|
||||||
{
|
|
||||||
TConfig ini(ininame, "Transaction");
|
|
||||||
ini.set("Action", "MODIFY");
|
|
||||||
TString16 p; p << logicnum;
|
|
||||||
ini.set_paragraph(p);
|
|
||||||
|
|
||||||
FOR_EACH_TOKEN(key_labels, tok)
|
|
||||||
{
|
|
||||||
const TString16 name(tok);
|
|
||||||
const TString& value = get(key_fields.get());
|
|
||||||
ini.set(name, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TString app;
|
TString app;
|
||||||
|
|
||||||
if (r.get_relapp(app))
|
if (r.get_relapp(app))
|
||||||
{
|
{
|
||||||
|
const RecDes* recd = r.rec_des(); // Descrizione del record della testata
|
||||||
|
const KeyDes& kd = recd->Ky[0]; // Elenco dei campi della chiave 1
|
||||||
|
TToken_string key_labels;
|
||||||
|
for (int i = 0; i < kd.NkFields; i++)
|
||||||
|
{
|
||||||
|
const int nf = kd.FieldSeq[i] % MaxFields;
|
||||||
|
const RecFieldDes& rf = recd->Fd[nf];
|
||||||
|
key_labels.add(rf.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
TToken_string key_fields(alternate_key_fields);
|
||||||
|
if (key_fields.empty_items())
|
||||||
|
key_fields = key_labels;
|
||||||
|
|
||||||
|
TFilename ininame; ininame.temp();
|
||||||
|
{
|
||||||
|
TConfig ini(ininame, "Transaction");
|
||||||
|
ini.set("Action", "LINK");
|
||||||
|
TString16 p; p << logicnum;
|
||||||
|
ini.set_paragraph(p);
|
||||||
|
|
||||||
|
FOR_EACH_TOKEN(key_labels, tok)
|
||||||
|
{
|
||||||
|
const TString16 name(tok);
|
||||||
|
const TString& value = get(key_fields.get());
|
||||||
|
ini.set(name, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
app << " -i" << ininame;
|
app << " -i" << ininame;
|
||||||
TExternal_app a(app);
|
TExternal_app a(app);
|
||||||
|
|
||||||
a.run();
|
a.run();
|
||||||
|
xvt_fsys_removefile(ininame);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2189,11 +2189,15 @@ void TBrowse::do_output(CheckTime t)
|
|||||||
if (do_that)
|
if (do_that)
|
||||||
{
|
{
|
||||||
// Considera a parte l'inizializzazione delle transazioni!
|
// Considera a parte l'inizializzazione delle transazioni!
|
||||||
if (!f.mask().is_running() && main_app().class_id() == CLASS_RELATION_APPLICATION)
|
if (!f.empty() && main_app().class_id() == CLASS_RELATION_APPLICATION)
|
||||||
{
|
{
|
||||||
const TRelation_application& ra = (const TRelation_application&)main_app();
|
const TMask& m = f.mask();
|
||||||
if (ra.is_transaction() && !f.empty())
|
if (!m.is_running() && m.get_sheet() == NULL)
|
||||||
do_that = false;
|
{
|
||||||
|
const TRelation_application& ra = (const TRelation_application&)main_app();
|
||||||
|
if (ra.is_transaction())
|
||||||
|
do_that = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (do_that)
|
if (do_that)
|
||||||
|
@ -1604,6 +1604,7 @@ TBrowse_sheet::TBrowse_sheet(TCursor* cursor, const char* fields,
|
|||||||
switch (c.class_id())
|
switch (c.class_id())
|
||||||
{
|
{
|
||||||
case CLASS_EDIT_FIELD:
|
case CLASS_EDIT_FIELD:
|
||||||
|
case CLASS_ZOOM_FIELD:
|
||||||
e = &add_string(c.dlg(), 0, p, 1, y++, csize, flags, csize > 50 ? 50 : csize);
|
e = &add_string(c.dlg(), 0, p, 1, y++, csize, flags, csize > 50 ? 50 : csize);
|
||||||
break;
|
break;
|
||||||
case CLASS_REAL_FIELD:
|
case CLASS_REAL_FIELD:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user