Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    171

    [VB.NET] Stampare programma preventivi

    Buongiorno,
    il titolo non aiuta molto, ma ho cercato di essere riassuntivo.

    Sto cercando di creare un semplice programma di preventivi/quotazioni.

    Riesco ad arrangiarmi tranquillamente nella parte database e GUI, ma non ho idea di come fare per la stampa in PDF o Word del risultato.

    In poche parole riempirei una DGV e vorrei che il risultato andasse in un file, il quale dovrà avere instestazione e comunque avere i 3-4 soliti parametri (nome articolo, quantità, descrizione, prezzo ecc) in una tabellina.

    Ho trovato questo video per capire il risultato.

    https://www.youtube.com/watch?v=g9zSCjjOPL4

    C'è qualcuno che può indirizzarmi ad una soluzione?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,980
    hai provato a cercare "vb.net export datagridview to word"

  3. #3
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    171
    No no, quello lo so fare tranquillamente, il problema è proprio formattare il foglio nel modo giusto, se vedi il video il risultato finale è molto carino!
    Perché vorrei l'intestazione dell'azienda a sinistra, quella del cliente a destra, la tabella che si vedono solo le linee delle colonne con i dati e una sommatoria alla fine.
    È un esempio giusto per fare capire

  4. #4
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    171
    Nessuna idea??

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,241
    Per la stampa di un qualsiasi documento generico (offerta, preventivo, ddt, fattura, ecc.) si usano i report.

  6. #6
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    171
    Ciao, grazie per l'idea!

    Ho cercato un po' di tutorial su come usare CrystalReport dato che molti consigliano questo.

    Dopo parecchie difficoltà, dato che mi faceva crashare VS, sono riuscito a farlo funzionare.
    Ora da Expert Database sto provando ad aggiungere un Dataset, così da poter utilizzare delle query personalizzate (dovrò riempire il report con dati di più tabelle perchè ci sarà la zona dei dati del proprietario che saranno sempre gli stessi, quella con i dati del cliente che farò selezionare dal form interattivo e quella con gli articoli che dovranno andare nel preventivo, con alla fine una sommatoria)

    Se hai qualche consiglio da darmi li accetto molto molto volentieri perchè ora come ora sto facendo un po' fatica ad assegnare i dati che voglio al report.

    Grazie

  7. #7
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    171
    Ok! Dopo innumerevoli tentativi, credo di essere entrato nella strada giusta!

    Sono riuscito a filtrare i risultati che ottengo nel Report inviando una stringa SQL in questo modo:

    Prima bisogna creare un DataSet con le colonne che vogliamo inserire

    codice:
    
    Dim ds As New DataSet1        Dim cnn As SqlConnection
            Dim connectionString As String
            Dim sql As String
    
    
            connectionString = "connString"
            cnn = New SqlConnection(connectionString)
            cnn.Open()
            sql = "SELECT Product_id,Product_name,Product_price FROM Product"
            Dim dscmd As New SqlDataAdapter(sql, cnn)
    
    
            dscmd.Fill(ds, "Product")
            MsgBox(ds.Tables(1).Rows.Count)
            cnn.Close()
    
    
            Dim objRpt As New CrystalReport1
            objRpt.SetDataSource(ds.Tables(1))
            CrystalReportViewer1.ReportSource = objRpt
            CrystalReportViewer1.Refresh()
    Ora però ho la necssità di passare dei parametri che non sono contenuti in una tabella.

    Per passare dei parametri ho visto che dovrebbe semplicemente bastare questo codice:

    codice:
    Dim cryRpt As New ReportDocument
    
    cryRpt.Load("PERCORSO\CrystalReport1.rpt")
    
    Dim crParameterFieldDefinitions As ParameterFieldDefinitions
            Dim crParameterFieldDefinition As ParameterFieldDefinition
            Dim crParameterValues As New ParameterValues
            Dim crParameterDiscreteValue As New ParameterDiscreteValue
    
    
            crParameterDiscreteValue.Value = TextBox1.Text
            crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields
            crParameterFieldDefinition = crParameterFieldDefinitions.Item("Customername")
            crParameterValues = crParameterFieldDefinition.CurrentValues
    
    
            crParameterValues.Clear()
            crParameterValues.Add(crParameterDiscreteValue)
            crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
    
    
            CrystalReportViewer1.ReportSource = cryRpt
    Il problema, come si vede chiaramente, è che nel primo esempio passo l'oggetto objRpt (che è un CrystalReport1), mentre nel secondo passo cryRpt (che è un ReportDocument)

    Ho provato ad aggiungere il secondo pezzo di codice sostituendo cryRpt con objRpt e non ho avuto errori, ma non passa niente

    Forse sono cose banali, ma non riesco ad uscirne
    Ultima modifica di SigAlexey; 09-04-2020 a 09:36

  8. #8
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    171
    Rettifico tutto finalmente!!

    Basta aggiungere objRpt.SetParameterValue("parametro1", "param") dopo aver impostato il datasource, quindi nel mio caso:

    Dim ds As New DataSet1
    Dim cnn As SqlConnection
    Dim connectionString As String
    Dim sql As String


    connectionString = "connString"
    cnn = New SqlConnection(connectionString)
    cnn.Open()
    sql = "SELECT Product_id,Product_name,Product_price FROM Product"
    Dim dscmd As New SqlDataAdapter(sql, cnn)


    dscmd.Fill(ds, "Product")
    MsgBox(ds.Tables(1).Rows.Count)
    cnn.Close()


    Dim objRpt As New CrystalReport1
    objRpt.SetDataSource(ds.Tables(1))
    objRpt.SetParameterValue("parametro1", "param")
    CrystalReportViewer1.ReportSource = objRpt
    CrystalReportViewer1.Refresh()

    Spero che possa aiutare qualcuno

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.