diff --git a/projects/ps1104.vcproj b/projects/ps1104.vcproj
index 75f22a64f..dde2177d4 100755
--- a/projects/ps1104.vcproj
+++ b/projects/ps1104.vcproj
@@ -300,10 +300,6 @@
>
-
-
diff --git a/ps/ps1104100.cpp b/ps/ps1104100.cpp
index edba7cc3c..8f9f9f9c2 100755
--- a/ps/ps1104100.cpp
+++ b/ps/ps1104100.cpp
@@ -68,11 +68,13 @@ bool TImporta_penne_mask::on_field_event(TOperable_field& f, TField_event e, lon
/////////////////////////////////////////////////////////////
class TImporta_penne_recordset : public TCSV_recordset
{
+ char _sep;
+
protected:
virtual TRecnotype new_rec(const char* buf = NULL);
public:
- TImporta_penne_recordset(const char * fileName);
+ TImporta_penne_recordset(const char * fileName, char sep);
};
TRecnotype TImporta_penne_recordset::new_rec(const char* buf)
@@ -91,7 +93,7 @@ TRecnotype TImporta_penne_recordset::new_rec(const char* buf)
}
else
{
- if (*c == ';') //tipo di separatore dei campiche si trova nel record di origine
+ if (*c == _sep) //tipo di separatore dei campi che si trova nel record di origine
{
if (!apici)
str << str.separator();
@@ -113,10 +115,17 @@ TRecnotype TImporta_penne_recordset::new_rec(const char* buf)
}
-TImporta_penne_recordset::TImporta_penne_recordset(const char * fileName)
- : TCSV_recordset("CSV(;)") //separatore con ";"
+TImporta_penne_recordset::TImporta_penne_recordset(const char * filename, char sep)
+ : TCSV_recordset("CSV(;)"), _sep(sep) //separatore
{
- load_file(fileName);
+ TString query;
+ query << "CSV(" << sep << ")\n"
+ << "SELECT * FROM " << filename;
+
+ TFilename n;
+ if (parse_query(query, n) == _qt_select && n.exist())
+ load_file(n);
+
}
///////////////////////////////////////
@@ -127,7 +136,7 @@ class TImporta_penne : public TSkeleton_application
virtual bool check_autorization() const { return false; }
virtual const char * extra_modules() const { return "ve"; }
- TImporta_penne_mask* _msk;
+ TImporta_penne_mask* _msk;
protected:
@@ -142,10 +151,21 @@ public:
bool TImporta_penne::transfer(const TFilename& file)
{
- TImporta_penne_recordset s(file);
+ //che tipo di separatore dei campi si e' scelto?
+ const char sep = _msk->get(F_SEP)[0];
+ //crea il recordset sul file di input utilizzando il separatore
+ TImporta_penne_recordset s(file, sep);
TProgind pi(s.items(),"Importazione articoli in corso ...",true,true);
+ //dichiarazione di files e record da usare;si fa qui per non doverla ripetere ad ogni record letto;
+ //il record rec_anamag e' generico e vuoto (anche rec_umart ovviamente)
+ TLocalisamfile anamag(LF_ANAMAG);
+ TRectype& rec_anamag = anamag.curr();
+ TLocalisamfile umart(LF_UMART);
+ TRectype& rec_umart = umart.curr();
+
+ //giro su tutti i record del recordset per importarli
for (bool ok = s.move_first(); ok; ok = s.move_next())
{
if (!pi.addstatus(1))
@@ -154,7 +174,7 @@ bool TImporta_penne::transfer(const TFilename& file)
//prende i dati dal record di input del file csv
//codart ci deve essere e va maiuscolizzato
TString80 codart = s.get(0).as_string();
- if (codart.empty())
+ if (codart.blank())
continue;
codart.upper();
//descrizione
@@ -168,29 +188,21 @@ bool TImporta_penne::transfer(const TFilename& file)
//aggiorna i files ANAMAG e UMART
//ANAMAG
- TLocalisamfile anamag(LF_ANAMAG);
- TRectype rec_anamag = anamag.curr();
rec_anamag.put(ANAMAG_CODART, codart);
rec_anamag.put(ANAMAG_DESCR, descr);
- //tenta la rewrite nel caso l'articolo esista gia'
- int err = anamag.rewrite(rec_anamag);
- //se non esiste fa la write di brutto
- if (err != NOERR)
- err = anamag.write(rec_anamag);
+ //tenta la rewrite nel caso l'articolo esista gia'; se non esiste fa la write di brutto
+ int err = anamag.rewrite_write();
//UMART
//procede solo se la scrittura su anamag e' riuscita, in modo da evitare scritture incomplete
if (err == NOERR)
{
- TLocalisamfile umart(LF_UMART);
- TRectype rec_umart = umart.curr();
rec_umart.put(UMART_CODART, codart);
rec_umart.put(UMART_NRIGA, 1);
rec_umart.put(UMART_UM, um);
rec_umart.put(UMART_PREZZO, prezzo);
- if (umart.rewrite(rec_umart) != NOERR)
- umart.write(rec_umart);
+ err = umart.rewrite_write();
}
}
diff --git a/ps/ps1104100a.h b/ps/ps1104100a.h
index 4eb998854..fe3966160 100755
--- a/ps/ps1104100a.h
+++ b/ps/ps1104100a.h
@@ -3,4 +3,5 @@
#define F_PATH 103
#define F_NAME 104
#define F_UMS 105
-#define F_DESUMS 106
+#define F_DESUMS 106
+#define F_SEP 107
diff --git a/ps/ps1104100a.uml b/ps/ps1104100a.uml
index 70bb21856..c0a90c093 100755
--- a/ps/ps1104100a.uml
+++ b/ps/ps1104100a.uml
@@ -46,7 +46,7 @@ BEGIN
FLAGS "D"
END
-GROUPBOX DLG_NULL 80 5
+GROUPBOX DLG_NULL 80 6
BEGIN
PROMPT 1 4 "@bParametri importazione"
END
@@ -66,9 +66,15 @@ BEGIN
CHECKTYPE REQUIRED
END
+STRING F_SEP 1
+BEGIN
+ PROMPT 2 7 "Separatore dei campi nel file .csv "
+ CHECKTYPE REQUIRED
+END
+
STRING F_UMS 2
BEGIN
- PROMPT 2 7 "Unita' di misura "
+ PROMPT 2 8 "Unita' di misura "
USE %UMS
INPUT CODTAB F_UMS
DISPLAY "Codice " CODTAB
@@ -80,7 +86,7 @@ END
STRING F_DESUMS 50
BEGIN
- PROMPT 25 7 ""
+ PROMPT 25 8 ""
USE %UMS KEY 2
INPUT S0 F_DESUMS
DISPLAY "Descrizione@50" S0
@@ -91,32 +97,37 @@ END
TEXT -1
BEGIN
- PROMPT 2 9 "@bIstruzioni"
+ PROMPT 2 10 "@bIstruzioni"
END
TEXT -1
BEGIN
- PROMPT 2 10 "Nel campo Cartella inserire il percorso completo della cartella che contiene il file da importare."
+ PROMPT 2 11 "_ Nel campo Cartella inserire il percorso completo della cartella che contiene il file da importare."
END
TEXT -1
BEGIN
- PROMPT 2 11 "Nel campo File inserire il nome del file di tipo .csv da importare. Il nome NON deve contenere spazi."
+ PROMPT 2 12 "_ Nel campo File inserire il nome del file di tipo .csv da importare. Il nome NON deve contenere spazi."
END
TEXT -1
BEGIN
- PROMPT 2 12 "Nel campo Unità di misura inserire il codice di U.M. che sarà applicato a tutti gli articoli importati."
+ PROMPT 2 13 "_ Nel campo Unità di Misura inserire il codice di U.M. che sarà applicato a tutti gli articoli importati."
END
TEXT -1
BEGIN
- PROMPT 2 13 "All'avvio il programma ripropone l'ultimo file importato, la relativa cartella e la U.M. utilizzata."
+ PROMPT 2 14 "_ Nel campo Separatore inserire il carattere di separazione tra i campi del file da importare (es. ';' o ',')."
END
TEXT -1
BEGIN
- PROMPT 2 14 "NON e' ammesso il carattere ';' nei record del file da importare!"
+ PROMPT 2 15 " Dipende dalle impostazioni del proprio computer. Si controlla aprendo il file di input con un editor di testo."
+END
+
+TEXT -1
+BEGIN
+ PROMPT 2 16 "_ All'avvio il programma ripropone i parametri utilizzati nell'ultima importazione."
END
ENDPAGE