From 0f5ea75fc9ef257692ecada10e9b97d2b1693c4d Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 23 Jan 2002 06:51:24 +0000 Subject: [PATCH] Patch level : aga 07 no patch Files correlati : Ricompilazione Demo : [ ] Commento : Corretta stampa per modulo serv.frm verificare anche le altre!! git-svn-id: svn://10.65.10.50/trunk@10021 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- si/si0200.cpp | 56 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/si/si0200.cpp b/si/si0200.cpp index 595288c58..7c8eb0cc3 100755 --- a/si/si0200.cpp +++ b/si/si0200.cpp @@ -56,7 +56,10 @@ bool TListe_form::validate(TForm_item& fld, TToken_string& val) TListe_form::TListe_form(const char* form, const char* code, int editlevel, const char* desc) : TForm(form, code, editlevel, desc) { - relation()->lfile().set_curr(new TDocumento); + const int num = relation()->lfile().num(); + + if (num == LF_DOC) + relation()->lfile().set_curr(new TDocumento); } class TListe_application: public TSkeleton_application @@ -134,22 +137,45 @@ void TListe_application::set_limits() TSheet_field & s = _select_mask->sfield(F_SHEETNUMS); const int rows = s.items(); - for (int i = 0; i < rows; i++) - { - TString numfilter; - TToken_string r = s.row(i); + if (rows > 0) + { + TString sw, e1, e2; - numfilter << format("&&(33->CODNUM==\"%s\")", (const char *)r.get(0)); - - for (int j = 0; j < 6; j++) + for (int j=0; j 0) - numfilter << format("&&(33->STATO==%d)", stato); + e1.format("(33->CODNUM==\"%s\"", (const char*)sw); + e2 = ""; + for (int k=1; k<=6; k++) // Famme vede' li stati generali... Aho' A BURINO! Che e' la Rivoluzione Francese? + { + const char c = riga.get(k)[0]; + if (c == '\0' || c == ' ') + break; // Interrompe al primo blank... + e2.format("(33->STATO==\"%c\")",c); + // Se k vale 2 o piu' significa ke gli stati prec erano != "" no!? + if (k == 1) + e1 << "&&("; + else + e1 << "||"; + e1 << e2; + } + if (e2.not_empty()) + e1 << ")"; + e1 << ")"; // Piazza la parentesi finale + + if (j == 0) + filter << "&&("; + else + filter << "||"; + + filter << e1; } - if (numfilter.not_empty()) - filter << numfilter; + filter << ")"; // Parentesi finale } TDate data_fr(_select_mask->get(F_DA_DATADOC)); if (data_fr.ok()) @@ -157,10 +183,10 @@ void TListe_application::set_limits() TDate data_to(_select_mask->get(F_A_DATADOC)); if (data_to.ok()) filter << format("&&(ANSI(33->DATADOC)>=%s)", (const char *) data_to.string(ANSI)); - TDate art_fr(_select_mask->get(F_DA_DATADOC)); + TDate art_fr(_select_mask->get(F_SERVFR)); if (art_fr.ok()) filter << format("&&(34->CODARTMAG>=\"%s\")", (const char *) art_fr); - TDate art_to(_select_mask->get(F_A_DATADOC)); + TDate art_to(_select_mask->get(F_SERVTO)); if (art_to.ok()) filter << format("&&(34->CODARTMAG>=\"%s\")", (const char *) art_to); filter << ")";