Report "al volo"

martedì 19 gennaio 2010 - 10.25

ladrone Profilo | Newbie

Salve a tutti!
Chiedo scusa in anticipo per il mio livello da principiante.
Uso VB 2008 Pro ed ho questo problema :

Ho un dataset (non un DB) con una sola tabella che ho collegato ad un reportviewer in fase di progettazione.

In run time, manipolo via codice la tabella (aggiungo righe, tolgo righe, riempio righe), ma quando apro il report non ci sono dati!
Posto il semplice codice :

For temp_riga = 0 To 4
DataSet1.Tables(0).Rows.Add()
For temp_col = 0 To 3
DataSet1.Tables(0).Rows(temp_riga).Item(temp_col) = "(" & temp_riga & "," & temp_col & ")"
Next
Next

Me.Validate()
DataSet1.DataTable1.AcceptChanges()

Chiedo aiuto e grazie in anticipo.

Jeremy Profilo | Guru

>Salve a tutti!
>Chiedo scusa in anticipo per il mio livello da principiante.
>Uso VB 2008 Pro ed ho questo problema :
>
>Ho un dataset (non un DB) con una sola tabella che ho collegato
>ad un reportviewer in fase di progettazione.
>
>In run time, manipolo via codice la tabella (aggiungo righe,
>tolgo righe, riempio righe), ma quando apro il report non ci
>sono dati!
>Posto il semplice codice :
>
>For temp_riga = 0 To 4
> DataSet1.Tables(0).Rows.Add()
> For temp_col = 0 To 3
>DataSet1.Tables(0).Rows(temp_riga).Item(temp_col) = "(" & temp_riga
>& "," & temp_col & ")"
> Next
>Next
>
> Me.Validate()
> DataSet1.DataTable1.AcceptChanges()
>
>Chiedo aiuto e grazie in anticipo.

Ciao.
Fammi capire .... se il dataset è stato costruito in fase di progettazione, perchè non usi la tipizzazione del Dataset per valorizzare i campi della tabella ..... te lo chiedo perchè, visto così, sembrerebbe che il Dataset venga creato a Run-time, nel qual caso, il discorso sarebbe un pò diverso, in quanto si renderebbe necessario passare l'istanza del dataset al Report con il metodo SetDataSource.

Facci sapere...
Ciao

ladrone Profilo | Newbie

Grazie per l'interesse.

Sia il dataset ,la tabella ed anche il report sono stati progettati a design time, l'unica cosa che faccio a run time è il riempimento della tabella.
Forse ho preso un abbaglio, ma Il mio fine ultimo è soltanto quello di compilare un report senza necessariamente attingere da un database che, infatti, non ho nella mia applicazione.



Jeremy Profilo | Guru

Ciao.
Quello che vuoi fare è assolutamente lecito e sensato.
Quello che ti chiedo è se sei sicuro che DataSet1 sia effettivamente l'istanza del Dataset progettato a Design-Time e perchè, qualora lo fosse, non usi la tipizzazione del Dataset stesso (Quindi il nome dei campi in quanto proprietà).
Te lo chiedo semplicemente per riuscire a capire dove sia l'errore.

Facci sapere...
Ciao

Jeremy Profilo | Guru

Ad ogni modo .... devi comunque passare l'istanza del Dataset al Report attraverso il metodo SetDataSource.

ladrone Profilo | Newbie

non saprei risponderti circa la corretta istanza, ma posso dirti ciò che mi succede:
per verifica, ho creato (design time) un form con una datagridview collegata alla table1 e le celle appaiono vuote.
Forse questo spiega perchè il report è anch'esso vuoto.

Ho l'impressione che i valori delle celle, scritti dal codice, non arrivino mai nella table1.

Jeremy Profilo | Guru

Ho capito ... ma per capire dove sbagli è necessario vedere come crei nuove istanze del dataset .....
O mostri il codice ..... od alleghi il progettino zippato .... altrimenti non ne veniamo fuori.

Facci sapere....
Ciao

ladrone Profilo | Newbie

Grazie...Gentilissimissimo.... allego il progetto.

Ciao a presto...

Jeremy Profilo | Guru

Ciao.
A parte che pensavo parlassimo di CrystalReport.
Ad ogni modo ...come ti dicevo era un problema di istanze diverse tra loro.
Aggiungendo un ReportViewer al form, automaticamente crea un'istanza del dataset necessario per popolare il Report.
Il Dataset che tu hai popolato nel Form1 ha un'istanza diversa .... non è lo stesso dataset che hai nel Form_Report.
Ora io ho risolto così .... ma ci sarebbero modi migliori ....
Rimango comunque a disposizone per ulteriori chiarimenti.

Facci sapere...
Ciao

ladrone Profilo | Newbie

Perfetto!! sei grande!! Grazissimo.

Sono molto interessto ai tuoi "modi migliori", ma non vorrei essere troppo invadente.

Dimmi cosa devo fare : chiudere il thread o mi mandi qualcosa?

Ciao e Grazie Ancora.

Jeremy Profilo | Guru

Ciao.
Diciamo che così non è poi tanto diverso, ma penso di avere applicato,contestualmente allo scenario della tua applicazione, i concetti più basilari.
Facci sapere...
Ciao

ladrone Profilo | Newbie

In poche righe di codice mi hai insegnato tantissimo.
Grazie Infinite ed alla prossima.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5