diff --git a/build/ba8.vcxproj b/build/ba8.vcxproj
index 53c71cbc7..96cd2a854 100644
--- a/build/ba8.vcxproj
+++ b/build/ba8.vcxproj
@@ -69,14 +69,13 @@
MaxSpeed
OnlyExplicitInline
- ..\src\include;..\src\xvaga;..\src\xi;%(AdditionalIncludeDirectories)
+ ..\src\include;..\src\xvaga;..\src\xi;..\src\xvtdb;%(AdditionalIncludeDirectories)
NDEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions)
true
MultiThreaded
true
Level3
true
- ProgramDatabase
$(IntDir)$(TargetName).pdb
true
@@ -129,9 +128,9 @@
MultiThreadedDebug
Level3
true
- EditAndContinue
$(IntDir)$(TargetName).pdb
true
+ EditAndContinue
_DEBUG;%(PreprocessorDefinitions)
diff --git a/build/f90.vcxproj b/build/f90.vcxproj
index e0bf92062..50f9d289a 100644
--- a/build/f90.vcxproj
+++ b/build/f90.vcxproj
@@ -116,7 +116,7 @@
MaxSpeed
Default
- ..\src\xvtdb\;..\src\cg;..\src\include;..\src\xvaga;%(AdditionalIncludeDirectories)
+ ..\src\xvtdb\;..\src\cg;..\src\include;..\src\xvaga;..\src\f1;%(AdditionalIncludeDirectories)
NDEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions)
true
MultiThreaded
@@ -232,6 +232,7 @@
true
+ true
diff --git a/cd/test/ba0972.txt b/cd/test/ba0972.txt
new file mode 100644
index 000000000..2eaf10cb4
--- /dev/null
+++ b/cd/test/ba0972.txt
@@ -0,0 +1,3 @@
+ba8.exe
+
+Corretta classe record sqlite: i datatype erano sempre sbagliati perche' presi dalla prima riga del set e quasi sempre i campi erano considerati real per i TVariant solitamente dovuto a un guessing di campi vuoti.
diff --git a/cd/test/ba0972a.ini b/cd/test/ba0972a.ini
new file mode 100644
index 000000000..7e6adcac5
--- /dev/null
+++ b/cd/test/ba0972a.ini
@@ -0,0 +1,31 @@
+[Main]
+Demo=0
+
+[ba8]
+File(503) = ba8.exe|X
+Patch = 0972
+Versione = 21511200
+
+[ba99]
+Kill(0) = batbsce.txt|x
+Kill(1) = wxmsw240.dll|x
+Kill(2) = bastcms.rep|x
+Kill(3) = bastcms.msk|x
+Kill(4) = bastfsc.msk|x
+Kill(5) = bastfsc.rep|x
+Kill(6) = bastuue.msk|x
+Kill(7) = bastuue.rep|x
+
+[ba]
+Data = 23-06-2020
+Descrizione = Base
+Dischi = 1
+Moduli = sy
+OEM =
+Patch = 0972
+PostProcess = bainst -0 BA
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 21511200
+
diff --git a/cd/test/ba0972a1.zip b/cd/test/ba0972a1.zip
new file mode 100644
index 000000000..8b0541f8b
Binary files /dev/null and b/cd/test/ba0972a1.zip differ
diff --git a/cd/test/f90968.txt b/cd/test/f90968.txt
index f36df247d..3a96398e1 100644
--- a/cd/test/f90968.txt
+++ b/cd/test/f90968.txt
@@ -1,12 +1,12 @@
-f90200a.msk
f90.exe
f90100a.msk
-f90100d.msk
-fpmenu.men
f90100b.msk
f90100c.msk
+f90100d.msk
+f90200a.msk
f90300a.msk
f90300b.msk
+fpmenu.men
f9prospintegr.rep
sql\f90\f90104.sql
diff --git a/cd/test/f90968a.ini b/cd/test/f90968a.ini
index 6cbadd6b9..a02ed624d 100644
--- a/cd/test/f90968a.ini
+++ b/cd/test/f90968a.ini
@@ -3,21 +3,21 @@ Demo=0
[f90]
File(0) = f90.exe|X
-File(1) = f90100a.msk|X
-File(2) = f90100b.msk|X
-File(3) = f90100c.msk|X
-File(4) = f90100d.msk|X
-File(5) = fpmenu.men|X
-File(9) = f90200a.msk|X
-File(10) = f90300a.msk|X
-File(11) = f90300b.msk|X
-File(12) = f9prospintegr.rep|X
+File(2) = f90100a.msk|X
+File(3) = f90100b.msk|X
+File(4) = f90100c.msk|X
+File(5) = f90100d.msk|X
+File(6) = f90200a.msk|X
+File(7) = f90300a.msk|X
+File(8) = f90300b.msk|X
+File(9) = f9prospintegr.rep|X
+File(10) = fpmenu.men|X
File(13) = sql\f90\f90104.sql|X
-Patch = 0968
+Patch = 968
Versione = 21511200
[f9]
-Data = 17-06-2020
+Data = 23-06-2020
Descrizione = Archiviazione Sostitutiva
Dischi = 1
Moduli = fp,cg
diff --git a/cd/test/f90968a1.zip b/cd/test/f90968a1.zip
index 39f3b2784..381ac7336 100644
Binary files a/cd/test/f90968a1.zip and b/cd/test/f90968a1.zip differ
diff --git a/src/f9/f90100.cpp b/src/f9/f90100.cpp
index 8dc626b57..23cc5fd59 100644
--- a/src/f9/f90100.cpp
+++ b/src/f9/f90100.cpp
@@ -51,6 +51,7 @@ const TString& recset_get_string(const TRecordset& rec, const char* field, int
int recset_get_int(const TRecordset& rec, const char* field, int zero_filled = -1);
bool recset_get_bool(const TRecordset& rec, const char* field);
real recset_get_real(const TRecordset& rec, const char* field);
+TDate recset_get_date(const TRecordset& rec, const char* field);
TMask& descr_msk()
{
@@ -113,7 +114,10 @@ real recset_get_real(const TRecordset& rec, const char* field)
return rec.get(rec.find_column(field)).as_real();
}
-
+TDate recset_get_date(const TRecordset& rec, const char* field)
+{
+ return rec.get(rec.find_column(field)).as_date();
+}
////////////////////////////////////////////////////////
@@ -175,8 +179,8 @@ int TEstrai_mask::estrai()
movimento_t t;
t.err = false;
t.numreg = recset_get_int(mov, MOV_NUMREG);
- t.datareg = recset_get_string(mov, MOV_DATAREG);
- t.datadoc = recset_get_string(mov, MOV_DATADOC);
+ t.datareg = recset_get_date(mov, MOV_DATAREG);
+ t.datadoc = recset_get_date(mov, MOV_DATADOC);
t.codcaus = recset_get_string(mov, MOV_CODCAUS, 3);
t.meseliq = recset_get_int(mov, MOV_MESELIQ);
t.numdoc = recset_get_string(mov, MOV_NUMDOC);
@@ -1210,13 +1214,15 @@ void TF9_app::open_esclusi()
m.add(movs.get_date(MOV_DATADOC));
m.add(movs.get(MOV_CODCAUS));
m.add(movs.get(MOV_MESELIQ));
- m.add(movs.get(MOV_NUMDOC));
+ TString numdoc; numdoc << movs.get(MOV_NUMDOCEXT);
+ m.add(numdoc.full() ? numdoc : movs.get(MOV_NUMDOC));
const real imptot = movs.get_real(MOV_TOTDOC) + movs.get_real(MOV_RITFIS) + movs.get_real(MOV_RITSOC);
m.add(imptot);
m.add(movs.get_int(MOV_CODCF));
TLocalisamfile clifo(LF_CLIFO);
- TString ragsoc; ragsoc = clifo.get(CLI_RAGSOC);
- m.add(ragsoc);
+ clifo.put(CLI_TIPOCF, movs.get(MOV_TIPO));
+ clifo.put(CLI_CODCF, movs.get(MOV_CODCF));
+ m.add(clifo.read() == NOERR ? clifo.get(CLI_RAGSOC) : "");
m.add(TString(movs.get(MOV_REG)) << "/" << movs.get(MOV_PROTIVA));
m.add(movs.get(MOV_DESCR));
f9_app()._esclusi_vect.insert(f9_app()._esclusi_vect.end(), m);
diff --git a/src/f9/f90300.cpp b/src/f9/f90300.cpp
index c4464ae87..53192a29c 100644
--- a/src/f9/f90300.cpp
+++ b/src/f9/f90300.cpp
@@ -459,7 +459,9 @@ void TGestione_doc_cartacei_f9_msk::fill()
void TGestione_doc_cartacei_f9_msk::fill_annessi()
{
std::set file_err;
-
+ TSheet_field& sf = sfield(S_ANNESSI);
+ sf.hide();
+ sf.destroy();
TLocalisamfile ann(LF_F9ANNESSI);
if(ann.first() == NOERR)
{
@@ -469,9 +471,6 @@ void TGestione_doc_cartacei_f9_msk::fill_annessi()
file_err.insert(namefile);
TLocalisamfile mov(LF_MOV);
- TSheet_field& sf = sfield(S_ANNESSI);
- sf.hide();
- sf.destroy();
do
{
TToken_string& row = sf.row(-1);
@@ -494,9 +493,9 @@ void TGestione_doc_cartacei_f9_msk::fill_annessi()
_list_ann.insert({ namefile, { numreg, namefile, ann.get(F9A_CATDOCPAD), ann.get(F9A_CATDOCANN), ann.get(F9C_LOADDATE), ann.get(F9C_USER) } });
} while (ann.next() == NOERR);
- sf.force_update();
- sf.show();
}
+ sf.force_update();
+ sf.show();
if (!file_err.empty())
{
@@ -563,9 +562,11 @@ void TGestione_doc_cartacei_f9_msk::fill_docs()
_list_file.insert({ namefile, { namefile, files.get(F9C_LOADDATE), numreg, files.get(F9C_USER) } });
} while (files.next() == NOERR);
- sf.force_update();
+
}
+ sf.force_update();
sf.show();
+
if (!file_err.empty())
{
int count = 0;
diff --git a/src/f9/f9ProspIntegr.rep b/src/f9/f9ProspIntegr.rep
index e0dfcbb9d..63065c436 100644
--- a/src/f9/f9ProspIntegr.rep
+++ b/src/f9/f9ProspIntegr.rep
@@ -30,27 +30,34 @@
-
+
CODFISC
-
+
PARTIVA
-
+
-
+
-
+
DATADOC
+
+
+
+
+
+ NDOC
+
@@ -58,13 +65,6 @@
CODFORN
-
-
-
-
-
- NDOC
-
RAGSOCFORN
@@ -88,7 +88,7 @@
-
+
PARTIVAFORN
@@ -148,10 +148,10 @@
+
-
TOTALE
@@ -171,14 +171,14 @@
-
+
+
-
#ATTESTA @
diff --git a/src/f9/f9lib01.cpp b/src/f9/f9lib01.cpp
index d873d5fe3..519acffdb 100644
--- a/src/f9/f9lib01.cpp
+++ b/src/f9/f9lib01.cpp
@@ -289,8 +289,6 @@ bool TEstrazione::is_integr_rev(const int numreg, _Out_ TString& numreg_rev_vend
{
movcoll = mov_rs.get(MOV_NUMREG).as_int();
curr.put(MOV_MOVCOLL, numreg);
- TLocalisamfile& f = TLocalisamfile(LF_MOV);
- curr.rewrite(f);
break;
}
}
diff --git a/src/include/sqlset.cpp b/src/include/sqlset.cpp
index 2d4056f70..185a69195 100755
--- a/src/include/sqlset.cpp
+++ b/src/include/sqlset.cpp
@@ -93,7 +93,7 @@ sqlite3* TSQLite::open(const char* fname)
const char* errmsg = sqlite3_errmsg(_handle); // Stringa di sitema: inutile sqlite3_free(errmsg)
error_box(errmsg);
_handle = NULL;
- }
+ }
return _handle;
}
@@ -386,7 +386,7 @@ bool TSQLite::parse_select_from(const char* szSql)
{ table.cut(i); break; }
}
- const int logicnum = (table == "MAG") ? LF_MAG : table2logic(table);
+ const int logicnum = (table == "MAG") ? LF_MAG : table2logic(table);
if (logicnum >= LF_USER)
{
pi.set_text(table);
@@ -428,11 +428,11 @@ int TSQL_recordset::on_get_items(int argc, char** values, char** columns)
for (int i = 0; i < argc; i++)
{
TRecordset_column_info* info = new TRecordset_column_info;
- info->_name = columns[i];
- info->_width = 1;
- info->_type = _alfafld;
+ info->_name = columns[i];
+ info->_width = 1;
+ info->_type = _alfafld;
- const char* fldtype = columns[argc+i];
+ /*const char* fldtype = columns[argc+i];
if (fldtype != NULL)
{
if (xvt_str_same(fldtype, "DATE"))
@@ -449,7 +449,7 @@ int TSQL_recordset::on_get_items(int argc, char** values, char** columns)
info->_type = _memofld;
info->_width = 50;
}
- }
+ }*/
_column.add(info);
}
}
@@ -471,9 +471,9 @@ int TSQL_recordset::on_get_items(int argc, char** values, char** columns)
{
info._type = _datefld;
info._width = 10;
- } else
+ }/* else
if (real::is_real(values[i]))
- info._type = _realfld;
+ info._type = _realfld;*/
}
}
}
@@ -502,9 +502,9 @@ TRecnotype TSQL_recordset::items() const
{
TString sql; parsed_text(sql);
TPerformance_profiler prof("SQL query");
- _TheDataBase.exec("PRAGMA show_datatypes=ON;", NULL, NULL);
+ //_TheDataBase.exec("PRAGMA show_datatypes=ON;", NULL, NULL);
_TheDataBase.exec(sql, query_get_items, (TSQL_recordset*)this);
- _TheDataBase.exec("PRAGMA show_datatypes=OFF;", NULL, NULL);
+ //_TheDataBase.exec("PRAGMA show_datatypes=OFF;", NULL, NULL);
}
return _items;
}
@@ -634,4 +634,3 @@ TSQL_recordset::TSQL_recordset(const char* sql)
{
set(sql);
}
-
diff --git a/src/include/strings.h b/src/include/strings.h
index 8c242d598..ad9953e08 100755
--- a/src/include/strings.h
+++ b/src/include/strings.h
@@ -671,7 +671,7 @@ public:
void add(int n, int pos = -1);
// @cmember Aggiunge un reale
void add(const real r, int pos = -1);
- // @cmember Aggiunge un reale
+ // @cmember Aggiunge una data
void add(const TDate d, int pos = -1);
// @cmember Aggiunge un booleano
void add(bool on, int pos = -1) { add(on ? "X" : ""); }