Creazione report da datatable

di eurostar_italia il
31 risposte
Buonasera a tutti,
mi trovo con un applicativo windows form con una schermata principale.
l'utente popola un datatable direttamente da un portale web.
dalla form principale,con un pulsante apre la form di stampa dove l'utente ha 5 checkbox per scegliere COSA stampare del datatable.
l'oggetto sono prenotazioni di gruppi per viaggi in treno (quindi quanti saliti,quanti discesi,quali carrozze ecc)
Per mettere a video questi dati popolo delle listbox tramite delle query linq.
Per stamparli l'unica è creare un report.ho letto di report viewer però ho trovato solo esempi con DB esterni mentre io
ho solo un datatable (fra l'altro da filtrare con apposite query).
secondo voi è possibile ?
grazie

31 Risposte

  • Ciao,

    Ms ReportViewer puoi usarlo anche con il DATATABLE come datasource anche se non è proprio il massimo... e comunque per popolare il tuo datatable sicuramente dietro ci stà un Database e allora puoi legare quello al tuo report.

    Ti consiglierei di usare il CrystalReport se vuoi che per sviluppatori e gratuito e da cui deriva (nel lontano passato lo stesso Reportviewer ) dipende tutto da quanto complesso e a cosa ti serva il report che hai in mente.

    comunque documentati in rete, trovi milioni di esempi di stampe.

    BYeee
  • Quando vado a usarlo mi chiede la sorgente dati e mi fa cercare sui file esterni e mai mi fa selezionare il datatable.
    il db è su un sito esterno a cui non posso accedere,ma riesco ad ottenere un json.
    su google e youtube trovo tutti esempi in cui la sorgente dati è un datase con un table adapter e un origine dati esterna
    grazie lo stesso
  • Non mi ricordo bene, ma potresti provare
    Report. Datasource?tuadatatable
    Tenendo presente che la datable puoi popolarla come ti pare ed indipendentemente dal db
  • Io temo di non aver ben compreso l'utilizzo dei vari elementi : da un json riempo il datatable.poi quando cerco di fare il report ,L'IDE mi chiede un origine dati che è un db ...ma non ho possibilit di dirgli di usare il mio datatable
  • Il tuo oggetto report ha una proprietà DataSource?
    per capire meglio puoi inviare il nome completo di namespace dell'oggetto Report che utilizzi?
  • eurostar_italia ha scritto:


    Io temo di non aver ben compreso l'utilizzo dei vari elementi : da un json riempo il datatable.poi quando cerco di fare il report ,L'IDE mi chiede un origine dati che è un db ...ma non ho possibilit di dirgli di usare il mio datatable
    Se ti resta comodo in fase di design del report puoi anche farti una tabella su un db di comodo
    che sarà lo specchio della tua datatable popolata a partire dal json;

    a report viewver non interessa da dove vengono i dati ma solo il loro schema
    per cui nel funzionamento a runtime non avrai bisogno di un db

    Spero di essermi spiegato;

    P.S.
    secondo me potresti disegnare il report anche generandoti un dataset tipizzato o un object datasource
    ... ma forse la via più semplice è quella di un db di comodo
    HTH
  • Io NON posso usare db esterni...e per quello uso un datatable.
    creo il dataset e dentro disegno 3 datatable (mi servono 3 datatable per fare il contfronto dei dati presenti tra loro e che carico con 3 json differenti).
    a runtime
     For Each msg In data
     DataSet1.treno1.Rows.Add(msg("departureLocationName"), msg("arrivalLocationName"), msg("pnrCode"),msg("wagon"), msg("seat")) 
    Next
    i miei datatable NON hanno table adapter....e quindi non vede lo schema.
    o mi sto perdendo in un bicchier d'acqua o ho toppato qualcosa
  • eurostar_italia ha scritto:


    Io NON posso usare db esterni...e per quello uso un datatable.
    ...
    mi sa che mi sono spiegato male oppure non ho capito il tuo problema;

    ma il report lo hai preparato si o no ?
    .... io ho capito di no per chè ti chiede di usare un db per disegnarlo.... giusto ?

    se è così usa un db *di comodo* solo per disegnare il report
    e di cui non avrai nessun bisogno durante il normale funzionamento del programma
    perchè i dati li fornirai tramite il datatable che popolerai *ignorando* il db di comodo.

    Scusa se non ho capito
  • Il mio problema è che sono autodidatta e per quanto mi documenti non riesco a risolvere.
    credo di non aver capito come si crei un report con report viewer perchè ogni volta che cancello e lo aggiungo mi da una procedura diversa
  • Ultimo tentativo ; lasciamo stare il db di comodo.

    Aggiungi un dataset,
    aggiungi una datatable al dataset ed impostane le colonne
    aggiungi reportviewver , quindi "design new report" ed a questo punto potrai scegliere il dataset come datasource del report

    HTH
  • Ho aggiunto il datataset,il datatable e impostato le colonne (a codice)
    se invece provo ad aggiungere un dataset dal wizard mi chiede la stringa di connessione al db,che però io non ho perchè non ho un DB!
    i valori (ottenuti tramite query linq ) del datatable inserito a codice li visualizzo nelle mie listbox
    ho aggiunto un report (report1.RDLC) e gli ho passato dataset e le colonne di mio interesse.
    quindi ho aggiunto il reportviewer che ha l'intestazione ma non carica dati (in teoria senza filtri dovrebbe caricare tutto il datatable).
    mi sto incartando in qualcosa
    è dalle 7 che ci combatto,tanto sto in quarantena
    EDIT la finestra di report si apre solo DOPO che il datatable è popolato ovviamente.
  • VS 2015 Community
    progetto win form

    pulsante dx sul progetto, add new item, dati, dataset
    si apre il designer del dataset; toolbox
    aggiungo una datable dalla toolbox
    click sulla datable ed aggiungo le colonne.

    apro form1
    aggiungo ReportViewver da toolbx
    design a new report
    scelgo come datasource il dataset creato prima e posso selezionare sotto la datatable
  • Ed è quello che ho fatto!
    ma poi non mi carica i dati...e non capisco perchè..
  • Se posti un progetto di test chi vuole se lo guarda
    altrimenti prova a fare una cosa del genere
    
    reportViewer1.LocalReport.DataSources.Clear();
    
    ReportDataSource rprtDTSource = new ReportDataSource("TITLE",table);
    
    reportViewer1.LocalReport.DataSources.Add(rprtDTSource);
    reportViewer1.RefreshReport();
    
Devi accedere o registrarti per scrivere nel forum
31 risposte