Stampa Etichette

lunedì 10 marzo 2008 - 09.33

nandonando Profilo | Senior Member

Volevo sapere se è possibile usare cristal report per stampare delle etichette:
mi spiego meglio devo stampare un numero predeterminato di etichette con gli stessi campi che si ripetono: e la pagine deve essere suddivise in colonne riche esempio:3righe*5colonne
e devo decidere io a monte quante stamprne esempio 12 è possibile?
va bene anche senza numero predeterminato esempio tutte e 15 è possibile?
grazie e se non sono stato chiaro ditemelo.
http://www.gustoroma.it

freeteo Profilo | Guru

ciao,
la funzionalita' è presente in Crystal, si tratta di un'opzione abilitabile delal sezione dettagli.
Il concetto è preparare la sezione dettagli come vuoi (quindi stretta come l'etichetta che vuoi), e poi andare sulle proprieta' ad attivare la multicolonna con : tastoDX sopra alla sezione dettagli->format->format with multiple columns.
Abilitando questo flag, si attiva un'ulteriore tab che ti permette di definire la larghezza e il modo di ripetizione verticale/orizzontale...

Oppure se parti da un report nuovo:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=19347

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

nandonando Profilo | Senior Member

Grazie ma a me servirebbe la ripetizione di uno stesso record per n volte esempio:
ditta "NNN" stampamela n volte .
dove "NNN" e n li passo con delle variabili è possibile?
grazie e scusate
http://www.gustoroma.it

freeteo Profilo | Guru

ciao,
questo purtroppo non è possibile farlo tramite report, devi farlo a livello codice, dove riempi una DataTable con le righe ripetute n volte, e poi questa DataTable la passi al report con il metodo "SetDataSource"...
Il discorso di ripetere orizzontale oltre che verticale sul report, quello rimane ovviamente valido anche se stampi copie di record...

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

nandonando Profilo | Senior Member

Non ho mai usato il datatable ma uso un cristal report view e lo ho sempre caricato cosi:
ti faccio un esmpio non sò se molto chiaro:
Dim credentials As TableLogOnInfo = New TableLogOnInfo
credentials.ConnectionInfo.DatabaseName = "mio"
credentials.ConnectionInfo.UserID = "sa"
credentials.ConnectionInfo.Password = "ggg"
credentials.ConnectionInfo.ServerName = "192.168.1.2"
CrystalReportViewer1.LogOnInfo.Add(credentials)

Dim myRep As New ReportDocument
Dim RepPath As String


''''''''
ViewState("TIPO") = Request.QueryString("TIPO")
ViewState("AZIONE") = Request.QueryString("AZIONE")
ViewState("id_fattura") = Request.QueryString("ID_FATTURA")
'''''''''''''''

Dim strsql As String = "SELECT * FROM VW_STAMPA_FATTURA WHERE ID_fattura=" & ViewState("id_fattura")
Dim sqlCommand1 As New SqlCommand(strsql, cn)

If cn.State = ConnectionState.Open Then
cn.Close()
End If

Try

cn.Open()
Dim rdrRATA As SqlDataReader = sqlCommand1.ExecuteReader(CommandBehavior.KeyInfo)
' popolo l'oggetto
rdrRATA.Read()

If rdrRATA.Item("id_cliente").ToString = 0 Then
If ViewState("AZIONE") = "AVVISI" Then
RepPath = Server.MapPath("AVVISO_senza_corrispondenza.rpt")
ElseIf ViewState("AZIONE") = "EMESSE" Or ViewState("AZIONE") = "SALDATE" Then
RepPath = Server.MapPath("FATTURA_senza_corrispondenza.rpt")
End If
Else

If rdrRATA.Item("Corrispondenza").ToString = "" Then
If ViewState("AZIONE") = "AVVISI" Then
RepPath = Server.MapPath("AVVISO_senza_corrispondenza.rpt")
ElseIf ViewState("AZIONE") = "EMESSE" Or ViewState("AZIONE") = "SALDATE" Then
RepPath = Server.MapPath("FATTURA_senza_corrispondenza.rpt")
End If
ElseIf rdrRATA.Item("Corrispondenza").ToString = False Then
If ViewState("AZIONE") = "AVVISI" Then
RepPath = Server.MapPath("AVVISO_senza_corrispondenza.rpt")
ElseIf ViewState("AZIONE") = "EMESSE" Then
RepPath = Server.MapPath("FATTURA_senza_corrispondenza.rpt")
End If
Else
If ViewState("AZIONE") = "AVVISI" Then
RepPath = Server.MapPath("Avviso_con_corrispondenza.rpt")
ElseIf ViewState("AZIONE") = "EMESSE" Then
RepPath = Server.MapPath("FATTURA_CON_corrispondenza.rpt")
End If
End If
End If
cn.Close()


myRep.Load(RepPath)
myRep.RecordSelectionFormula = "{VW_STAMPA_FATTURA.id_fattura}=" & ViewState("id_fattura")
'''
If ViewState("AZIONE") <> "AVVISI" Then

Dim MiaText As CrystalDecisions.CrystalReports.Engine.TextObject
MiaText = myRep.ReportDefinition.ReportObjects("TXTTIPO")
MiaText.Text = ViewState("TIPO").ToString()
End If
''''

CrystalReportViewer1.ReportSource = myRep
Catch ex As Exception
cn.Close()
End Try
'''''''

io però come imposto la ripetizione sempre dello stesso record?
grazie e scusa la poca chiarezza
http://www.gustoroma.it

freeteo Profilo | Guru

ciao,
io intendevo un codice di questo tipo:
ReportDocument report = new ReportDocument(); report.Load(@"...\...\mioreport.rpt"); //--- carico una tabella da codice, tu la caricherai dal DB DataTable table = new DataTable(); table.Columns.Add("Codice", typeof(int)); table.Columns.Add("Descrizione", typeof(string)); table.Columns.Add("Data", typeof(DateTime)); //--- riga singola table.Rows.Add(new object[] { 1,"Matteo", DateTime.Now }); //--- ripeto quella singola riga 10 volte for (int i = 0; i < 10; i++) table.Rows.Add(table.Rows[0].ItemArray); report.SetDataSource(table); crystalReportViewer1.ReportSource = report;

ovviamente questo è un esempio fatto tutto a codice, tu la Tabella la riempirai da Db, etc...la cosa che ti volevo far notare è la "clonazione"...

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

nandonando Profilo | Senior Member

Ok diciamo che va benissimo cosi soltanto 2 cose la connessione al db come si fa con sql server
comprensiva di user name, nome server e password?
e poi il cristalreport lo devo impostare un minimo graficamente giusto come faccio vistoche lo carcio da codice?
mi va benissimo anche un esmpio pretico da riutilizzare.
grazue e scusami ancora
http://www.gustoroma.it

freeteo Profilo | Guru

>Ok diciamo che va benissimo cosi soltanto 2 cose la connessione
>al db come si fa con sql server
>comprensiva di user name, nome server e password?
ti posto un metodo standard di accesso al db:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

>e poi il cristalreport lo devo impostare un minimo graficamente
>giusto come faccio vistoche lo carcio da codice?
devi aprirlo dentro a visual studio, il quale da un editor apposito, quindi usa un db temporaneo, crea il report, disegnalo come vuoi e poi gli passi questa datatable come ti ho mostrato prima ( metodo SetDataSource)


>mi va benissimo anche un esmpio pretico da riutilizzare.
>grazue e scusami ancora
scusami? ma non devi scusarti, siamo qui per questo!

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

nandonando Profilo | Senior Member

Guarda ho usato quetso metodo:
Dim RepPath As String
Dim X As Integer
For X = 0 To 5

RepPath = Server.MapPath("Report1.rpt")
myRep.Load(RepPath)

Dim MiaText As CrystalDecisions.CrystalReports.Engine.TextObject
MiaText = myRep.ReportDefinition.ReportObjects("TXTNOME")
MiaText.Text = "NOME"

Dim MiaText2 As CrystalDecisions.CrystalReports.Engine.TextObject
MiaText2 = myRep.ReportDefinition.ReportObjects("TXTINDIRIZZO")
MiaText2.Text = "INDIRI"

Dim MiaText3 As CrystalDecisions.CrystalReports.Engine.TextObject
MiaText3 = myRep.ReportDefinition.ReportObjects("TXTCAP")
MiaText3.Text = "miocap"

Dim MiaText4 As CrystalDecisions.CrystalReports.Engine.TextObject
MiaText4 = myRep.ReportDefinition.ReportObjects("TXTPROV")
MiaText4.Text = "mia prov"
Next

CrystalReportViewer1.ReportSource = myRep

funziona ma nel report viene ripetuto solo una volta come mai?

http://www.gustoroma.it

freeteo Profilo | Guru

ciao,
ascolta ti allego un programma di esempio e vedi come viene fatto, quello che stai facendo non ha molto senso
Tu devi duplicare i dati, (come dicevo in qualche post precedente) come i "record della datatable" e non girare sui componenti del report (textbox), devi passargli una sorgente, lui sa che deve ripetere quei dati n volte per i vari record che gli passi.

Cmq guarda l'esempio che ti ho allegato e adattalo alla tua situazione...

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

nandonando Profilo | Senior Member

Un crystal report da dabase riesco a riempirlo.
A me ora serve caricare quei dati per esempio he ti ho fatto vedere nel codice per n volte.
In pratica non mi occorre credo una connessione dato che i dati gia li ho in partenza e riesco anche a passarli.
Sono delle etichette che a piacere devo stampare per un uncio dato n volte
esmpio:
voglio 100 etichette per:
Ciccio
via Roma
00100 rm

e lo vorrei ripetere appunto 100 volte in orizonatale e veritcale su un report per stampare delle semplici etichette forse non occorre il Crystal report?
http://www.gustoroma.it

freeteo Profilo | Guru

>Un crystal report da dabase riesco a riempirlo.
ok


>A me ora serve caricare quei dati per esempio he ti ho fatto
>vedere nel codice per n volte.
ti ho scritto il codice in un post precedente, la cosa da fare è quella ciclare ed aggiungere i data ad una datatable che abbia le varie colonne che ti servono (e devono essere le stesse con cui hai creato il report)


>In pratica non mi occorre credo una connessione dato che i dati
>gia li ho in partenza e riesco anche a passarli.
ok ripeto guarda quel codice, fai un ciclo e duplichi tu le righe nella datatable


>e lo vorrei ripetere appunto 100 volte in orizonatale e veritcale
>su un report per stampare delle semplici etichette forse non
>occorre il Crystal report?
è lo stesso, se vuoi puoi fare anche a mano, ma la cosa ti diventa piu' difficile facendo tutto da codice, resta con Crystal, la cosa è veraemente banale


ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

nandonando Profilo | Senior Member

Ok allora adesso il mio problema è come creare nel report dei campi sensa inserirli da database, quindi come si fa ad inserire un campo non da database?
grazie
http://www.gustoroma.it

freeteo Profilo | Guru

ciao,
quando fai un report puoi dargli un database di prova, o un file xml come sorgente, o un dataset del tuo progetto cmq una sorgente dati devi dargliela, non importa se esiste per quei 10min che stai facendo il report e poi la cancelli
Questo per dire che spesso conviene farti un file mdb temporaneo, costruire il report, e poi dimenticartelo, tanto i dati glieli passi da codice come nel tuo caso, e quindi il db ti serve solo per dare al report la "struttura" dei dati che gli arriveranno, per poterlo disegnare...


ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

nandonando Profilo | Senior Member

Ok ora ci sono riuscito a passargli almeno un dato grazie mille
se ho problemi credo mi farò risentire.
Devo mettere che accetto la proposta?
http://www.gustoroma.it

freeteo Profilo | Guru

>Ok ora ci sono riuscito a passargli almeno un dato grazie mille
>se ho problemi credo mi farò risentire.
ok senza problemi, siamo sempre qui

>Devo mettere che accetto la proposta?
se ti è stata utile accettala cosi' marchiamo il thread come risolto.

Grazie

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5