+ Rispondi al messaggio
Pagina 1 di 3 123 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25

raggruppamento su report

  1. #1
    melismf non è in linea Novello
    Ciao a tutti, è la prima volta che scrivo.
    Sto uscendo di testa per quanto segue:
    ho un report da query semplicissimo, che elenca dei prodotti tipo
    codice - descrizione - quantità.
    La mia esigenza è che, ogni volta che la somma di quantità raggiunge 100, deve saltare pagina e continuare nella pagina successiva con un altro gruppo di record la cui somma di quantità è uguale o inferiore a 100.
    In pratica è un lungo elenco di scatole di prodotti diversi che vanno sistemati in carrelli che devono contenere massimo 100 scatole, di meno si di più no.
    Il report, partendo da questo elenco, mi deve stampare tante pagine quanti gruppi di 100 scatole sono contenuti nell'elenco.

    Spero di essere stato abbastanza chiaro e ringrazio anticipatamente chiunque mi voglia aiutare.

  2. #2
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Ciao e benvenuto nel forum

    prova a dare una letta al seguente articolo:
    ACC: How to Control the Number of Records Printed Per Page

    saluti

  3. #3
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Quote Originariamente inviato da melismf Visualizza il messaggio
    Ciao a tutti, è la prima volta che scrivo.
    Sto uscendo di testa per quanto segue:
    ho un report da query semplicissimo, che elenca dei prodotti tipo
    codice - descrizione - quantità.
    La mia esigenza è che, ogni volta che la somma di quantità raggiunge 100, deve saltare pagina e continuare nella pagina successiva con un altro gruppo di record la cui somma di quantità è uguale o inferiore a 100.
    In pratica è un lungo elenco di scatole di prodotti diversi che vanno sistemati in carrelli che devono contenere massimo 100 scatole, di meno si di più no.
    Il report, partendo da questo elenco, mi deve stampare tante pagine quanti gruppi di 100 scatole sono contenuti nell'elenco.

    Spero di essere stato abbastanza chiaro e ringrazio anticipatamente chiunque mi voglia aiutare.
    La cosa è relativamente semplice.
    Metti un Contatore nell'Evento Corpo_Format ed ad ogni Record verrà incrementato... sempre in questo Evento sfruttando la proprietà ForceNewPage dell'oggetto SECTION fai generare la nuova pagina e riparti.

    Il Contatore deve essere una Variabile dichiarata a livello di Report.

    In sostanza una cosa simile
    Option Compare Database
    Option Explicit
    
    Private lnDip As Long ' Counter di progressione
    Const DipXpage As Integer = 10 ' Numero di RECORD per Pagina
    
    
    Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
        
        If (lnDip Mod DipXpage) = 0 Then
            Me.Section(0).ForceNewPage = 1
            lnDip = 1
        Else
            Me.Section(0).ForceNewPage = 0
            lnDip = lnDip + 1
        End If
    
    End Sub
    
    Private Sub SezioneIntestazionePagina_Format(Cancel As Integer, FormatCount As Integer)
            lnDip = 1
    End Sub
    
    Ciao
    ℹ️ Leggi di più su @Alex ...

  4. #4
    melismf non è in linea Novello
    Grazie Alex, ma forse mi sono spiegato male.
    A me non servono 10 record fissi per pagina, ma tanti record per pagina la cui somma di quantità mi da 100 o meno di 100.
    Se un record ha quantità 98, mi deve stampare una pagina solo con quel record.
    Se l'elenco contiene 4 records di cui il primo ha quantità 98, il secondo 50, il terzo 45 e il quarto 10, mi deve fare pag1 con 98, pag2 con 50+45 e pag3 con 10.
    In realtà nel mio elenco sono presenti decine di records con quantita sotto 10 ma ho la necessità di dividerlo in pagine da max 100 scatole per esigenze dei magazzinieri.

    Spero di essere stato più chiaro e grazie ancora

  5. #5
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Quote Originariamente inviato da melismf Visualizza il messaggio
    Grazie Alex, ma forse mi sono spiegato male.
    A me non servono 10 record fissi per pagina, ma tanti record per pagina la cui somma di quantità mi da 100 o meno di 100.
    Se un record ha quantità 98, mi deve stampare una pagina solo con quel record.
    Se l'elenco contiene 4 records di cui il primo ha quantità 98, il secondo 50, il terzo 45 e il quarto 10, mi deve fare pag1 con 98, pag2 con 50+45 e pag3 con 10.
    In realtà nel mio elenco sono presenti decine di records con quantita sotto 10 ma ho la necessità di dividerlo in pagine da max 100 scatole per esigenze dei magazzinieri.

    Spero di essere stato più chiaro e grazie ancora
    Sei stato chiarissimo, ma apri la tua mente e riadatta la soluzione che ti ho proposto alla tua esigenza, le cose sono le stesse devi solo sostituire l'oggetto del conteggio...
    Fai uno sforzo la cosa è talmente banale che mi stupisce la tua risposta.
    ℹ️ Leggi di più su @Alex ...

  6. #6
    melismf non è in linea Novello
    Scusa Alex, ma data la mia scarsa formazione, per me è tutt'altro che banale. Se fosse stato banale forse non avrei avuto bisogno di aiuto.

    Mi sto scervellando, ma non riesco a capire come adattare l'esempio al mio caso.

    Hai la pazienza di essere un pò più esplicito?

    Ciao e grazie.

  7. #7
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Quote Originariamente inviato da melismf Visualizza il messaggio
    Scusa Alex, ma data la mia scarsa formazione, per me è tutt'altro che banale. Se fosse stato banale forse non avrei avuto bisogno di aiuto.

    Mi sto scervellando, ma non riesco a capire come adattare l'esempio al mio caso.

    Hai la pazienza di essere un pò più esplicito?

    Ciao e grazie.
    Io di pazienza ne ho tantissima... (facciano attenzione i lettori che mi conoscono con i commenti in merito... è una minaccia )
    Private Qt As Integer ' Counter di progressione
    Const QTMAX As Integer = 100 ' Quantità limite
    
    
    Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
        
        Qt=Qt + Me![Quantità] 
        If Qt>QTMAX  Then
            Me.Section(0).ForceNewPage = 1
        Else
            Me.Section(0).ForceNewPage = 0
        End If
    
    End Sub
    
    Private Sub SezioneIntestazionePagina_Format(Cancel As Integer, FormatCount As Integer)
             Qt=Me![Quantità]
    End Sub
    
    Il problema però è che non ho testato il codice quindi TU devi obbligatoriamente fare un passo avanti perchè se poi non funziona perfettamente come chiedi ti ci devi sbattere qualche giorno per capire e correggere.
    ℹ️ Leggi di più su @Alex ...

  8. #8
    melismf non è in linea Novello
    Sono fermo da venerdì con questo problema.

    Ma Qt = Qt + Me![Qtà] è una somma progressiva?
    Io nel corpo del report ho sdoppiato il campo Qtà e in uno che ho chiamato qtàpro ho messo somma parziale su tutto per avere la somma progressiva e dunque per sapere quando arriva a 100.
    Ma il codice non funzia ne riferito al campo qtà ne al campo qtàpro.
    Non so più che fare.

    Ti posso postare il file in allegato? è piccolino.

    Ciao.

  9. #9
    melismf non è in linea Novello
    Ho notato che il problema è che l'evento corpo su formatazione è completamente insensibile al codice, posso scriverci la divina commedia ed è come se non scrivessi nulla.
    Cosa può essere sucesso?

  10. #10
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Ciao
    premetto che non sono in grado di aiutarti con il codice fornito dal "paziente" Alex, nè ho una soluzione al riguardo.
    Rirtengo, però, che il tuo problema sia più corposo di quanto esposto. Infatti secondo me, al fine di ottimizzare la sistemazione nei carrelli, credo sia necessario valutare le possibili combinazioni/permutazioni delle quantità, in quanto rischi di avere carrelli pieni e carrelli quasi vuoti.
    Mi spiego meglio:
    1° record: 98
    2° record: 3
    3° record: 95
    4° record: 6
    Ammesso che riuscissi a far funzionare la macro suggeritati, avresti come risultato 4 pagine/carrelli, mentre ne sarebbero sufficienti 3.
    Ovviamente è un piccolo esempio, ma dovrebbe rendere l'idea di quanto detto.

    Venendo alla tua "divina commedia", ma sei sicuro di aver scritto il codice al posto giusto? altrimenti non ci sarebbe altra spiegazione al fatto che non si scatena l'evento su formattazione del corpo del report.
    Tale evento va inserito cliccando di destro in una zona vuota del corpo report e scegliendo dalle proprietà : Evento > Su formattazione (quindi non scritto in un modulo).

    Accertati inserendo un punto di stop (F9) su una qualsiasi istruzione per esempio: Qt=Qt + Me![Quantità] , per vedere che il codice viene eseguito.

    saluti
    ------------------------------------------------
    per il "paziente" Alex: dubbio: l'istruzione su format dell'intestazione sicuramente valorizza Qt con la quantità del primo record, ma - tranne mia palese incompetenza - anche Qt=Qt + Me![Quantità] legge il primo record, pertanto se il valore del primo rk è 36, in Qt avremmo 72 come quantità alla prima lettura.

    ....cari saluti

    PS: mi piaceva di più il tuo gemello, irascibile e poco accondiscendente: stai invecchiando? Se così... ben venuto !

+ Rispondi al messaggio
Pagina 1 di 3 123 ultimoultimo

Potrebbero interessarti anche ...

  1. raggruppamento dinamico report
    Da fabietto10 nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 13-03-2018, 10:28
  2. Raggruppamento report per ORA
    Da CESABAS nel forum Microsoft Access
    Risposte: 10
    Ultimo Post: 05-06-2016, 15:13
  3. ordinamento e raggruppamento in Report
    Da adelvec nel forum Microsoft Access
    Risposte: 15
    Ultimo Post: 14-10-2011, 19:34
  4. Raggruppamento e ordinamento report
    Da bud77 nel forum Microsoft Word
    Risposte: 5
    Ultimo Post: 08-02-2007, 17:35
  5. [VB6/Crystal Report] Stampa Report Con Raggruppamento
    Da ritademarco nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 24-01-2006, 20:38