Totale pagine in rapporto di VFP 8.0 possono essere ripristinati i dati di raggruppamento?

StackOverflow https://stackoverflow.com/questions/2536753

  •  22-09-2019
  •  | 
  •  

Domanda

Ho un rapporto (utilizzando VFP 8.0) con un raggruppamento di dati dal numero di fattura, ho bisogno di azzerare il totale di pagine, cambiando di numero di fattura.

non sono riuscito a farlo, come il _pagetotal restituirà sempre pagine totali di tutte fattura selezionata.

Si prega di consulenza.

È stato utile?

Soluzione

Sulla base della descrizione, sembra quello che vuoi è per il mio commento precedente ... Ogni fattura ha la sua propria pagina X del contesto Y dove alcuni "gruppi" hanno più pagine rispetto ad altri. Per fare ciò che si desidera in genere richiede il report da generare DUE VOLTE. Una volta a correre e catturare i quante pagine alla fine di ogni gruppo. La seconda istanza è il "FINALE". Il seguente è un semplice esempio su come fare ad esempio.

Crea i risultati della query, ma aggiungere una colonna aggiuntiva "OfPages" (o quello che volete per rappresentare il secondo "gruppo" del conte Pages) in un cursore readwrite.

SELECT YourIDGroup, OtherColumns, 000 as OfPages;
    FROM YourTable;
    ORDER BY 1;
    INTO CURSOR C_YourReportCursor readwrite


REPORT FORM TmpPages

REPORT FORM TmpPages preview  (or to printer)

Successivamente, nel programma, hanno una funzione di "catturare" il numero di pagina a piè di pagina gruppo per qualunque sia il vostro ID corrente è.

FUNCTION CatchOfPages
   LPARAMETERS CurrentID, LastPg

   UPDATE DBF( "C_YourReportCursor" );
      SET OfPages = LastPg;
      WHERE YourIDGroup = CurrentID

   */ Return empty space so nothing is actually printed in the report
   RETURN ""
ENDFUNC 

Ora, il trucco. Nella sua relazione, avere il vostro gruppo di dati basata sulla ID della fattura. Nell'intestazione di gruppo, invece di fare pagina x di y usando _pageno e _pagetotal, si prevede di utilizzare _pageno e colonna "ofPages" del cursore di ... Come il primo passaggio avrà il suo giusto valore aggiornato tramite la chiamata di funzione di cui sopra e è impostato la prima volta che il rapporto viene generato, ma senza finestra di output o una stampante, basta eseguire in background.

Ora, nel piè di pagina di gruppo, in fondo, aggiungere un controllo TextBox (proprio come se qualsiasi altra uscita campo di dati), e impostare la sua espressione = la chiamata di funzione con i parametri respectible ... es:

CatchOfPages( YourIDGroup, _PageNo )

Lo farà l'aggiornamento al cursore temperatura (o la vostra tabella dei risultati), con qualunque sia la sua numero di pagina attuale è per quella pagina finale al gruppo, e aggiornare tutti i record per la fattura associato ID gruppo, quindi, anche la pagina 1 conosce il suo OfPages = 2, 3, 4, o qualsiasi altra cosa.

Per nascondere / mascherare la prima istanza del report di essere visto, nasconderlo in un'altra finestra, come ad esempio

DEFINE WINDOW WinTempReport FROM 0, 0 TO 1, 1
REPORT FORM YourReport IN WINDOW WinTempReport
RELEASE WINDOWS WinTempReport

poi fare il vostro rapporto di uscita normale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top