Label.text da sql

domenica 10 febbraio 2008 - 20.27

cispolo.ppl Profilo | Senior Member

Salve a tutti, ho un programma in vb con un database sql che viene caricato e modificato attraverso una datagridview. I miei quesiti sono:
1- devo visualizzare in un altro form una label visualizzante con un timer tutti i record (una sola colonna). Sono riuscito a visualizzare il primo record, ma come faccio a visualizzare gli altri record dopo il primo ogni 5 secondi?
2- come posso stampare la tabella del datagridview, poichè non riesco con il printdocument.
Grazie x le risposte
Massimo

hidden Profilo | Newbie

>2- come posso stampare la tabella del datagridview, poichè non
>riesco con il printdocument.
>Grazie x le risposte
>Massimo


Con questo sitema puoi stampare ogni tipo di datagridview

N.B. KDResoconto è il nome della mia DatagridView

N.B. KDResoconto è il nome della tua datagridView

Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Try
Static RigheStampate As Integer
Static PagineStampate As Integer
Static MiePagine As Integer

Dim RigheTotali As Integer = KDResoconto.Rows.Count
Dim ControllaPagine As Boolean = True

Dim Rect As Rectangle
Dim RectQuality As Rectangle
Dim ColCorrente As Integer = 0

Dim Top As Integer = 25 ' e.MarginBounds.Top
Dim Left As Integer = 25 ' e.MarginBounds.Left
Dim Height As Integer = KDResoconto.RowTemplate.Height

Dim MaxRighe As Integer = e.MarginBounds.Height / Height
Dim MaxPagine As Integer = KDResoconto.Rows.Count / MaxRighe
Dim MPX As Integer = (KDResoconto.Rows.Count \ MaxRighe) + 1

Dim BrHeader As SolidBrush = New SolidBrush(Color.Gray)
Dim Hfont As Font = KDResoconto.Font
Dim Fc As String
Dim Fr As String

For Each col As DataGridViewColumn In KDResoconto.Columns
Fc = ""
Dim ColText As String = col.HeaderText
Dim Sz As System.Drawing.SizeF = e.Graphics.MeasureString(ColText, Hfont)
While Sz.Width > col.Width
ColText = ColText.Remove(ColText.Length - 1, 1)
Sz = e.Graphics.MeasureString(ColText + "...", Hfont)
Fc = "..."
End While
Rect = New Rectangle(Left, Top, col.Width, Height)
e.Graphics.FillRectangle(BrHeader, Rect)
e.Graphics.DrawString(ColText + Fc, Hfont, Brushes.Black, Left, Top + (e.Graphics.MeasureString(ColText, Hfont).Height / 2))
Left += col.Width
If Left > e.PageBounds.Right - 25 Then
MsgBox("Attenzione i campi da stampare sono troppi e la stampa non sarà effettuata correttamente" + Chr(13) + Chr(13) + "Possibili Soluzioni:" + Chr(13) + " .Impostare la stampa in modo Orizzontale" + Chr(13) + " .Selezionare un foglio di dimensioni maggiori" + Chr(13) + " .Ridurre il numero di campi da stampare", MsgBoxStyle.Information)
Exit For
End If
Next

Dim BrRow As SolidBrush = New SolidBrush(Color.Transparent)
Dim PnRow As Pen = New Pen(Color.Black)
Dim RigaCorrente As Integer = 0

For RigaCorrente = RigheStampate To RigheStampate + MaxRighe
Left = 25 ' e.MarginBounds.Left
Top += Height
For Each col As DataGridViewColumn In KDResoconto.Columns
Fr = ""
Dim CelText As String = KDResoconto.Rows(RigaCorrente).Cells(col.Name).Value.ToString
Dim Sz As System.Drawing.SizeF = e.Graphics.MeasureString(CelText, Hfont)
While Sz.Width > col.Width
CelText = CelText.Remove(CelText.Length - 1, 1)
Sz = e.Graphics.MeasureString(CelText + "...", Hfont)
Fr = "..."
End While
Rect = New Rectangle(Left, Top, col.Width, Height)
e.Graphics.FillRectangle(BrRow, Rect)
e.Graphics.DrawRectangle(PnRow, Rect)
e.Graphics.DrawString(CelText + Fr, Hfont, Brushes.Black, Left, Top + (e.Graphics.MeasureString(CelText, Hfont).Height / 2))
Left += col.Width
Next
RigheStampate += 1

MiePagine = PagineStampate + 1
If RigheStampate >= KDResoconto.Rows.Count Then
ControllaPagine = False
e.HasMorePages = False
RigheStampate = 0
PagineStampate = 0
Exit For
End If
Next RigaCorrente

If ControllaPagine Then
PagineStampate += 1

If PagineStampate < MaxPagine Then
e.HasMorePages = True
Else
e.HasMorePages = False
RigheStampate = 0
PagineStampate = 0
End If
End If

BrHeader.Dispose()
BrRow.Dispose()
PnRow.Dispose()

Catch ex As Exception
MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub

In più aggiungi un pulsante e gestisci così l'evento click


Private Sub Stampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Stampa.Click
If (KOrizzontale.Checked) Then 'CheckBox per selezionare la stampa orizzontale
PrintDocument1.DefaultPageSettings.Landscape = True
PageSetupDialog1.PageSettings.Margins.Bottom = 360
PageSetupDialog1.PageSettings.Margins.Left = 0
PageSetupDialog1.PageSettings.Margins.Right = 0
PageSetupDialog1.PageSettings.Margins.Top = 0
Else
PageSetupDialog1.PageSettings.Landscape = False
PageSetupDialog1.PageSettings.Margins.Bottom = 360
PageSetupDialog1.PageSettings.Margins.Left = 0
PageSetupDialog1.PageSettings.Margins.Right = 0
PageSetupDialog1.PageSettings.Margins.Top = 0
End If
PageSetupDialog1.ShowDialog()
PrintPreviewDialog1.WindowState = FormWindowState.Maximized
PrintPreviewDialog1.PrintPreviewControl.Zoom = 1
PrintPreviewDialog1.ShowDialog(Me)
End Sub

Se hai bisogno di altro basta chiedere.

Alexia Profilo | Newbie

Ciao Scusami..... saresti cosi Gentile di spiegarmi una cosa??

Sto facendo un lavoretto in vb 2008 express non è cosi semplice per me xche sono mollllllllto negata....

dovrei stampare un datagridview e alcuni record sono di colorate "di azzurro " quando lo mando in stampa xò non mi vede le celle colorate... (((

il progetto l'ho preso da qui... http://www.codeproject.com/KB/grid/PrintDataGridView.aspx
e da qui vedrai cosa e come è strutturata la mia stampa.... Te lo dico xche se mi iniziassi a fare qualche domanda strana "x me" non saprei come risponderti...(( e Tu andresti ancor di più nel pallone al mio brancolare nell'ignoto ....
sono veramente alle prime armi in questo campo...
ho lavorato con excel e il suo vba e li ci prendo abbastanza ma qui non so proprio come interagire...
Ti Ringrazio Molto....

jtpsala Profilo | Senior Member

Per visualizzare le varie righe della tua tabella potresti utilizzare un Timer con l'Intervall impostato a 5000 (5 secondi) e all'interno gestisti il tuo TabXXXBindingSource.MoveNext...
In questo modo ogni 5 secondi il tuo XXXPatenteBindingSource si sposta in avanti di una riha per volta.

Per la stampa non so darti una mano.

Pippo
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5