Se si hanno i dati nel datagriview che controllo posso usare per crere...

sabato 20 gennaio 2007 - 16.27

ken87 Profilo | Junior Member

so che c'e report viewer e crystal

si possono madare il contenuto del dataset creato da codice ai controlli per stampare e creare il file pdf se no come posso risolvere il problema..
aiuto...

grazie mille in anticipo

freeteo Profilo | Guru

ciao,
se hai dei dati visualizzati enlla datagridview, sicuramente li hai anche in memoria, ovvero li hai letti da qualche parte e utilizzando datatable (o lista di entita') li hai passati.

In entrambi i casi puoi passare al report i dati da visualizzare con il metodo SetDataSource e visualizzarlo nel reportViewer.
ciao.

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

ken87 Profilo | Junior Member

mi son collegato al database ho creato un dataset e gli caricati li.
ho creato un ole adator e gli ho visualizzati saro piu chiaro:

La mia query

key4 = "SELECT mio5.MATRICOLA, mio5.RAG, mio5.data, filtri.MinDiLIVELLO, filtri.Minrepp, " + _
" filtri.impo, filtri.TURNO, mio5.bgm, mio5.Cons, mio5.Scostamento, mio5.bgp, mio5.Csp, " + _
" mio5.Scotprog, filtri.contr" + _
" " + " FROM mio5 INNER JOIN filtri ON mio5.MATRICOLA=filtri.MATRICOLA;"


Dim prova2 As OleDbCommand = New OleDbCommand(key4, connection)

Dim da As New OleDbDataAdapter
da.SelectCommand = prova2
'da.MissingSchemaAction = MissingSchemaAction.AddWithKey
Dim ds As New DataSet
Dim p As New DataView
ds.Clear()
da.Fill(ds, "prova2")
DataGridView1.DataSource = ds

Ora come faccio mi puoi scrivere due righe di codice.
Altra cosa ho due datagridview uno per i dati altro per somma ci son problemi per mandare nel report?

freeteo Profilo | Guru

>Dim prova2 As OleDbCommand = New OleDbCommand(key4, connection)
>
> Dim da As New OleDbDataAdapter
> da.SelectCommand = prova2
>'da.MissingSchemaAction = MissingSchemaAction.AddWithKey
> Dim ds As New DataSet
> Dim p As New DataView
> ds.Clear()
> da.Fill(ds, "prova2")
> DataGridView1.DataSource = ds
>Ora come faccio mi puoi scrivere due righe di codice.
ti basta caricare il report, e in realta' puoi passargli la prima tabella del dataset, non ti serve un dataset se usi una sola tabella.
Dim rpt As ReportDocument = New ReportDociuemnt
rpt.Load("c:\...."& vbCr&"eport.rpt")
rpt.SetDataSource(ds.Tables(0))

l'unica cosa è che devi creare il report specificando la stessa query, magari anche senza parametri, l'importante è che sia della stessa struttura.
La qeury la inserisci quando stai aggiungendo il database al report (nel wizard) einvece di dargli una tabella, gli dici "comando" , che appunto equivale a "stringa sql"...


>Altra cosa ho due datagridview uno per i dati altro per somma
>ci son problemi per mandare nel report?
no, non ti servono 2 tabelle, il report fa i totali basta che aggiungi un campo "somma" dal menu e gli dici cosa sommare...

ciao.

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

ken87 Profilo | Junior Member

si ma facendo cosi non ho modo di modificargli i filti?
Se devo filtrare la tabella per 6 filri contemporaneamente come gli l'ho dico se uso interfaccia grafica?
i filtri sono nel menu a tendina.
Non ho capito come funziona i parametri protresti farmi un esempoi di codice come faresti tu?

freeteo Profilo | Guru

>si ma facendo cosi non ho modo di modificargli i filti?
>Se devo filtrare la tabella per 6 filri contemporaneamente come
>gli l'ho dico se uso interfaccia grafica?
ma pensavo che questo lo avessi gia' risolto, se hai una griglia che mostra dei dati, dovresti aver gia' modo di settare i vari filtri per visualizzare...

>i filtri sono nel menu a tendina.
ok quindi ad ogni "selectChanged" della combo, rifa la query aggiungendo il filtro relativo?

>Non ho capito come funziona i parametri protresti farmi un esempoi
>di codice come faresti tu?
te l'ho gia scritto prima, devi avere la sorgente dati aposto (quindi riempita dal datadapter con la query con i vari filtri etc...) e poi passarla al report
... Dataset miods = new Dataset(); miodataAdapter = new OleDbDataAdapter("selec .... where....",miaconnection); miodataAdapter.Fill(miods); ReportDocument mioreport = new ReportDocument (); mioreport.load("c\...\..\crystalreport1.rpt"); mioreport .SetDataSource (miods); CrystalReportViewer1.ReportSource = mioreport;
il codice è in c# ma in vb è praticamente uguale...

solo che adesso mi sorge un dubbio, ma hai sbagliato stanza? perche' questa è quella di vb6, solo che tu parli di dataset, oledbdataadapter...non so penso tu stia cmq sviluppando in .net giusto?
ciao.

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

ken87 Profilo | Junior Member

il programma lo devo svillupare in visual basic 2005.
Che come ho potuto notare non ha più nessun legame con visual basic 6.

Per me è sato come rinizziare da zero mi c'e volito un pò per muovermi, riconosco che per alcuni aspetti e veramente potentente rispetto al passato..

lo provo e ti faccio sapere grazie per ora .
Ultima cosa il report vuoto lo creo tarmite interfaccia vero?

freeteo Profilo | Guru

assolutamente si, con .net si programma verametne molto strutturati, bene e in maniera efficente, solo che il passo da vb6 non è di certo "indolore"
L'unica cosa che ti consiglio, come ho fatto io del resto, è stato evitare di imparare vb.net, passar direttamente a c# perche' è il linguaggio di punta del framework e quindi conoscerlo ti apre la strada anche al futuro.
Con questo non voglio dire che vb.net sia da evitare, anzi!
dico solo che imparare a programmare in ambiente .net, vuol dire imparare a programmare per il framework che è comune a tutti i linguaggi, che diventano quindi "questione di stile".
Quindi impara uno o l'altro non cambia niente perche' puoi ti troverai facilmente a passare tra i vari linguaggi/esempi/programmi etc...

Io te lo consiglio solo da un punto di vista pratico, ed anche perche' io ho fatto cosi'...
ciao.

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

ken87 Profilo | Junior Member

ho provato ma quando gli passo il dataset il report resta vuoto

non riesce a frmi

mioreport .SetDataSource (miods);



ecco il codice

Dim connectionString As String = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & My.Application.Info.DirectoryPath & "\Budget.Mdb"
Using connection As New OleDbConnection(connectionString)
connection.Open()
Try
Dim pippo As New ReportDocument

Dim anag As String
Dim rpt As New ReportDataSource




anag = "SELECT grafica4.MATRICOLA, grafica4.COGNOME, grafica4.cstcon, grafica4.descrizione, grafica4.mf, grafica4.gr, grafica4.contr, grafica4.DTASSU, grafica4.DTCESS" + _
" " + " FROM grafica4"
Dim prova4 As OleDbCommand = New OleDbCommand(anag, connection)
Dim da4 As New OleDbDataAdapter 'Creo adattatore per la nuova query

Dim dataset As New DataSet
da4.SelectCommand = prova4
dataset.Clear()
da4.Fill(dataset, "prova4")

pippo.Load("C:\Documents and Setting\Utente\Desktop\DATA\Copia di demo13\CrystalReport1.rpt ")
pippo.SetDataSource(dataset)
CrystalReportViewer1.ReportSource = pippo

Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Information, "Data visual info :[Attenzione]")
End Try
End Using
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