Patch level : 12.0 no-patch
Files correlati : Commento : Aggiunta DATACOMPCR Aggiunta funzione find per trovare un record in un record array usando la chiave nkey.
This commit is contained in:
		
							parent
							
								
									7b398f878d
								
							
						
					
					
						commit
						4d7d204fee
					
				| @ -1644,6 +1644,7 @@ void TMask::set( | |||||||
|   // @syntax set(short fld_id, long n, bool hit);
 |   // @syntax set(short fld_id, long n, bool hit);
 | ||||||
| { | { | ||||||
|   TMask_field& f = field(fld_id); |   TMask_field& f = field(fld_id); | ||||||
|  | 
 | ||||||
|   f.set(s); |   f.set(s); | ||||||
|   if ((f.active() || f.ghost())) |   if ((f.active() || f.ghost())) | ||||||
|   { |   { | ||||||
|  | |||||||
| @ -36,6 +36,7 @@ | |||||||
| #define MOV_CORRLIRE   "CORRLIRE" | #define MOV_CORRLIRE   "CORRLIRE" | ||||||
| #define MOV_CORRVALUTA "CORRVALUTA" | #define MOV_CORRVALUTA "CORRVALUTA" | ||||||
| #define MOV_DATACOMP   "DATACOMP" | #define MOV_DATACOMP   "DATACOMP" | ||||||
|  | #define MOV_DATACOMPCR "DATACOMPCR" | ||||||
| #define MOV_DATACOMPI  "DATACOMPI" | #define MOV_DATACOMPI  "DATACOMPI" | ||||||
| #define MOV_CODVALI    "CODVALI" | #define MOV_CODVALI    "CODVALI" | ||||||
| #define MOV_CAMBIOI    "CAMBIOI" | #define MOV_CAMBIOI    "CAMBIOI" | ||||||
|  | |||||||
| @ -205,6 +205,21 @@ void TRecord_array::sort(COMPARE_FUNCTION sort_func) | |||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | int TRecord_array::find(const TRectype & rec, int nkey) const | ||||||
|  | { | ||||||
|  | 	const int last = last_row(); | ||||||
|  | 	const TString80 key2find = rec.key(nkey); | ||||||
|  | 	TString80 key; | ||||||
|  | 
 | ||||||
|  | 	for (int nrow = first_row(); nrow <= last; nrow = succ_row(nrow)) | ||||||
|  | 	{ | ||||||
|  | 		key = row(nrow).key(nkey); | ||||||
|  | 		if (key2find == key) | ||||||
|  | 			return nrow; | ||||||
|  | 	} | ||||||
|  | 	return -1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| int TRecord_array::rec2row(const TRectype& r) const | int TRecord_array::rec2row(const TRectype& r) const | ||||||
| { | { | ||||||
|   CHECK(r.num() == _file, "Incompatible record"); |   CHECK(r.num() == _file, "Incompatible record"); | ||||||
| @ -451,12 +466,14 @@ int TRecord_array::write(bool re) const | |||||||
|   int i; |   int i; | ||||||
|   for (i = 1; i <= u; i++) |   for (i = 1; i <= u; i++) | ||||||
|   { |   { | ||||||
|     const TRectype* r = (TRectype*)_data.objptr(i); |     TRectype* r = (TRectype*)_data.objptr(i); | ||||||
|      |      | ||||||
| 		if (r != NULL) | 		if (r != NULL) | ||||||
| 		{ | 		{ | ||||||
| 			if (re) | 			if (re) | ||||||
| 			{ | 			{ | ||||||
|  | 				if (db_log() && _file != LF_DBLOG) | ||||||
|  | 					r->set_preserve_values(false); | ||||||
| 				err = r->rewrite(f); | 				err = r->rewrite(f); | ||||||
| 				if (err == _iskeynotfound || err == _iseof || err == _isemptyfile) | 				if (err == _iskeynotfound || err == _iseof || err == _isemptyfile) | ||||||
| 					err = r->write(f); | 					err = r->write(f); | ||||||
|  | |||||||
| @ -123,6 +123,8 @@ public: | |||||||
|   bool renum_key(const char* field, long num); |   bool renum_key(const char* field, long num); | ||||||
|   // @cmember Ordina il Record Array secondo il criterio definito in <t COMPARE_FUNCTION>
 |   // @cmember Ordina il Record Array secondo il criterio definito in <t COMPARE_FUNCTION>
 | ||||||
|   void sort(COMPARE_FUNCTION sort_func); |   void sort(COMPARE_FUNCTION sort_func); | ||||||
|  | 	// @cmember Cerca un record nel Record Array secondo la chiave nkey
 | ||||||
|  | 	int find(const TRectype & rec, int nkey = 1) const ; | ||||||
| 
 | 
 | ||||||
|   // @cmember Legge tutto l'array dal file
 |   // @cmember Legge tutto l'array dal file
 | ||||||
|   virtual int read(const TRectype& r); |   virtual int read(const TRectype& r); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user