Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Stampa da datagridview su base dati testo
venerdì 19 gennaio 2007 - 15.37
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
pieroalampi
Profilo
| Expert
816
messaggi | Data Invio:
ven 19 gen 2007 - 15:37
salve ho un priccolo problema che mi tormenta da un po, si tratta di effettuare delle stampe di un datagridview che carica dati da una fonte *.txt, è anche vero che non ho esperienza di stampa con questo componente, ma credo non debba essere troppo difficile con la wizard di cristal report, in ogni caso dato che con la stessa wizard di cristal non riesco a reperire i dati da stampare come fonte dati, mi dareste una mano, grazie!
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
sab 20 gen 2007 - 17:32
ciao,
se decidi di stampare qualcosa con i repotr di Crystal, allora ti conviene pensare di crearti i dati che ti interessa stampare in un oggetto DataTable di ado.net.
Ovvero crei una datatable, aggiungi le colonne e aggiungi le righe inserendo per ognuna i vari valori dei campi letti da file.
Fatto questo ciclo, la passi al report con il metodo "SetDataSource" e lo dai in pasto al viewer.
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
pieroalampi
Profilo
| Expert
816
messaggi | Data Invio:
dom 21 gen 2007 - 17:04
di sicuro risolverei le cose, ma per me non è importante farlo con cristal la cosa importante è farlo, e cioe stampare il datagrid.
pieroalampi
Profilo
| Expert
816
messaggi | Data Invio:
lun 22 gen 2007 - 16:40
quindi non esiste altro modo per stampare un datagrid?
::::Sempre in curva::::
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
lun 22 gen 2007 - 23:25
ciao,
per stampare brutalmente un datagrid ci sono vari metodi "poco eleganti" che puoi tranquillamente trovare cercando su internet, tipo :
http://www.java2s.com/Code/CSharp/GUI-Windows-Form/GridPrinting.htm
http://www.c-sharpcorner.com/UploadFile/mgold/HowToPrintingFormControlsinCSharpand.NET11212005063649AM/HowToPrintingFormControlsinCSharpand.NET.aspx
ma a mio avviso per evoluzioni future ti consiglio di pensare ad un report.
Sinceramente la parte di reportistica è sempre una parte importante da mostrare a chi usa il programma, tipicamente è proprio quella a maggior impatto dato che poi produrra' una stampa cartacea
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
pieroalampi
Profilo
| Expert
816
messaggi | Data Invio:
gio 25 gen 2007 - 09:06
ma qui parliamo di c#? e se si trattasse di vb.net? dove li trovo
------------------------------------------------------
::::Sempre a manetta in curva::::
------------------------------------------------------
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
gio 25 gen 2007 - 09:15
ciao,
beh guarda passare il codice tra questi due linguaggi è veramente molto facile,sia che tu lo faccia a mano sia che decida di affidarti a qualche tool come questo:
http://www.kamalpatel.net/ConvertCSharp2VB.aspx
cmq in giro per la rete ce ne sono anche altri se vuoi.
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
pieroalampi
Profilo
| Expert
816
messaggi | Data Invio:
gio 25 gen 2007 - 09:27
grande mi serviva veramente ora provo
------------------------------------------------------
::::Sempre a manetta in curva::::
------------------------------------------------------
pieroalampi
Profilo
| Expert
816
messaggi | Data Invio:
gio 25 gen 2007 - 11:04
no niente nneanche con quel tool sono riuscito a cambiare il codice! hai link per vb.net?
------------------------------------------------------
::::Sempre a manetta in curva::::
------------------------------------------------------
pieroalampi
Profilo
| Expert
816
messaggi | Data Invio:
gio 25 gen 2007 - 11:12
non vedendo la mail di conferma sulla mia posta effettuo un altro post:
ancora non sono riuscito a risolvere il problema neanche con quel tool per la traduzione del codice che mi hai passato, non avresti anche del link per vb.net? o altre soluzioni?
------------------------------------------------------
::::Sempre a manetta in curva::::
------------------------------------------------------
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
gio 25 gen 2007 - 20:24
>non vedendo la mail di conferma sulla mia posta effettuo un altro
>post:
la mail è quella con l'allegato "beginhere.zip" ?
se è quello il problema è che qui stai parlando di asp e non di WindowsForm quindi la stanza è sbagliata...e in piu' è pure asp classico, e non di .net!
La cosa si complica ababstanza, e sinceramente non tratto quel tipo di applicazioni quindi non saprei nemmeno aiutarti, ed anzi ti consiglio di passare a asp.net al piu' presto!!!!!
Cmq sia ti do il sito di riferimento di Crystal dove puoi cercare qualche info:
http://support.businessobjects.com
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
pieroalampi
Profilo
| Expert
816
messaggi | Data Invio:
dom 28 gen 2007 - 10:51
ti chiedo scusa ma sono io che sicuramente non mi spiego benissimo, in ogni caso sto programmando in vb.net ho messo in un form un datagridview e non riesco a stamparlo in nessun modo, vorrei farlo dalla fonte dati ma non ci riesco dato che non è la cllassica connessione ad un db, quindi cercavo di stampare brutalmente il contenuto del componente datagridview, è su questo sto praticamente impazzendo da una settimana!
vb.net
------------------------------------------------------
::::Sempre a manetta in curva::::
------------------------------------------------------
paolo.codega
Profilo
| Newbie
4
messaggi | Data Invio:
mar 13 feb 2007 - 18:14
Ciao,
per stampare il datagrid in maniera brutale ci sono vari sistemi.
Ti consiglio cmq di utilizzare crystal report.
Il ragionamento è questo:
1. Trascini sulla form il printdocument e il printpreviewdialog
2. Sulla stessa form crei un tasto che lancia la stampa
3. Nel codice scrivi:
Private Sub btn_stampa_tnt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_stampa_tnt.Click
Me.PrintDocument1.DefaultPageSettings.Landscape = False ' orientamento orizzonatale
Me.PrintPreviewDialog1.Document = Me.PrintDocument1
Me.PrintPreviewDialog1.ShowDialog() ' vedi il preview , disattivi commentandolo
'Me.PrintDocument1.Print() ' togli l'apice se vuoi lanciare direttamente la stampa
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim drawFont As New Font("Verdana", 12, FontStyle.Regular) ' imposti il carattere
Dim i, x As Integer
Dim distanza As Integer = 30 ' distanza fissa righe
i = Me.dgw_spedizione.Rows.Count - 1 'conto il numero di righe del datagrid
for x=0 to i 'il datagrid contiene 3 colonne (nella parentesi dopo item vengono indicati il numero della colonna, la riga che scorre con x)
e.Graphics.DrawString(Me.NOME_DATAGRID.Item(0, x).Value, drawFont, Brushes.Black, 30, 10 + (x * distanza))
e.Graphics.DrawString(Me.NOME_DATAGRID.Item(1, x).Value, drawFont, Brushes.Black, 150, 10 + (x * distanza))
e.Graphics.DrawString(Me.NOME_DATATGRID.Item(2, x).Value, drawFont, Brushes.Black, 400, 10 + (x * distanza))
next x
End Sub
L'ho usato un pò di volte e ha sempre funzionato .
L'ho scritto a memoria quindi se non funziona ci sono errorini di codice , postameli che li correggiamo.
Poi se ti serve stampare la griglia e le righe t do i comandi.
Aspetto una tua risposta....
CIAO
PAOLO
pieroalampi
Profilo
| Expert
816
messaggi | Data Invio:
mar 13 feb 2007 - 23:15
cavolo quasi quasi mi ero rassegnato, sai che nessuno è riuscito ad aiutarmi!
in ogni caso ho fatto come hai detto tu e mi si blocca con il seguente errore:
nel print preview mi si blocca deopo aver scritto la prima riga
Cast non valido dal tipo 'DBNull' al tipo 'String' sulla riga:
e.Graphics.DrawString(Me.DataGridView1.Item(0, x).Value, drawFont, Brushes.Black, 30, 10 + (x * distanza))
che sarà?
qui sotto tutto il codice:
Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
Me.PrintDocument.DefaultPageSettings.Landscape = False ' orientamento orizzonatale
Me.PrintPreviewDialog1.Document = Me.PrintDocument
Me.PrintPreviewDialog1.ShowDialog() ' vedi il preview , disattivi commentandolo
'Me.PrintDocument1.Print() ' togli l'apice se vuoi lanciare direttamente la stampa
End Sub
Private Sub PrintDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument.PrintPage
Dim drawFont As New Font("Verdana", 12, FontStyle.Regular) ' imposti il carattere
Dim i, x As Integer
Dim distanza As Integer = 30 ' distanza fissa righe
i = Me.DataGridView1.Rows.Count - 1 'conto il numero di righe del datagrid
For x = 0 To i 'il datagrid contiene 3 colonne (nella parentesi dopo item vengono indicati il numero della colonna, la riga che scorre con x)
e.Graphics.DrawString(Me.DataGridView1.Item(0, x).Value, drawFont, Brushes.Black, 30, 10 + (x * distanza))
e.Graphics.DrawString(Me.DataGridView1.Item(1, x).Value, drawFont, Brushes.Black, 150, 10 + (x * distanza))
e.Graphics.DrawString(Me.DataGridView1.Item(2, x).Value, drawFont, Brushes.Black, 400, 10 + (x * distanza))
Next x
End Sub
End Class
Se potessi stampare anche la griglia e le righe sarebbe grandioso!
ovviamente il datagrid è gia popolato!
vb.net
------------------------------------------------------
::::Sempre a manetta in curva::::
------------------------------------------------------
paolo.codega
Profilo
| Newbie
4
messaggi | Data Invio:
mer 14 feb 2007 - 08:59
Ciao,
per caso nel datagrid ci sono campi vuoti?
Come popoli il datagrid?
Paolo
pieroalampi
Profilo
| Expert
816
messaggi | Data Invio:
mer 14 feb 2007 - 09:05
si è possibile che ci siano delle celle vuote, il datagrid lo popolo con un fill, ti posto la parte di connessione selezione e popolamento:
nn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Me.txtConfig.Text + ";Extended Properties='Text;HDR=No;FMT=Delimited'"
Dim cm As New System.Data.OleDb.OleDbCommand
cm.Connection = cnn2
cm.CommandText = "SELECT PROGRESSIVO,DESCRIZIONE_CLIENTE,FORMATO FROM [" + datVerFile + "] ORDER BY DESCRIZIONE_CLIENTE"
cnn2.Open()
Dim da As New System.Data.OleDb.OleDbDataAdapter
da.SelectCommand = cm
da.SelectCommand.Connection = cnn2
tableName2 = datVerFile.Substring(0, datVerFile.LastIndexOf("."))
da.Fill(DataSet1, tableName2)
DataGridView1.DataSource = DataSet1
DataGridView1.DataMember = tableName2
vb.net
------------------------------------------------------
::::Sempre a manetta in curva::::
------------------------------------------------------
paolo.codega
Profilo
| Newbie
4
messaggi | Data Invio:
mer 14 feb 2007 - 09:19
hai msn messenger, che proviamo a controllare l'errore in real time?
poi postiamo la soluzione.
p.codega@virgilio.it
Paolo
pieroalampi
Profilo
| Expert
816
messaggi | Data Invio:
mer 14 feb 2007 - 09:35
ok
ti ho aggiunto alla lista
grazie
vb.net
------------------------------------------------------
::::Sempre a manetta in curva::::
------------------------------------------------------
pieroalampi
Profilo
| Expert
816
messaggi | Data Invio:
gio 15 feb 2007 - 19:36
hai news, io ancora non mriesco anche perche il tutto si blocca anche se trova celle vuote
vb.net 2005
------------------------------------------------------
::::Sempre a manetta in curva::::
------------------------------------------------------
Torna su
Stanze Forum
Elenco Threads
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 !