Esportare datagridview da applicativo vb.net a word

giovedì 26 agosto 2010 - 11.37
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows XP  |  Visual Studio 2008  |  SQL Server 2005

fabiana83 Profilo | Newbie

Buongiorno a tutti,
dopo qualche giorno di ricerche sul web con esito negativo chiedo il vostro aiuto. Vorrei poter esportare una datagridview in un documento di word esistente o se la cosa risulta + facile poter esportare i dati contenuti in una tabella temporanea del db di sql (dove vado a salvare ciò che ho nella datagridview) sempre in word.
Ho visto su più siti come creare una nuova tabella di word da vb.net ma non come popolarla con dei dati presenti in un database.
Spero mi possiate aiutare.
Grazie mille
Buona giornata a tutti

DomA Profilo | Expert

Ciao,
hai pensato di creare un report (con crystal report magari) e poi esportare i dati nel formato che più ti piace (word, excell, pdf ...)?
A presto
Domenico

fabiana83 Profilo | Newbie

Ciao, grazie per avermi risposto. In realtà no non avevo pensato ancora a Crystal Report xkè non l'ho ancora mai usato e non sapevo se faceva al caso mio. Pensavo all'esportazione perchè avevo già un template di word che compilavo automaticamente prendendo i dati inseriti dall'utente su una form. Il mio problema era relativo non tanto a queste info ma al fatto che su questa form c'è una datagridview con check box in cui l'utente deve selezionare delle righe che corrispondono a dei documenti, qui faccio una select trovando i dati relativi all'ultima revisione fatta x quel documento e a questo punto avrei dovuto esportare tali info in word.
Non so come funziona crystal report ma dici che può fare al caso mio? Posso fare queste cose sul report?
Grazie mille
a presto
ciao

DomA Profilo | Expert

Certo,
una volta fatta la tua select ed inseriti i dati nella tabella temporanea, puoi costruire un report con i campi in essa conteuti e poi lanciarlo dal programma.
Crystal per le cose basilari non è difficile da impostare. comunque se hai problemi puoi postare nella specifica stanza.
Domenico

fabiana83 Profilo | Newbie

ok grazie mille allora proverò...
grazie
ciao e buona serata

DomA Profilo | Expert

Fabiana,
grazie per aver accettato la risposta.
Innanzitutto per creare il tuo primo report devi scegliere Aggiungi nuovo elemento --> Crystal Report; a questo punto devi configurare l'origine dati e decidere la/le tabelle da inserire. Forse all'inizio potresti utilizzare la creazione guidata.
Continua...
Ciao
Domenico

fabiana83 Profilo | Newbie

Ciao Domenico,
giusto x aggiornanti (se ti interessa ovviamente ) oggi ho provato a guardare un pò Crystal Report con scarsi risultati, ho letto su internet che va completata l'installazione di Crystal xkè installando solo visual non viene completata quella parte. Lunedì proverò a cercare un pò di suggerimenti su come completare questa installazione xkè in realtà pensavo fosse un pò + rapido il metodo di esportare la datagridview in word (+ che altro considerando che crystal era un argomento che dovevo affrontare + avanti e ora devo consegnare in tempi rapidissimi questa prima parte di programma)....
Secondo te Crystal è cmq la strada + veloce?
Grazie
buon week end
ciao
Fabiana

DomA Profilo | Expert

Quale versione di visual studio utilizzi?
Domenico

fabiana83 Profilo | Newbie

Ciao Domenico,
ho la versione 2008. Sono finalmente riuscita a fare il report con crystal . Posso approfittare della tua gentilezza e chiederti solo 2 piccole cose che sto cercando sul web?
La prima riguarda il layout del report, se la parte "details" del report è molto lunga si viene a creare la seconda pagina la cosa che non mi paice molto è che mi mette tutto ciò che c'è nel GroupFooterSection1 nella seconda pagina anche se nella prima rimane cmq un pò di spazio. Cioè x intenderci non è possibile configurarlo in modo tale da non fare questa suddivisione tra details e groupfooter?
La seconda domanda direi + importante: stavo provando ora il programma su un altro pc, ma quando lancio il report mi chiede la login di accesso al db. Leggevo poco fa sul web che si può evitare questa cosa andando ad inserire nel codice la login con il quale collegarsi? E' corretto? E cosa fondamentale dove lo inserisco non posso visualizzare il codice del report
Grazie mille
Ciao e buona gioranta
Fabiana

DomA Profilo | Expert

Ciao Fabiana,

>> La seconda domanda direi + importante...

Per evitare quell'errore devi passare i dati al report o meglio: alimentarlo.
Ti posto l'esempio di codice che ho utilizzato nel report per fare un preventivo (il report contiene diverse tabelle):
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Può sembrare complicato ma sono solo 4 semplici passaggi:
1) Stabilire una connessione col db (Access 2007 nel mio caso);
2) selezionare i dati che devi passare al report (fare una semplice Select);
3) passare i dati estratti alle tabelle contenute nel report;
4) Aprire il report. Avendo cura di passare il path del report (string RepPath = Application.StartupPath + "\\Preventivo.rpt";);

Fammi sapere.
Domenico

fabiana83 Profilo | Newbie

Grazie Domenico,
gentilissimo. Ora devo solo cercare di capire bene come fare, io per creare il report ho usato il wizard quindi il codice lo ha creato tutto lui o almeno credo.... L'ignoranza è grande
Domani proverò a sbattere nuovamente la testa ....
Grazie ancora
Ti terrò aggiornato...
Fabiana

fabiana83 Profilo | Newbie

Buongiorno Domenico,
eccomi qui ad aggiornarti su questo caso diventato ormai esasperante...
Allora seguendo i tuoi consigli e cercando ancora un pò sul web ho fatto un piccolo passo avanti ma che cmq non mi ha portato a nessun risultato
Mi spiego brevemente sintetizzando in punti:
1- ho creato il report con il wizard
2- nel load della form che visualizza il report ho inserito questo codice dove in teoria dovrei andare a dire che login usare
Private Sub TransmittalReportForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim crtableLogoninfos As New TableLogOnInfos()
Dim crtableLogoninfo As New TableLogOnInfo()
Dim crConnectionInfo As New CrystalDecisions.Shared.ConnectionInfo
Dim CrTables As Tables
Dim CrTable As Table
Dim crReportDocument As New TransmittalCrystalReport()
With crConnectionInfo
.ServerName = "TN01\SQLEXPRESS"
.DatabaseName = "ProvaDB"
.UserID = "thermoeng\f.delucia"
.IntegratedSecurity = True
End With
CrTables = crReportDocument.Database.Tables
For Each CrTable In CrTables
crtableLogoninfo = CrTable.LogOnInfo
crtableLogoninfo.ConnectionInfo = crConnectionInfo
CrTable.ApplyLogOnInfo(crtableLogoninfo)
CrTable.Location = crConnectionInfo.DatabaseName & ".dbo." & CrTable.Location.Substring(CrTable.Location.LastIndexOf(".") + 1)
Next
CrystalReportViewer1.ReportSource = crReportDocument
End Sub

3- ho creato su sql server nella sezione security la login thermoeng\f.delucia selezionando windows authentication.
4- dandomi sempre sul client la maschera di login (dove server e nome db sono corretti) ho creato anche l'utente sulla security del db

Ma sapendo che sicuramente sto sbagliando qualcosa, continua a darmi la finestra di login e anche se io metto a mano la login inserendo thermoeng\f.delucia mi da errore logon failed.

Ora continuerò a cercare di capire dove sto sbagliando nel frattempo se hai qualche suggerimento o insulto son qua....
Grazie ancora
Buona giornata
Fabiana


DomA Profilo | Expert

Ciao Fabiana,

Ti passo la risposta che mi diede il "mago" del forum 2 anni fa.
Fa attenzione al link.

Risposta di Matteo Raumer:
ciao,
guarda questo thread: http://www.dotnethell.it/forum/messages.aspx?ThreadID=21962

ci sono 2 metodi, o gli passi tu i dati se ti viene più comodo (ad esempio li usi per altre cose nella tua form) altrimenti puoi lavorare con le logonInfo.
Cmq trovi tutto nel thread, il codice è da adattare alla tua situazione, ma il concetto è quello.
ciao.

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

Ciao,

Domenico

fabiana83 Profilo | Newbie

Ciao Domenico,
ho visto il link che mi hai girato e ti ringrazio erano le stess info che avevo trovato io. Se non ho capito male però se scelgo di utilizzare una connessione al db con windows authentication non devo inserire nel codice ne user ne password.
Mi da un errore di logon failed che non capisco visto che ho configurato lo user domain con il quale faccio il windows login sul server sql server e sul database. Tenendo anche conto che il resto del'applicazione in cui cmq di interroga il db funziona correttamente senza dare errori di collegamento a sql server.
Ora cercherò la soluzione a questo problema o se proprio non riuscirò chiederò aiuto nela stanza dedicata a sql server.
Ti ringrazio molto della tua disponibilità.
Buona giornata
Fabiana
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