Discriminazione apertura files indsped e cfven
git-svn-id: svn://10.65.10.50/trunk@196 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
a947a1c109
commit
f114c65d04
163
cg/cg0201.cpp
163
cg/cg0201.cpp
@ -8,139 +8,142 @@ extern bool gest_vend();
|
|||||||
|
|
||||||
TClifoVI::TClifoVI():TRelation(LF_CLIFO), _oldindirizzi(0)
|
TClifoVI::TClifoVI():TRelation(LF_CLIFO), _oldindirizzi(0)
|
||||||
{
|
{
|
||||||
add(LF_CFVEN,"TIPOCF=TIPOCF|CODCF=CODCF");
|
if (gest_vend())
|
||||||
add(LF_INDSP,"TIPOCF=TIPOCF|CODCF=CODCF");
|
{
|
||||||
|
add(LF_CFVEN,"TIPOCF=TIPOCF|CODCF=CODCF");
|
||||||
|
add(LF_INDSP,"TIPOCF=TIPOCF|CODCF=CODCF");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TClifoVI::destroy_rows()
|
void TClifoVI::destroy_rows()
|
||||||
{
|
{
|
||||||
_indirizzi.destroy();
|
_indirizzi.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
TRectype& TClifoVI::indirizzo(int i)
|
TRectype& TClifoVI::indirizzo(int i)
|
||||||
{
|
{
|
||||||
TRectype *r=(TRectype*)_indirizzi.objptr(i);
|
TRectype *r=(TRectype*)_indirizzi.objptr(i);
|
||||||
|
|
||||||
if (r == NULL)
|
if (r == NULL)
|
||||||
{
|
{
|
||||||
r = new TRectype(LF_INDSP);
|
r = new TRectype(LF_INDSP);
|
||||||
_indirizzi.add(r,i);
|
_indirizzi.add(r,i);
|
||||||
}
|
}
|
||||||
return *r;
|
return *r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TClifoVI::read_indirizzi()
|
int TClifoVI::read_indirizzi()
|
||||||
{
|
{
|
||||||
const TLocalisamfile* rind = lfile(LF_INDSP);
|
const TLocalisamfile* rind = lfile(LF_INDSP);
|
||||||
// Put here gest_vend() discrimination
|
// Put here gest_vend() discrimination
|
||||||
if (gest_vend())
|
if (gest_vend())
|
||||||
{
|
{
|
||||||
position_rels();
|
position_rels();
|
||||||
destroy_rows();
|
destroy_rows();
|
||||||
for (bool ok=is_first_match(LF_INDSP); ok; ok=next_match(LF_INDSP))
|
for (bool ok=is_first_match(LF_INDSP); ok; ok=next_match(LF_INDSP))
|
||||||
{
|
{
|
||||||
const int nriga=rind->get_int("CODIND") -1;
|
const int nriga=rind->get_int("CODIND") -1;
|
||||||
indirizzo(nriga)=rind->curr();
|
indirizzo(nriga)=rind->curr();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_oldindirizzi=indirizzi_items();
|
_oldindirizzi=indirizzi_items();
|
||||||
return NOERR;
|
return NOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TClifoVI::read(TIsamop op, TReclock lockop, TDate& atdate)
|
int TClifoVI::read(TIsamop op, TReclock lockop, TDate& atdate)
|
||||||
{
|
{
|
||||||
int err=file()->read(op,lockop,atdate);
|
int err=file()->read(op,lockop,atdate);
|
||||||
if (err==NOERR) read_indirizzi();
|
if (err==NOERR) read_indirizzi();
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TClifoVI::write_rec(bool re, const TRectype& rec, TLocalisamfile* f)
|
int TClifoVI::write_rec(bool re, const TRectype& rec, TLocalisamfile* f)
|
||||||
{
|
{
|
||||||
if (re)
|
if (re)
|
||||||
{
|
{
|
||||||
const bool scrivi= (f->rewrite(rec)!=NOERR);
|
const bool scrivi= (f->rewrite(rec)!=NOERR);
|
||||||
if (scrivi) f->write(rec);
|
if (scrivi) f->write(rec);
|
||||||
} else
|
} else
|
||||||
f->write(rec);
|
f->write(rec);
|
||||||
return f->status();
|
return f->status();
|
||||||
}
|
}
|
||||||
|
|
||||||
int TClifoVI::cancella(TLocalisamfile* f, int da, int a)
|
int TClifoVI::cancella(TLocalisamfile* f, int da, int a)
|
||||||
{
|
{
|
||||||
const char tipocf=lfile()->get("TIPOCF")[0];
|
const char tipocf=lfile()->get("TIPOCF")[0];
|
||||||
const long codcf=lfile()->get_long("CODCF");
|
const long codcf=lfile()->get_long("CODCF");
|
||||||
|
|
||||||
for (int i=da; i<=a;i++)
|
for (int i=da; i<=a;i++)
|
||||||
{
|
{
|
||||||
f->zero();
|
f->zero();
|
||||||
f->put("TIPOCF",tipocf);
|
f->put("TIPOCF",tipocf);
|
||||||
f->put("CODCF",codcf);
|
f->put("CODCF",codcf);
|
||||||
f->put("CODIND",i);
|
f->put("CODIND",i);
|
||||||
if (f->read(_isequal,_lock)==NOERR)
|
if (f->read(_isequal,_lock)==NOERR)
|
||||||
f->remove();
|
f->remove();
|
||||||
}
|
}
|
||||||
return f->status();
|
return f->status();
|
||||||
}
|
}
|
||||||
|
|
||||||
int TClifoVI::registra(bool re, bool force)
|
int TClifoVI::registra(bool re, bool force)
|
||||||
{
|
{
|
||||||
TLocalisamfile* c=lfile(LF_CLIFO);
|
TLocalisamfile* c=lfile(LF_CLIFO);
|
||||||
int err=write_rec(re,c->curr(),c);
|
int err=write_rec(re,c->curr(),c);
|
||||||
if (err!=NOERR) return err;
|
if (err!=NOERR) return err;
|
||||||
|
|
||||||
// Put here gest_vend() discrimination
|
// Put here gest_vend() discrimination
|
||||||
if (gest_vend())
|
if (gest_vend())
|
||||||
{
|
{
|
||||||
TLocalisamfile* v=lfile(LF_CFVEN);
|
TLocalisamfile* v=lfile(LF_CFVEN);
|
||||||
err=write_rec(TRUE,v->curr(),v);
|
err=write_rec(TRUE,v->curr(),v);
|
||||||
if (err!=NOERR) return err;
|
if (err!=NOERR) return err;
|
||||||
|
|
||||||
TLocalisamfile* rind=lfile(LF_INDSP);
|
TLocalisamfile* rind=lfile(LF_INDSP);
|
||||||
const char tipocf=c->get("TIPOCF")[0];
|
const char tipocf=c->get("TIPOCF")[0];
|
||||||
const long codcf=c->get_long("CODCF");
|
const long codcf=c->get_long("CODCF");
|
||||||
|
|
||||||
for (int i=0; i<indirizzi_items(); i++)
|
for (int i=0; i<indirizzi_items(); i++)
|
||||||
{
|
{
|
||||||
if (!re)
|
if (!re)
|
||||||
{
|
{
|
||||||
indirizzo(i).put("TIPOCF",tipocf);
|
indirizzo(i).put("TIPOCF",tipocf);
|
||||||
indirizzo(i).put("CODCF",codcf);
|
indirizzo(i).put("CODCF",codcf);
|
||||||
}
|
}
|
||||||
err=write_rec(TRUE,indirizzo(i),rind);
|
err=write_rec(TRUE,indirizzo(i),rind);
|
||||||
}
|
|
||||||
if (i<_oldindirizzi)
|
|
||||||
cancella(rind,i+1,_oldindirizzi);
|
|
||||||
_oldindirizzi=indirizzi_items();
|
|
||||||
}
|
}
|
||||||
// END of gest_vend() discrimination
|
if (i<_oldindirizzi)
|
||||||
return err;
|
cancella(rind,i+1,_oldindirizzi);
|
||||||
|
_oldindirizzi=indirizzi_items();
|
||||||
|
}
|
||||||
|
// END of gest_vend() discrimination
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TClifoVI::write(bool force, TDate&)
|
int TClifoVI::write(bool force, TDate&)
|
||||||
{
|
{
|
||||||
_oldindirizzi=0;
|
_oldindirizzi=0;
|
||||||
return registra(FALSE,force);
|
return registra(FALSE,force);
|
||||||
}
|
}
|
||||||
|
|
||||||
int TClifoVI::rewrite(bool force, TDate&)
|
int TClifoVI::rewrite(bool force, TDate&)
|
||||||
{
|
{
|
||||||
return registra(TRUE,force);
|
return registra(TRUE,force);
|
||||||
}
|
}
|
||||||
|
|
||||||
int TClifoVI::remove(TDate&)
|
int TClifoVI::remove(TDate&)
|
||||||
{
|
{
|
||||||
TLocalisamfile* c=lfile(LF_CLIFO);
|
TLocalisamfile* c=lfile(LF_CLIFO);
|
||||||
TLocalisamfile* v=lfile(LF_CFVEN);
|
|
||||||
TLocalisamfile* rind=lfile(LF_INDSP);
|
|
||||||
|
|
||||||
c->remove();
|
c->remove();
|
||||||
|
|
||||||
// Put here gest_vend() discrimination
|
// Put here gest_vend() discrimination
|
||||||
if (gest_vend())
|
if (gest_vend())
|
||||||
{
|
{
|
||||||
cancella(rind,1,_oldindirizzi);
|
TLocalisamfile* v=lfile(LF_CFVEN);
|
||||||
v->remove();
|
TLocalisamfile* rind=lfile(LF_INDSP);
|
||||||
}
|
cancella(rind,1,_oldindirizzi);
|
||||||
|
v->remove();
|
||||||
|
}
|
||||||
_oldindirizzi=0;
|
_oldindirizzi=0;
|
||||||
|
|
||||||
return c->status();
|
return c->status();
|
||||||
|
46
cg/cg0201.h
46
cg/cg0201.h
@ -4,32 +4,32 @@
|
|||||||
|
|
||||||
class TClifoVI:public TRelation
|
class TClifoVI:public TRelation
|
||||||
{
|
{
|
||||||
// @DPRIV
|
// @DPRIV
|
||||||
TArray _indirizzi;
|
TArray _indirizzi;
|
||||||
int _oldindirizzi;
|
int _oldindirizzi;
|
||||||
// @END
|
// @END
|
||||||
protected:
|
protected:
|
||||||
// @FPROT
|
// @FPROT
|
||||||
int write_rec(bool re, const TRectype& r, TLocalisamfile* f);
|
int write_rec(bool re, const TRectype& r, TLocalisamfile* f);
|
||||||
int cancella(TLocalisamfile* f, int da, int a);
|
int cancella(TLocalisamfile* f, int da, int a);
|
||||||
int registra(bool re, bool force);
|
int registra(bool re, bool force);
|
||||||
int read_indirizzi();
|
int read_indirizzi();
|
||||||
// @END
|
// @END
|
||||||
public:
|
public:
|
||||||
virtual int next(TReclock lockop=_nolock) {return (lfile()->next(lockop) || read_indirizzi());}
|
virtual int next(TReclock lockop=_nolock) {return (lfile()->next(lockop) || read_indirizzi());}
|
||||||
virtual int prev(TReclock lockop=_nolock) {return (lfile()->prev(lockop) || read_indirizzi());}
|
virtual int prev(TReclock lockop=_nolock) {return (lfile()->prev(lockop) || read_indirizzi());}
|
||||||
virtual int first(TReclock lockop=_nolock) {return (lfile()->first(lockop) || read_indirizzi());}
|
virtual int first(TReclock lockop=_nolock) {return (lfile()->first(lockop) || read_indirizzi());}
|
||||||
virtual int last(TReclock lockop=_nolock) {return (lfile()->last(lockop) || read_indirizzi());}
|
virtual int last(TReclock lockop=_nolock) {return (lfile()->last(lockop) || read_indirizzi());}
|
||||||
virtual int skip(TReclock lockop=_nolock) {return (lfile()->skip(lockop) || read_indirizzi());}
|
virtual int skip(TReclock lockop=_nolock) {return (lfile()->skip(lockop) || read_indirizzi());}
|
||||||
virtual int read(TIsamop = _isgteq, TReclock lockop = _nolock, TDate& atdate = (TDate&) botime);
|
virtual int read(TIsamop = _isgteq, TReclock lockop = _nolock, TDate& atdate = (TDate&) botime);
|
||||||
virtual int write(bool force=TRUE, TDate& atdate = (TDate&) botime);
|
virtual int write(bool force=TRUE, TDate& atdate = (TDate&) botime);
|
||||||
virtual int rewrite(bool force=TRUE, TDate& atdate = (TDate&) botime);
|
virtual int rewrite(bool force=TRUE, TDate& atdate = (TDate&) botime);
|
||||||
virtual int remove(TDate& atdate = (TDate&) botime);
|
virtual int remove(TDate& atdate = (TDate&) botime);
|
||||||
|
|
||||||
TRectype& indirizzo(int i);
|
TRectype& indirizzo(int i);
|
||||||
int indirizzi_items() const {return _indirizzi.items();}
|
int indirizzi_items() const {return _indirizzi.items();}
|
||||||
void destroy_rows();
|
void destroy_rows();
|
||||||
|
|
||||||
TClifoVI();
|
TClifoVI();
|
||||||
virtual ~TClifoVI() {}
|
virtual ~TClifoVI() {}
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user