Fare più copie di un report

venerdì 31 agosto 2012 - 15.43
Tag Elenco Tags  Windows 7  |  Windows XP  |  Access (.mdb)  |  Office 2007  |  Office 2003  |  Office 2000  |  Internet Explorer 7.0

sagrimal Profilo | Junior Member

Ciao a tutti.
Su un pulsante, su clik ho inserito:
Private Sub Comando60_Click()
On Error GoTo Err_Comando60_Click

Dim stDocName As String

stDocName = "CARTELLINO_CONTAINER_MAGAZZINO"
DoCmd.OpenReport stDocName, acPreview

Exit_Comando60_Click:
Exit Sub

Err_Comando60_Click:
MsgBox Err.Description
Resume Exit_Comando60_Click

End Sub
E fin qua tutto ok, vorrei però che mi venisse stampato il report in due copie come posso fare ?
Grazie
Salvatore

renarig Profilo | Expert


>E fin qua tutto ok, vorrei però che mi venisse stampato il report


Questo comando ti stampa 20 cpie del "Documento" attivo

DoCmd.PrintOut acPrintAll, , , acHigh, 20, True



Facci sapere

sagrimal Profilo | Junior Member

Su quale riga devo inserie il comando che mi hai scritto ?

renarig Profilo | Expert

>Su quale riga devo inserie il comando che mi hai scritto ?


Subito dopo la apertura del report
in modo che sei sicuro che il documento attivi è
appunto il report



Private Sub Comando60_Click()
On Error GoTo Err_Comando60_Click

Dim stDocName As String
stDocName = "CARTELLINO_CONTAINER_MAGAZZINO"

DoCmd.OpenReport stDocName, acPreview
DoCmd.PrintOut acPrintAll, , , acHigh, 2, True

Exit_Comando60_Click:
Exit Sub

Err_Comando60_Click:
MsgBox Err.Description
Resume Exit_Comando60_Click

End Sub





Facci sapere

sagrimal Profilo | Junior Member

Ciao Renarig, gazie innanzitutto.
Ho inserito la stringa che mi hai suggerito, ma purtroppo mi stampa sempre una sola copia. e non due.
Voglio approfittare per sapere se c'è eventualmente la possibilità di decidere, magari inserendo in numero di copie in una casella di testo nella maschera, quante copie desidero fare di una pagina del report.
Grazie mille
Salvatore
Ho aggiunto un'immagine della maschera dove stampo le etichette.

1280x800 220Kb


Prima clicco sul tasto 1 (inserisci cartellino) che va a scrivere il contenuto delle caselle di testo nella tabella pacchi.
poi clicco sul tasto stampa che va ad aprire e stampare il report la cui origine è una query che filtra i record in base al contenuto delle caselle di testo pacco iniziale e pacco finale.

renarig Profilo | Expert

> ma purtroppo mi
>stampa sempre una sola copia. e non due.


Strano a me ne stampa 2

Io Uso Access2003 Tu cosa usi ?

Ti allego una Demo minimale con 2 pulsanti
___ Per la stampa di 2 copie fisse
___ Per la stampa di quante copie imposti in una casella di testo





Facci Sapere

sagrimal Profilo | Junior Member

Ciao Renaring, in effetti funziona, il problema è un'altro, quando clicco sul pulsante stampa, la stampante mi tira fuori 5 etichette ognuno per un record, es inserisco i record 1 2 3 4 e 5 lancio la stampa con 2 inserito nella casella di testo ncopie e mi stampa 1 2 3 4 5 e poi 1 2 3 4 5. io invece vorrei che mi stampasse 2 copie di 1, 2 copie di 2, 2 copie di 3 ecc ecc
mi spigo meglio
immagina come se ogni numero fosse un'etichetta che esce dalla stampante

stampa attuale stampa con due copie
1 1
2 1
3 2
4 2
5 3
3
4
4
5
5

Ciao e grazie ancora per l'immensa cortesia
Salvatore

renarig Profilo | Expert

Mhhh
Il problema è quindi un po diverso.


Una domanda

Dal tuo codice di origine dopo la stampa il report
rimane aperto.

Ti serve tenerlo aperto per visionarlo a schermo ???
oppure non ti serve e lo richiudi subito dopo ???


Grazie

sagrimal Profilo | Junior Member

Ciao, lo richiudo, nel codice ho messo l'anteprima per risparmiare carta per fare le prove. Una volta scritto i record e poi lanciata la stampa, il report si chiude per essere pronto a stampare un'altra serie di record immessi in un secondo momento.

Grazie ancora
Salvatore

renarig Profilo | Expert

Hai un report di 5 pagine e lo vuoi stampare 2 volte


Se la tua query di origine del report è composta da 5 record
Comunque il report di 5 pagine è un "documento unico"
Pertanto ti stampera 1 2 3 4 5 1 2 3 4 5


Tu invece vuoi 1 1 2 2 3 3 4 4 5 5

____________________________________________________

Con il codice VBA non vedo soluzioni al problema.
( forse non ne sono capace )

__________________________________________________



Intravedo una soluzione piu macchinosa
( che personalmente NON mi piace )
usando una tabella di appoggio e una ulteriore query nella origine
dati del tuo report.


Crei una nuova tabella ( Chiamiamola Numera ) dove in un
campo metti TUTTI i numeri ( senza duplicati ) da 1
a un massimo che supera il numero di copie che potresti dover mai stampare


Poi prendi
__la tua attuale query di origine dati del report ( Chiamiamola 01TQR )
__ la tabella Numera
e da queste ne fai una ulteriore Query senza join
( chiamiamola 02Q )


Succede che i record di 01TQR si moltiplicano per i record
della tabella Numera


Nella maschera che ci fai vedere sopra ( Immaginiamo si chiami Mas1 )
selezioni i record che vuoi stampare e quante copie
Questi valori diventano i criteri di Filtrazione di 02Q


Quindi hai una ulteriore query 03Q che è la 02Q filtrata
e diventa la nuova origine dati del report
Questa la devi ordinare nel modo opportuno



Hai ottenuto di moltiplicare i tuoi record originali per il numero di copie che vuoi stampare
e poi hai ordinato in modo che ti stampi 1 1 2 2 3 3 4 4 5 5 come vuoi te


______________________________________________________

Tutto quello che ti ho descritto malamente lo puoi facilmente integrare
nelle query e filtri che gia hai aggiungendo solamente la necessaria tabella Numera.





So che mi sono spiegato male, ma studiati la demo che è piu semplice



Saluti




sagrimal Profilo | Junior Member

Ciao Rena, scusa la mia ignoranza, ma quando lancio la stampa, escono dalla stampantina 5 etichette singole, quindi in effetti la query mi genera 5 report singoli, uno per ogni record. Quindi a rigor di logica, con il sistema che mi hai suggerito, il secondo per intenderci, covrebbe stampare 2 copie per ogni etichetta, o sbaglio?

Ciao Ancora grazie
Salvatore

renarig Profilo | Expert


Premesso che non conosco nel dettaglio il tuo applicativo.

Se lanci 1 volta la stampa e ti escono 5 etichette significa
che il report in questione e UNICO ma composto da 5
pagine ( magari ci sono le interruzioni di pagina )


quindi se lo stampi 2 volte ottieni irrevocabilmente
2 volte 1 2 3 4 5 cioe 1 2 3 4 5 - 1 2 3 4 5

___________________________________________________



Tu vuoi ottenere 1 1 2 2 3 3 4 4 5 5 pertanto
non ti basta stampare 2 volte

Il tuo report deve essere composto da 10 pagine
e le stesse devono essere ordinate opportunamente.

______________________________________________
______________________________________________
______________________________________________


> ....... quando lancio la stampa,
>escono dalla stampantina 5 etichette singole, quindi in effetti
>la query mi genera 5 report singoli, uno per ogni record

Vuoi dirmi che la query di origine del report e composta
da un solo record ?? UNA RIGA ???

Questa frase invece mi "sconvolge"
Parli di 1 singolo record che stampa 5 etichette,
ma le etichette sono diverse ( tu parli di 1 2 3 4 5 )

Se fosse cosi significa che non ho capito nulla
della tua applicazione


Saluti

sagrimal Profilo | Junior Member

Ciao, forse mi sono spiegato male.
Se vedi la videata che ho allegato in un precedente post noterai che prima scrivo i record in base a quello segnato nelle caselle pacco iniziale e pacco finale, quindi se c'è segnato 1 e 5 vorrà dire che quando clicco su immetti cartellino mi scrive 5 record 1 2 3 4 e 5. quando vado in stampa il report richiama la queri che sull'ID del record mi filtra il range critto sulle caselle di testo pacco iniziale e finale e mi stampa 5 etichette, una per ogni record.
Grazie mille e scusami se ti sto facendo impazzire.
Salvatore

renarig Profilo | Expert

Postaci un pezzettino del DB con
__quella maschera
__il report
__le query
__le tabelle
__Pochi record "stupidi"

necessari per la stampa.






sagrimal Profilo | Junior Member

Grazie mille per la tua disponibilità, allego il db in serata, adesso purtroppo mi trovo su una postazione dovenon ho il db.

Grazie ancora
Salvatore

sagrimal Profilo | Junior Member

Ok ti allego il data base
Ciao e grazie mille
Salvatore

renarig Profilo | Expert

E stato abbastanza semplice ti elenco le modifiche perche
le devi replicare sulla tua applicazione

_______________________________________________

Ho rifatto totalmente il reportino perche c'era qualcosa di
strano che non capivo.

Dovrai adattartelo alla tua stampantina delle etichette


_____________________________________________________________

Aggiunto la tabella NCopie
Devono esserci TUTTI i numeri da 1 al Max Numero
di copie che potrai mai dover stampare
( Immaginiamo 31)
_______________________________________________________________

Modificato la maschera Aggiunto controllo "QCo"
dove scrivi quante copie vuoi stampare

Guardati le proprieta
__ Valore Predefinito
__ Valido se Between 1 and 31 ( è lo stesso 31 della tabella )
__ Messaggio di errore
__ Formato standard
__ Decimali 0

_________________________________________________________

Modificato la query "cartellino_pedana_MAGAZZINO"
aggiunta tabella NCopie
Aggiunto campo NCop

Guardati bene l'ordinamento e i Criteri

__________________________________________________________


Aggiunto il campo NumeroCopie al repotr


____________________________________________________




Facci spere

sagrimal Profilo | Junior Member

Ciao Rena, scusami se ti ripondo in ritardo, voglio per prima cosa ringraziarti, non credo riuscirò stasera a vedere la tua demo, appena posso ti manderò l'ok setutto a posto altrimenti ti dirò cos'è che non va.
Grazie ancora, mi farò vivo al più presto
Ciao
Salvatore

sagrimal Profilo | Junior Member

Ciao Rena, grazie al tuo contributo ho risolto alla grande il problema, grazie ancora, spero un giorno di poter diventare anch'io bravo come te e di poter in qualche modo ricambiare.
Ciao Salvatore
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5