Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/trunk@16904 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2008-07-21 14:37:57 +00:00
parent 3ef370dbff
commit 375e0ec0fd
4 changed files with 53 additions and 33 deletions

View File

@ -300,10 +300,6 @@
>
</File>
</Filter>
<Filter
Name="Ini"
>
</Filter>
<File
RelativePath="..\lib\AgaLib.lib"
>

View File

@ -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();
}
}

View File

@ -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

View File

@ -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