Salto pagina.

mercoledì 20 marzo 2013 - 00.18
Tag Elenco Tags  .NET 3.5  |  Windows 7  |  Windows XP  |  Visual Studio 2008  |  SQL Server 2008 R2  |  Crystal Reports XI

Peppino Profilo | Junior Member

Ciao a tutti.

Al codice seguente non riesco a fargli fare il salto pagina. Considerando che per le causale e gli articoli il numero di record può variare.
E' possibile un aiuto a risolvere il problema?. Grazie anticipatamente per l'eventuale risposta.
Ciao, Peppino.

Static causale As String
Static ix As Integer
Static i As Integer

For i = i To i + NumeroRighePerPagina ' numero riga per pagina impostato a 30.

If i < bds1.Count Then
causale = CStr(dst1.Tables("Causale").Rows(i).Item(0))
e.Graphics.DrawString(causale, Font3, Brushes.Green, X + 10, Y)

Y += 25 'incremento della variabile per stampare la riga successiva.

cmd = New SqlCommand()
cmd.Connection = SqlHelper.ConnessioneDatabase
cmd.CommandText = "SELECT Cliente, Causale, Articolo, Um, SUM(Quantità) AS QuantitàP, SUM(Importo) AS ImportoP FROM UsciteDettaglio WHERE Cliente=@cliente and Causale=@causale GROUP By Cliente, Causale, Articolo, Um Order By Articolo"
cmd.Parameters.Add(New SqlParameter("@cliente", SqlDbType.VarChar))
cmd.Parameters("@cliente").Value = cliente
cmd.Parameters.Add(New SqlParameter("@causale", SqlDbType.VarChar))
cmd.Parameters("@causale").Value = causale
adp = New SqlDataAdapter(cmd)
dst = New DataSet
adp.Fill(dst, "Articolo")
adp.Fill(dst, "Um")
adp.Fill(dst, "Quantità")
adp.Fill(dst, "Importo")

bds = New BindingSource()
bds.DataSource = dst

bds.DataMember = "Articolo"
bds.DataMember = "Um"
bds.DataMember = "Quantità"
bds.DataMember = "Importo"

adp.Dispose()
cmd.Dispose()
cmd.Connection.Close()

ix = 0
importo1 = 0
importoUm1 = 0

For ix = ix To ix + NumeroRighePerPagina

If ix < bds.Count Then
articolo = CStr(dst.Tables("Articolo").Rows(ix).Item(2))
um = CStr(dst.Tables("Um").Rows(ix).Item(3))
quantità = CDec(dst.Tables("Quantità").Rows(ix).Item(4))
importo = CDec(dst.Tables("Importo").Rows(ix).Item(5))

prezzo = importo / quantità
importoUm = importo / CDec(TxtQuantità.Text)
importo1 += importo
importoUm1 += importoUm
importo2 += importo
importoUm2 += importoUm

e.Graphics.DrawString(articolo, Font6, Brushes.Black, X + 25, Y)
e.Graphics.DrawString(um, Font6, Brushes.Black, X + 290, Y)
e.Graphics.DrawString(Formatta(CStr(quantità), TipoFor.Migliaia_con_decimali), Font6, Brushes.Black, X + 340, Y)
e.Graphics.DrawString(Formatta(CStr(prezzo), TipoFor.Valuta), Font6, Brushes.Black, X + 400, Y)
e.Graphics.DrawString(Formatta(CStr(importo), TipoFor.Valuta), Font6, Brushes.Black, X + 520, Y)
e.Graphics.DrawString(Formatta(CStr(importoUm), TipoFor.Valuta), Font6, Brushes.Black, X + 660, Y)

Y += 25 'incremento della variabile per stampare la riga successiva.

e.HasMorePages = True 'Permetto di stampare la pagina successiva
Else
e.HasMorePages = False
End If
Next

e.Graphics.DrawString(Formatta(CStr(importo1), TipoFor.Valuta), Font3, Brushes.Red, X + 515, Y)
e.Graphics.DrawString(Formatta(CStr(importoUm1), TipoFor.Valuta), Font3, Brushes.Red, X + 655, Y)

Y += 25

End If
Next

e.Graphics.DrawString(Formatta(CStr(importo2), TipoFor.Valuta), Font3, Brushes.Blue, X + 515, Y)
e.Graphics.DrawString(Formatta(CStr(importoUm2), TipoFor.Valuta), Font3, Brushes.Blue, X + 655, Y)

Pagina += 1 'incremento numero della pagina.

freeteo Profilo | Guru

Ciao Peppino,
e pensare di usare un motore di reportistica?

Secondo me ti viene più semplice visto che fai una query e poi vai ad impaginare dei dati...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Peppino Profilo | Junior Member

Ciao a tutti, ciao Matteo
Grazie per la risposta, non ci speravo più, ma come si dice 'meglio tardi che mai'.
Il problema purtroppo è quello di essere ancora un principiante, anche se pratico la programmazione da qualche anno, ma lo faccio saltuariamente(non è il mio lavoro primario) e quindi quando riprendo non dico che ricomincio da zero ma quasi, ecco perché sono a chiedere aiuto su argomenti che magari a Vs. avviso sono elementari. Comunque non voglio prolungarmi, il fatto è che una volta ho provato con altri sistemi ma senza successo. Con PrintDocument mi era sembrato che la cosa fosse più semplice almeno fino a che ho incontrato questa difficoltà in cui sto a chiedere aiuto. Quindi chiedo se al momento è possibile avere l'aiuto per risolvere il problema con questo tipo di stampa. Diversamente ahimè non so.
Comunque ringrazio anticipatamente per l'eventuale risposta.
Ciao, Peppino.

Scusate se posso sembrare rompiscatole, almeno su questo post, purtroppo ho bisogno di realizzare questo tipo di stampa. Se non è possibile un aiuto(che gradirei), almeno avere un'indicazione su dove(oltre a quello di andare a rompere da un'altra parte) e come potermi dedicare e cercare di tentare a risolvere il problema, perché le ricerche che ho già fatte( e ne ho fatte) non hanno dato il risultato tanto sperato.
Spero che qualcuno abbia un po di tempo da dedicare a questo mio problema.
Grazie ancora una volta e chiedo scusa ancora una volta.
Ciao, Peppino.
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5