+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

stampare fronte/retro

  1. #1
    cris77 non è in linea Scolaretto
    Ciao a tutti,

    Vi pongo un quesito semplice che io non riesco ad elaborare...

    Ho creato con Crystal report 9 due report: Report1 e Report2

    Vorrei che da VB6 con un semplice command button "STAMPA" io posssa stampare i due report in modalità DUPLEX (fronte/retro).

    Entro nei dettagli per essere più chiaro:


    [
    Codice PHP:
    [U]Private Sub Command1_Click()[/U]

    Dim report1 As CRAXDRT.report
    Dim report2 
    As CRAXDRT.report
    Dim crApp 
    As New CRAXDRT.Application
    Dim crApp1 
    As New CRAXDRT.Application



    Set report1 
    crApp.OpenReport("C:\Documents andSettings\User\Documenti\Progetti\DOGA2008\report1.rpt")

    Set report2 crApp1.OpenReport("C:\Documents and Settings\User\Documenti\Progetti\DOGA2008\report2.rpt")


    'Ho inserito il componente CRVIEWER di crystal report però vorrei che entrambi i 2 report si possano vedere in anteprima in questo componente

    CRViewer91.ReportSource = ?????  report1 e report2

    CRViewer91.ViewReport

    report1.printduplex????
    report2.printduplex????
    report1.printout  ???
    report2.printout   ???? 

    Scusate il codice ma non so proprio come fare spiegarlo

    insomma vorrei che report1 e report2 siano stampati in un unico foglio (fronte/retro)

    Grazie per l'attenzione
    ciao

  2. #2
    L'avatar di gibra
    gibra non è in linea Very Important Person

  3. #3
    cris77 non è in linea Scolaretto
    cosa intendi non è possibile?????


    Inoltre la stampante è abilitata per effettuare una stampa fronte/retro....

  4. #4
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da cris77 Visualizza il messaggio
    cosa intendi non è possibile?????
    Quello che ho scritto: non è possibile. Punto. Non esiste una spiegazione a questo, semplicemente perchè non dipende dal software, ma solo esclusivamente dalla stampante.

    Quote Originariamente inviato da cris77 Visualizza il messaggio
    Inoltre la stampante è abilitata per effettuare una stampa fronte/retro....
    Appunto, quindi chi stampa deve impostare nelle opzioni della stampante che vuole la stampa fronte-retro per quel documento.

    Da VB non puoi intervenire in alcun modo, perchè l'oggetto Printer è limitato e pieno di problemi, soprattutto al giorno d'oggi in cui i driver delle stampanti sono sempre più sofisticati.
    Se vuoi cimentarti in questa impresa, devi avere (o farti) una profonda conoscenza delle funzioni dell'API di stampa, non è uno scherzetto da niente dialogare con il driver della stampante, e onestamente il gioco non vale la candela, soprattutto perchè tutto questo è già previsto dalle opzioni della stampante.
    Farlo programmaticamente può essere un bagno di sangue, ma se vuoi accomodarti, puoi iniziare a farti un'idea di quello che ti aspetta da qui:

    How To Print Using Custom Page Sizes on Windows NT and Windows 2000

    How To Modify Printer Settings by Using SetPrinter

    How To Determine Available PaperBins with DeviceCapabilities API

    How To Use GetDeviceCaps to Determine Margins on a Page

    How To Send Raw Data to a Printer Using the Win32 API from Visual Basic

    How To Set Which Printer Is the System Default Printer


    Ciao
    ℹ️ Leggi di più su gibra ...

  5. #5
    cris77 non è in linea Scolaretto
    ok va bene ma io non voglio usare l'oggetto PRINTER ma:

    Dim crApp As New CRAXDRT.Application



    Set report = crApp.OpenReport("C:\Documents and Settings\User\Documenti\report.rpt")



    report.PrinterDuplex

    report.PrintOut

    [/HTML]

    Usando appunto report.printerduplex non c'è proprio possibilità di stampare in modalità fronte/retro???

    scusate l'insistenza sembra strano

  6. #6
    maurov non è in linea Novello
    Quote Originariamente inviato da cris77 Visualizza il messaggio
    ok va bene ma io non voglio usare l'oggetto PRINTER ma:


    Dim crApp As New CRAXDRT.Application



    Set report = crApp.OpenReport("C:\Documents and Settings\User\Documenti\report.rpt")



    report.PrinterDuplex

    report.PrintOut

    [/html]

    Usando appunto report.printerduplex non c'è proprio possibilità di stampare in modalità fronte/retro???

    scusate l'insistenza sembra strano

    Tu vuoi stampare due report alternando le pagine. Confermo che è "ragionevolmente" impossibile, ma volendo , e in modo assolutamente sconsigliabile e faticoso, si può provare.


    Abbiamo una stampa di DDT fatta per un cliente che prevede che nelle pagine dispari ci sia il DDT e nelle pagine pari un elenco di informazioni aggiuntive che non sono fisse ma dipendono dal contenuto del DDT stesso ,e giusto per complicare le cose possono essere in numero diverso: il ddt può avere 5 pagine , le spiegazioni 2.

    Premessa: Il report è definito internamente, non usiamo mai RPT esterni, non so se funzioni anche per i report esterni.


    In breve il report é strutturato così:


    Due righe di dettaglio (a e b) in ognuna un sottoreport : il ddt e la parte da stampare sul retro.
    Una tabella di un solo record serve come innesco ai due sottoreport.
    Ogni sottoreport è condizionato in uscita in funzione dal numero della pagina.

    Ai due report si passano dati attraverso due recordset generati manualmente (o un datatable se lo fai con NET) forse anche una normale "select" va bene, purché con un numero di record limitato tale per cui entrambi i report stiano "certamente" su una sola pagina.

    Quindi si inviamo alla stampante tanti report, di due pagine ciascuno, fino alla fine del documento.

    Visualizziamo anche l'anteprima dell'intero documento ddt , ma solo per farlo vedere all'utente.


    Ci sono una valanga di controindicazioni, solo per citarne alcune :

    Ti devi fare carico della numerazione delle pagine , dei totali e sub totali. Nel caso del nostro DDt tutti i dati di piede sono impostati manualmente dal programma.

    Se la stampante è di rete o comunque condivisa è possibile che qualcuno si infili fra un foglio e l'altro.

    La stampante deve essere già impostata in fronte retro.

    ...

    Nel caso specifico il cliente ha insistito a lungo e si è fatto carico del costo dei vari tentativi.


    Ciao

    maurov

  7. #7
    L'avatar di yronium
    yronium non è in linea Scribacchino
    Quote Originariamente inviato da maurov Visualizza il messaggio
    Tu vuoi stampare due report alternando le pagine. Confermo che è "ragionevolmente" impossibile, ma volendo , e in modo assolutamente sconsigliabile e faticoso, si può provare.
    No, non credo che il punto di cris77 sia questo, ma di stampare fronte-retro le pagine dispari-pari/qualsiasi sia il loro contenuto.
    E, confermo, non è possibile farlo da codice né da CR.


    Quote Originariamente inviato da maurov Visualizza il messaggio
    La stampante deve essere già impostata in fronte retro.
    Ecco, questo è il motivo.



    La possibilità di stampare fronte-retro dipende dal driver della stampante, non dal sistema operativo e men che meno da un programma esterno. Visual Basic consente di creare programmi, che possono chiedere al sistema operativo di mettere a loro disposizione le sue funzioni. E a volte il sistema operativo deve eseguire delle funzionalità che lui stesso non possiede, come la possibilità di far funzionare una periferica esterna: in questo caso il sistema operativo chiede all'utente di installare un programma dedicato (un driver) per poterla far funzionare e questo programma è prodotto e fornito dal produttore della periferica, e funziona solo per quella specifica periferica, di quel particolare produttore. Così, ad esempio, se uno getta via una vecchia stampante Epson e compra una nuova stampante Canon non potrà farla funzionare lasciando il driver Epson installato. Il driver Epson non sarà sufficiente, perché è stato progettato per far funzionare una periferica diversa. Perciò per quella specifica stampante l'utente dovrà installare il driver Canon appropriato, e magari disinstallare anche il vecchio driver per evitare conflitti.

    Ora, cris77 chiede di poter accedere al driver della stampante da codice VB, o magari anche dalle proprietà del report CR. Il fatto è che il suo programma dovrebbe chiedere il permesso a Windows di utilizzare qualcosa che Windows non ha, è installato soltanto sulla macchina di cris, non è detto nemmeno che sia installato perché non è un componente diretto di Windows e cris potrebbe aver cambiato stampante tra qualche tempo, e non è nemmeno detto che il suo produttore ne renda disponibili le funzioni per Windows o addirittura per un programma esterno della Cris77 Software.

    Sarebbe come se la Mercedes - la Peugeot, la BMW, la FIAT - chiedesse come si può installare nel portacenere un dispositivo che facesse accendere automaticamente un accendino Zippo, perché il progettista Mercedes ha uno Zippo e vorrebbe potersi accendere le sigarette senza togliere le mani dal volante: non è detto che il guidatore fumi, non è detto che usi lo Zippo, non è detto che la Zippo Ltd. sia disposta a concedere la licenza di utilizzo alla Mercedes, non è detto che il modello di Zippo sia compatibile, non è detto che il guidatore abbia le stesse dimensioni del progettista,...

    Cris, non si può. La stampante va impostata autonomamente, e né VB né Windows possono farlo. E se anche esistesse un linguaggio in grado di decompilare così a fondo il driver della tua stampante, che senso avrebbe? Funzionerebbe solo sulla tua stampante, sul tuo modello e marca, e appena l'utente o perfino tu stesso doveste cambiarla il tuo programma andrebbe riscritto daccapo.

    Avverti l'utente con un messaggio di impostare manualmente la stampa fronte-retro, se anche la SUA stampante glie lo consente, e manda in anteprima i report normalmente: se la stampante potrà, e se sarà stata configurata opportunamente, le pagine pari verranno stampate dietro a quelle dispari.

    Spero sia utile. Ciao.
    ℹ️ Leggi di più su yronium ...

  8. #8
    slomito non è in linea Novello
    Potrebbe essere un idea quella di inviare in stampa soltanto le pagine pari e quando l'utente preme un pulsante "continua" inviare quelle dispari.

    Forse è più sensato che scrivere un programma"driver" per la stampante

    Per capirci meglio prova ad aprire un file PDF con piu di una pagina con Adobe reader e clikka su stampa...
    Si apre una finestra dove puoi impostare l'output di stampa, Da qui hai la possibilità di scegliere l'intervallo di pagine da stampare e se stampare tutto in continuo oppure solo le pagine pari e poi quelle dispari

  9. #9
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da slomito Visualizza il messaggio
    Potrebbe essere un idea quella di inviare in stampa soltanto le pagine pari e quando l'utente preme un pulsante "continua" inviare quelle dispari.
    Ma scusa, tutto questo cosa ha a che vedere con la stampa fronte-retro?
    Soprattutto, cosa c'entra con la programmazione VB6?

    Il punto da cui non è possibile prescindere è che la stampante deve avere l'apposito modulo fronte-retro. Se non ce l'ha non puoi fare fronte-retro.
    E' un problema di stampante, non di programmazione.

    Che poi uno voglia arrampicarsi sugli specchi... padrone di farlo.

    Ciao
    ℹ️ Leggi di più su gibra ...

  10. #10
    slomito non è in linea Novello
    Quote Originariamente inviato da gibra Visualizza il messaggio
    Ma scusa, tutto questo cosa ha a che vedere con la stampa fronte-retro?
    Soprattutto, cosa c'entra con la programmazione VB6?
    Se stampi prima tulle le pagine dispari e poi prendi il pacco di fogli uscito dalla stampante lo giri e lo rimetti nel vassoio (a seconda delle stampanti) e ci stampi tutte le pagine pari, hai stampato fronte-retro.

    Per quanto riguarda la programmazione si dovrebbe gestire il fatto di mandare in stampa, prima una pagina si ed una no (facile) e poi stampare le altre in ordine a seconda del numero di pagine già stampate e se è il caso partire dall'ultima, che potrebbe essere bianca (piu complicato).

    Questo l'ho soltanto proposto perchè anche a me è successo di dover gestire la stampa fronte-retro per un cliente che l'ha richiesta. (da sottolineare che non tutte le stampanti supportano la stampa fronte-retro, sopratutto quelle piu vecchie) e questo mi sembra un modo per risolvere il problema senza impazzire con la programmazione o meglio la gestione di una stampante che (per i motivi sopracitati, che non ripeto) sarebbe difficoltosa

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. report non fa il fronte-retro
    Da muttley005 nel forum Microsoft Access
    Risposte: 11
    Ultimo Post: 16-11-2017, 09:57
  2. stampa parzialmente fronte-retro
    Da muttley005 nel forum Microsoft Access
    Risposte: 14
    Ultimo Post: 08-04-2016, 08:55
  3. Report fronte-retro
    Da zagor nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 18-02-2014, 08:43
  4. Stampa fronte - retro & VBA
    Da roccolamann nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 26-11-2010, 09:14
  5. stampa fronte retro
    Da biker nel forum Microsoft Word
    Risposte: 4
    Ultimo Post: 06-06-2009, 22:01