Patch level : 2.0 464
Files correlati : cb6.dll ba3 piu tutti gli altri Ricompilazione Demo : [ ] Commento : Corretto errore AO20007 In qualsiasi videata richiamata dal tasto Elimina, se non ho nessun record da scegliere e premo sul tasto Tutti, mi viene restituito un errore di Ba3.exe Corretto errore AO20017 Inserendo una nuova categoria se consulto i codici del Piano dei Conti, passo nella pagina descrizione e inserisco una stringa da ricercare dopo aver scritto la prima lettera si blocca tutto il programma senza che venga restituito nessun errore (tra l'altro succede solo su alcune lettere iniziali e non su tutte, il mio esempio inizia con la 'R'); inoltre se non scrivo nessuna stringa da cercare e ritorno sui codici del sottoconto, mi passa all'elenco dei codici del conto. Corretto errore AO20018 Inserendo una nuova categoria se consulto i codici del Piano dei Conti, passo nella pagina descrizione e inserisco una stringa da ricercare dopo aver scritto la prima lettera si blocca tutto il programma senza che venga restituito nessun errore (tra l'altro succede solo su alcune lettere iniziali e non su tutte, il mio esempio inizia con la 'R'); inoltre se non scrivo nessuna stringa da cercare e ritorno sui codici del sottoconto, mi passa all'elenco dei codici del conto. Corretto errore AO20019 CON LA TASTIERA Se premo sui tasti di salto all'ultimo o primo record e non ho nessun dato mi restituisce un errore del modulo Base: Impossibile leggere i dati - errore 201. git-svn-id: svn://10.65.10.50/trunk@11077 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f9a92907f7
commit
6202d11fd3
@ -925,7 +925,7 @@ int mem4reset( void ) ;
|
||||
int tfile4exprKey( TAG4FILE *, unsigned char * * ) ;
|
||||
int tfile4freeAll( TAG4FILE * ) ;
|
||||
int tfile4freeSaved( TAG4FILE * ) ;
|
||||
int tfile4go( TAG4FILE *, const unsigned char *, const long, const int ) ;
|
||||
S4EXPORT int tfile4go( TAG4FILE *, const unsigned char *, const long, const int ) ;
|
||||
int tfile4goEof( TAG4FILE * ) ;
|
||||
int tfile4go2( TAG4FILE *, const unsigned char *, const long, const int ) ;
|
||||
int tfile4initSeekConv( TAG4FILE *, int ) ; /* Initialize 'stok' and 'dtok' */
|
||||
|
@ -729,7 +729,8 @@ TBit_array& TBit_array::operator|= (const TBit_array& ba)
|
||||
// Certified 99%
|
||||
void TBit_array::set(long n)
|
||||
{
|
||||
const word i = index(n);
|
||||
CHECKD(n >= 0, "Can't set a negative bit ", n);
|
||||
const word i = index(n);
|
||||
if (i >= _size)
|
||||
resize(i);
|
||||
_bit[i] |= mask(n);
|
||||
|
@ -1137,6 +1137,19 @@ char* DB_index_getkey(int handle)
|
||||
return key;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
Si posiziona sulla chiave ed il record indicati
|
||||
--------------------------------------------------------------------------*/
|
||||
int DB_index_go(int handle, const char* key, long recno)
|
||||
{
|
||||
TAG4 *t;
|
||||
|
||||
if(!handle_ok(handle)) return(-1);
|
||||
if ((t=d4tagDefault(dbdata[handle]))==NULL) return(-1);
|
||||
|
||||
return(tfile4go(t->tagFile, key, recno, FALSE));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
Restituisce vero se l'indice e' alla fine
|
||||
--------------------------------------------------------------------------*/
|
||||
|
@ -57,6 +57,7 @@ extern "C" {
|
||||
long DB_index_recno(int handle);
|
||||
long DB_index_next(int handle);
|
||||
char* DB_index_getkey(int handle);
|
||||
int DB_index_go(int handle, const char * key, long recno);
|
||||
char* DB_memoptr(const int handle, const char * fieldname );
|
||||
int DB_memowrite(const int handle, const char * fieldname, const char * data ) ;
|
||||
int DB_index_eof(int handle);
|
||||
|
@ -110,23 +110,17 @@ void TRelation_application::set_limits(
|
||||
file().setkey(1);
|
||||
if (what & 0x1)
|
||||
{
|
||||
if (file().empty())
|
||||
_first = 1;
|
||||
else
|
||||
{
|
||||
file().first();
|
||||
_first = file().recno();
|
||||
}
|
||||
if (!file().empty() && file().first() == NOERR)
|
||||
_first = file().recno();
|
||||
else
|
||||
_first = -1;
|
||||
}
|
||||
if (what & 0x2)
|
||||
{
|
||||
if (file().empty())
|
||||
_last = 1;
|
||||
else
|
||||
{
|
||||
file().last();
|
||||
_last = file().recno();
|
||||
}
|
||||
if (!file().empty() && file().last() == NOERR)
|
||||
_last = file().recno();
|
||||
else
|
||||
_last = -1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -316,15 +310,8 @@ int TRelation_application::set_mode(int mode)
|
||||
const int m = ((TMaskmode)mode == NO_MODE) ? (int) MODE_QUERY : mode;
|
||||
_mask->set_mode(m);
|
||||
|
||||
// if (mode == _mode)
|
||||
// {
|
||||
// set_toolbar(FALSE); // Fast buttons update
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
set_toolbar(TRUE); // Full buttons update
|
||||
_mode = mode;
|
||||
// }
|
||||
|
||||
const char* t = "";
|
||||
switch(mode)
|
||||
|
@ -86,8 +86,6 @@ private:
|
||||
|
||||
// @Setta i filtri di lettura
|
||||
void set_key_filter();
|
||||
// @cmember:(INTERNAL) Setta i limiti
|
||||
void set_limits(byte what = 0x3);
|
||||
// @cmember:(INTERNAL) Posiziona l'applicazione in modo richiesta/inserimento (chiama <mf TRelation_application::query_mode>)
|
||||
void query_insert_mode()
|
||||
{ query_mode(TRUE); }
|
||||
@ -236,6 +234,8 @@ protected:
|
||||
|
||||
// @access Public Member
|
||||
public:
|
||||
// @cmember:(INTERNAL) Setta i limiti
|
||||
void set_limits(byte what = 0x3);
|
||||
// @cmember Ritorna la maschera corrente
|
||||
TMask& curr_mask() const
|
||||
{ return *_mask; }
|
||||
|
@ -285,10 +285,10 @@ void TRelation::print_on(ostream& out) const
|
||||
|
||||
void TRelation::restore_status()
|
||||
{
|
||||
_status.restart();
|
||||
for (int i = 0; i < _files.items(); i++)
|
||||
// _status.restart();
|
||||
for (int i = _files.last(); i >= 0 ; i--)
|
||||
{
|
||||
const int err = _status.get_int();
|
||||
const int err = _status.get_int(i*3);
|
||||
const TRecnotype recno = _status.get_long();
|
||||
const int key = _status.get_int();
|
||||
|
||||
@ -297,6 +297,7 @@ void TRelation::restore_status()
|
||||
else file(i).curr().zero();
|
||||
file(i).setstatus(err);
|
||||
}
|
||||
_status.get(_files.items()*3 - 1); // mi riposiziono prima di tutti i first_match
|
||||
for (i = 0; i < _reldefs.items(); i++)
|
||||
{
|
||||
const bool first_match = _status.get_int() ? TRUE : FALSE;
|
||||
@ -1092,8 +1093,17 @@ TRecnotype TCursor::buildcursor(TRecnotype rp)
|
||||
bool TCursor::filtercursor(TRecnotype recno)
|
||||
{
|
||||
file().readat(recno);
|
||||
if (update_relation())
|
||||
if (update_relation())
|
||||
{
|
||||
const int handle = file().handle();
|
||||
const char *s0 = DB_index_getkey(handle);
|
||||
|
||||
_if->update(-filter_limit());
|
||||
if (_nkey != DB_tagget(handle))
|
||||
DB_tagselect(handle, _nkey);
|
||||
if (recno != DB_index_recno(handle))
|
||||
DB_index_go(handle, s0, recno);
|
||||
}
|
||||
|
||||
bool ok = TRUE;
|
||||
|
||||
@ -1362,7 +1372,7 @@ int TCursor::test(TIsamop op, TReclock lockop) const
|
||||
TLocalisamfile& curfile = file();
|
||||
const TRectype& currec = curfile.curr();
|
||||
curfile.setkey(_nkey);
|
||||
|
||||
|
||||
int err = NOERR;
|
||||
if (op == _isequal)
|
||||
{
|
||||
@ -1400,6 +1410,12 @@ int TCursor::test(TIsamop op, TReclock lockop) const
|
||||
break;
|
||||
else
|
||||
{
|
||||
if (((TCursor *)this)->items() == 0)
|
||||
{
|
||||
err = _isemptyfile;
|
||||
break;
|
||||
}
|
||||
|
||||
if (lockop != _nolock)
|
||||
curfile.reread(_unlock);
|
||||
|
||||
|
@ -498,19 +498,22 @@ void TSheet_control::check(
|
||||
if (on)
|
||||
{
|
||||
const long tot = items()-1;
|
||||
_checked.set(tot); // Forza le dimensioni del bit array
|
||||
_checked.set(); // Setta tutti i bit
|
||||
if (tot >= 0)
|
||||
{
|
||||
_checked.set(tot); // Forza le dimensioni del bit array
|
||||
_checked.set(); // Setta tutti i bit
|
||||
|
||||
// Elimina i bit in eccesso alla fine dell'array
|
||||
for (long i = _checked.items()-1; i > tot; i--)
|
||||
_checked.reset(i);
|
||||
// Elimina i bit in eccesso alla fine dell'array
|
||||
for (long i = _checked.items()-1; i > tot; i--)
|
||||
_checked.reset(i);
|
||||
|
||||
// Elimina i bit corrispondenti a righe disabilitate
|
||||
if (_disabled.first_one() >= 0)
|
||||
{
|
||||
for (long i = tot; i >= 0; i--)
|
||||
if (_disabled[i]) _checked.reset(i);
|
||||
}
|
||||
// Elimina i bit corrispondenti a righe disabilitate
|
||||
if (_disabled.first_one() >= 0)
|
||||
{
|
||||
for (long i = tot; i >= 0; i--)
|
||||
if (_disabled[i]) _checked.reset(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
_checked.reset();
|
||||
@ -1247,8 +1250,8 @@ bool TSheet::tutti_handler(TMask_field& f, KEY k)
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
TSheet& s = (TSheet&)f.mask();
|
||||
if (s.check_enabled())
|
||||
s.check(-1, !s.one_checked());
|
||||
if (s.check_enabled())
|
||||
s.check(-1, !s.one_checked());
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user