Ho provato con il metodo Lines ma mi crea un bordo generico a tutto il
foglio.
Allora mi sono creato il JPG della carta prestampata e sono andato an
inserirlo nel report via codice(all'evento apertura report) con la
seguente istruzione:
Me.Report.Picture = "C:\Documents and Settings\dino\Desktop\Lavori in
corso\Buongiorno\programma\tools\Fattura_verticale2.jpg"
Il problema e' che per settare il tutto si va fuori di testa,
Volevo da voi alcuni consigli piu' mirati,sperando che l'unica
soluzione non sia Crystal report.
Grazie in anticipo
Dino
Crystal report o meno la posizione e le dimensioni dei controlli devi
farteli sempre a manina.
Puoi anche usare il merge di word ma anche in questo caso dovrai prepararti
il modello in word e, a mio avviso, il lavoro è ancora più lungo e
complesso.
Proprio oggi ho appena terminato il report di una fattura che andrà stampato
su carta intestata e già fincata.
La fattura non ha molti controlli, al massimo una ventina. Ci sono poi i
dettagli fattura che al massimo avranno una decina di controlli. Questi
ultimi li sistemo in un sottoreport che inserisco nel corpo del report
principale.
Se può esserti d'aiuto inserisci pure una immagine della fattura come sfondo
del report ma, una volta sistemati i controlli, aiutandoti con l'immagine,
devi toglierla. Nel report rimangono solo i controlli che ovviamente saranno
collegati a una query o tabella.
In genere io faccio così: grosso modo sistemo i controlli utilizzando
l'intestazione di pagina per la testata della fattura. Nel corpo metto un
sottoreport con i dettagli e, infine, nel piè di pagina pagina inserisco i
totali, le note, i valori per il trasporto ecc. A questo punto faccio una
stampa di prova su foglio bianco e, per trasparenza, gli sovrappongo il
modello vuoto della fattura...mi accorgo subito degli scostamenti e provvedo
alla corrazione.
Seguendo questa tecnica e per fatture particolarmente difficili dovresti
impiegare non più di due ore.
Ciao, Carlo
> "Dino" <verreng...@alice.it> ha scritto nel messaggio
> news:3e738ddc-6e5a-4876...@v39g2000yqm.googlegroups.com...
> > Ciao a tutti sono Dino.Avrei necessita' di stampare diversi report
> > ogniuno dei quali deve avere una sua carta prestampata.
> > Ho provato con in due modi ma non ho avuto un buon risultato.
> >
> > Ho provato con il metodo Lines ma mi crea un bordo generico a tutto il
> > foglio.
> >
> > Allora mi sono creato il JPG della carta prestampata e sono andato an
> > inserirlo nel report via codice(all'evento apertura report) con la
> > seguente istruzione:
> >
> > Me.Report.Picture = "C:Documents and SettingsdinoDesktopLavori in
> > corsoBuongiornoprogrammatoolsFattura_verticale2.jpg"
> Ciao, Carlo
Secondo me questo approccio è valido solo se la stampa avviene in una
stampante ad aghi per stampa su carta ricalcante.
Ormai con le laser a colori su foglio A4 tutto questo procedimento mi
sembra superato.
Ai tempi (quando non c'erano le laser) mi ero costruito una scatola con un
vetro ed una lampadina all'interno per vedere in trasparenza e calcolare
meglio la disposizione dei controlli!!! :-))
Ciao
--
sv
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ab...@newsland.it
Sì, ammesso che abbia una laser a colori e di grande qualità, potrebbe anche
stampare direttamente l'immagine usata come sfondo. Rimane comunque il
problema di posizionare correttamente i controlli (questo è il suo
problema).
Da non sottovalutare il fatto che i moduli prestampati possono essere varie
migliaia a seconda dell'ordinativo alla tipografia. Anche in questo caso
dovrà solo posizionare i controlli al posto giusto.
Per tutto il resto c'è master-card...
Ciao, Carlo
> Ciao, Carlo
Non intendevo questo. E' chiaro che se usi un'immagine come sfondo si
debbano per forza di cose adattarne i controlli. Io invece, penso ad un
intero report in struttura con un suo logo, righe linee e colori che
diventeranno in quel caso fattura su carta intestata. In pratica inserisci
nella stampante il foglio bianco.
Ciao, Salvino
Puoi preparare il Report, centrando i controlli con l'ausilio della tua
stampante (non hai specificato se si tratti di moduli prestampati per
Printer ad aghi).
In seguito integrando nel tuo applicativo questo strumento:
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=198
Potrai aggiustare le posizioni dei controlli per altri modelli di stampanti.
Sě, si č chiaro...solo che il titolo del post č molto preciso: "Stampare
documento su carta prestampata".
Non siamo mica masochisti!
Ciao, Carlo
Ciao E grazie a tutti per la risposta.(rispondo a Carlo ma e come se
rispondessi a tutti).
Allora mi e' parso di capire che comunque bisogna andare alla vecchia
e centrare i controlli dopo alcune prove.
Il cliente mi ha dato due possibilita':
1) Stampare su carta prestampata
2)Oppure inserire nella stampante il foglio bianco ed effettuare una
stampa completa.Premetto che il cliente ha sia stampanti laser che a
getto.
Secondo voi quale soluzione mi consigliereste???E poi una vostra
conferma il metodo line semplicemente disegna solo il bordo esterno
del report e basta.Vero??
Grazie ancora e buon lavoro con il nostro Access.
Dino
Secondo voi quale soluzione mi consigliereste???E poi una vostra
conferma il metodo line semplicemente disegna solo il bordo esterno
del report e basta.Vero??
Grazie ancora e buon lavoro con il nostro Access.
Dino
----------------------------------
Se te la cavi con i metodi Line, sicuramente la seconda...massimo grado di
personalizzazione, possibilità di inserire loghi e quantaltro.
La via di mezzo è quella di inserire l'immagine scannerizzata del
prestampato del cliente e posizionarvi i dovuti controlli.
La prima soluzione (stampare su prestampato) è, imho, quella che ti richiede
meno lavoro (tutta la grafica è già pronta) ma ti richiede qualche stampa di
prova prima di dare il lavoro finito.
Ciao, Carlo
Grazie Carlo per la risposta.Se dovessi scegliere la seconda ho solo
un problema.Ma il metodo Line ti permette di personalizzare le
fincature o no?A
dir la verita' ho provato con l'esempio del nostro sito ma mi disegna
il bordo di tutto il report.Se io ad esempio volessi creare una
fincatura solo su due controlli
lo posso fare?Come??
Grazie ancora
Dino
Grazie Carlo per la risposta.Se dovessi scegliere la seconda ho solo
un problema.Ma il metodo Line ti permette di personalizzare le
fincature o no?A
dir la verita' ho provato con l'esempio del nostro sito ma mi disegna
il bordo di tutto il report.Se io ad esempio volessi creare una
fincatura solo su due controlli
lo posso fare?Come??
Grazie ancora
Dino
-----------------
Questo spezzone di codice lo puoi mettere in qualsiasi sezione, qui è su
Print della sezione corpo:
Private Sub Corpo_Print(Cancel As Integer, PrintCount As Integer)
Me.ScaleMode = 1
Me.ForeColor = 0
Me.Line (0 * 1440, 0)-(0 * 1440, 14400)
Me.Line (1 * 1440, 0)-(1 * 1440, 14400)
Me.Line (1.9 * 1440, 0)-(1.9 * 1440, 14400)
Me.Line (5.5 * 1440, 0)-(5.5 * 1440, 14400)
'14400 è un numero arbitrario per aumentare
'la lunghezza della linea fino al massimo della sezione
End Sub
Prova a cambiare i valori e così potrai posizionare la linea dove meglio
credi.
Nell'esempio vi sono quattro linee.
Ciao, Carlo
Grazie Carlo per la risposta.Ho notato pero' che variando i valori
riesco a variare solo la posizione orizzontale delle linee.Se volessi
accorciare la linea in verticale come potrei fare.Ho provato ha
variare il num 1440 ma se lo vario da una parte sola dell'espressione
la linea varia l'inclinazione,se invece lo vario in tutta
l'espressione mi si sposta a sinistra o a destra.Ad esempio le linee
mi interessano solo nel corpo del report e non in intestazione e pie'
pagina.Attualmente invece ho la linea in tutto il report.Il codice che
mi hai scritto l'ho inserito nell'evento pagina,forse e' lì
l'errore???
Mi sa' pero' che questo e' il metodo piu' lungo.Cosa ne dici???.
Grazie ancora Dino
scusa mi e' venuta un'altra domanda.E' possibile disegnare con il
metodo line anche linee verticali???
Grazie ancora
Dino
Certamente. L'esempio postato fa proprio questo.
Questo un secondo esempio su page (disegna su tutto il report):
Private Sub Report_Page()
Me.ScaleMode = 1
Me.ForeColor = 0
'disegna una linea all'estremo sx
Me.Line (0 * 1440, 0)-(0 * 1440, 14400)
Me.Line (1 * 1440, 0)-(1 * 1440, 14400)
Me.Line (1.9 * 1440, 0)-(1.9 * 1440, 14400)
Me.Line (1.5 * 1440, 0)-(1.5 * 1440, 14400)
End Sub
Lo stesso codice ma su print del corpo (disegna le linee solo sul corpo):
Private Sub Corpo_Print(Cancel As Integer, PrintCount As Integer)
Me.ScaleMode = 1
Me.ForeColor = 0
Me.Line (0 * 1440, 0)-(0 * 1440, 14400)
Me.Line (1 * 1440, 0)-(1 * 1440, 14400)
Me.Line (1.9 * 1440, 0)-(1.9 * 1440, 14400)
Me.Line (1.5 * 1440, 0)-(1.5 * 1440, 14400)
End Sub
Altro esempio con spiegazione per disegnare una linea orizzontale:
'Imposto la scala in millimetri
Me.ScaleMode = 6 'millimetri
'disegno una linea che parte da 0 (a sx) e si prolunga per 100 mm a dx
'e la posiziono a 10 millimetri a partire dall'alto sia a sx che a dx.
Me.Line (0, 10)-(100, 10)
Leggiti la guida sul "Metodo Line".
Qui ti riporto uno spezzone:
Il metodo Line consente di disegnare linee e rettangoli per un oggetto
Report quando si verifica l'evento Stampa.
espressione.Line(flag, x1, y1, x2, y2, colore)
espressione Obbligatorio. Espressione che restituisce uno degli oggetti
indicati nell'elenco Si applica a.
flag Elemento Integer obbligatorio.
x1 Elemento Single obbligatorio. Valore che indica la coordinata del punto
iniziale della linea o del rettangolo. Le proprietà relative alle
proporzioni (ScaleMode, ScaleLeft, ScaleTop, ScaleHeight e ScaleWidth)
dell'oggetto Report specificato nell'argomento oggetto determinano l'unità
di misura utilizzata. Se si omette tale argomento, la linea inizia dalla
posizione indicata dalla proprietà CurrentX.
y1 Elemento Single obbligatorio. Valore che indica la coordinata del punto
iniziale della linea o del rettangolo. Le proprietà relative alle
proporzioni (ScaleMode, ScaleLeft, ScaleTop, ScaleHeight e ScaleWidth)
dell'oggetto Report specificato nell'argomento oggetto determinano l'unità
di misura utilizzata. Se si omette tale argomento, la linea inizia dalla
posizione indicata dalla proprietà CurrentY.
x2 Elemento Single obbligatorio. Valore che indica la coordinata del punto
finale per la linea da disegnare. Questo argomento è obbligatorio.
y2 Elemento Single obbligatorio. Valore che indica la coordinata del punto
finale per la linea da disegnare. Questo argomento è obbligatorio.
colore Elemento Long obbligatorio. Valore che indica il colore RGB (rosso,
verde, blu) utilizzato per disegnare la linea. Se si omette questo
argomento, viene utilizzato il valore della proprietà ForeColor. È inoltre
possibile utilizzare la funzione RGB o QBColor per specificare il colore.
Ciao, Carlo
Grazie Carlo preciso e mirato come il solito.Provo e poi ti faccio
sapere.
Grazie ancora Dino