Stampa multipla report (docmd.printout)

di il
3 risposte

Stampa multipla report (docmd.printout)

Buongiorno a tutti,

sto riscontrando alcuni problem nel creare del codice che mi consenta da form di stampare automaticamente un numero di copie N (valore preso da una text box) di un report.
Ho provato varie modifiche ma nulla, gli errori/problemi cambiano ma in sostanza nessuna soluzione definitiva.
Il codice è il seguente:

Private Sub Print_Click()
Dim stDocName As String
stDocName = "Etichette"
	If [controllo se report è vuoto) then
		MsBox "Errore bla bla bla"
	Else
     		DoCmd.OpenReport stDocName, acViewPreview, , , acHidden
     		DoCmd.SelectObject acReport, stDocName
     		DoCmd.PrintOut , , , [Num_copies].Value
     		DoCmd.Close acReport, stDocName, acSaveNo
End if     
     Num_copies.Value = 1
End Sub
Nel momento in cui Num_copies.value = 1 tutto perfetto, se il numero cambia restituisce error 13. La cosa strana è che il mio precedente tentativo non presupponeva il .SelectObject,e nel caso non restituiva alcun errore! Il Select è stato aggiunto dato che la stampa restituiva sia il report che il form.

Quale ennesima banalità non ho considerato?

EDIT: il debugger mi segnala il .printout!

3 Risposte

  • Re: Stampa multipla report (docmd.printout)

    EDIT:

    dato che pensavo fosse la natura del dato pescato dalla casella Num_copies, ho modificato il codice sull'evento lostfocus della casella, da:
    
    If Num_copies.value = 0 then
        Num_copies.value = 1
    End If
    
    a
    
    If Num_copies.Value = 0 Or IsNumeric(Num_copies.Value) = False Then
         Num_copies.Value = 1
     End If
     
    Ora l'errore non lo restituisce più, ma:
    1 ) Stampa comunque una sola copia
    e soprattutto 2 ) Dei DLookUp presenti nel report, quelli deputati al ripescaggio degli oggetti OLE associate non funzionano

    Sto decisamente scivolando nella pazzia!
  • Re: Stampa multipla report (docmd.printout)

    tamaeril ha scritto:


    ...
    sto riscontrando alcuni problem nel creare del codice che mi consenta da form di stampare automaticamente un numero di copie N (valore preso da una text box) di un report.
    ...
    
    Private Sub Print_Click()
    Dim stDocName As String
    stDocName = "Etichette"
    	If [controllo se report è vuoto) then
    		MsBox "Errore bla bla bla"
    	Else
         		DoCmd.OpenReport stDocName, acViewPreview, , , acHidden
         		DoCmd.SelectObject acReport, stDocName
         		DoCmd.PrintOut , , , [Num_copies].Value
         		DoCmd.Close acReport, stDocName, acSaveNo
    End if     
         Num_copies.Value = 1
    End Sub
    
    Nel momento in cui Num_copies.value = 1 tutto perfetto, se il numero cambia restituisce error 13.
    ...
    Quale ennesima banalità non ho considerato?
    EDIT: il debugger mi segnala il .printout!
    L'errore 13 si verifica quando il tipo di informazione non è compatibile con quello che il codice si aspetta.
    In questa riga
    DoCmd.PrintOut , , , [Num_copies].Value
    [Num_copies].Value è il quarto parametro che per DoCmd.PrintOut è PrintQuality. Questo parametro può assumere valori da 0 a 3 (o relative costanti). Quindi, scritto così, stai solo incidendo sulla qualità di stampa, non sul numero delle copie da stampare. Il parametro Copies è il quinto, quindi devi aggiungere una virgola, oppure indicare i parametri con il nome e non per posizione
    DoCmd.PrintOut , , , , [Num_copies].Value
    oppure
    DoCmd.PrintOut Copies:=[Num_copies].Value
  • Re: Stampa multipla report (docmd.printout)

    Risolto!!!
    Oltretutto come aggiunto dopo, questo collocare in modo errato il parametro non permetteva per qualche oscura ragione al codice sul report di pescare gli oggetti OLE. E' bastata questa semplice modifica per sistemare tutto...è bastata una cavolo di virgola....ok, a questo giro con le banalità ho veramente esagerato....
Devi accedere o registrarti per scrivere nel forum
3 risposte