Aggiornare anteprima crystal report

mercoledì 01 ottobre 2008 - 23.33

DarkKnight Profilo | Newbie

Ciao a tutti...ho un piccolo problema: sto usando la versione integrata in vs2005pro di crystal report..il problema è il seguente: quando preparo un report, l'anteprima di stampa risulta con i dati vecchi, se premo il pulsante aggiorna invece tutto viene visualizzato correttamente...avevo letto su questo forum che il problema si può risolvere deselezionando la casella "salva dati con report"...solo che io non la trovo..sarà che nella versione integrata non c'è? possibile?...

ps: di codice non ce n'è, ho creato una form, inserito al suo interno il CrystalReportViewer ed ho legato ad esso il report creato sempre da studio...

Aspetto fiducioso vostre notizie :-D ciao a tutti e buon serata

DomA Profilo | Expert

Ti ho risposto qui:

http://www.dotnethell.it/forum/messages.aspx?ThreadID=25629

>ignora l'ultima parte.
Ciao
Domenico

DarkKnight Profilo | Newbie

Dunque, per il riempimento delle tabelle uso questo codice:

Private Sub btnStampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStampa.Click
If cmbFatture.SelectedIndex = -1 Then
MessageBox.Show("Selezionare una fattura dall'elenco", "Attenzione", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Exit Sub
End If
Dim fattura As clFattura
fattura = CType(cmbFatture.SelectedItem, clFattura)
Dim medico As String
Dim m As clMedico
m = fattura.medico
medico = m.titolo & " " & m.nome.ToUpper & " " & m.cognome.ToUpper
Dim bloccomedico As String
bloccomedico = m.indirizzo & " - " & m.cap & " " & m.localita & "(" & m.provincia & ")" & vbLf & "Cod. Fiscale: " & m.cf.ToUpper & vbLf & "P.IVA: " & m.piva
Dim c As clPaziente
c = fattura.paziente
Dim bloccopaziente As String
bloccopaziente = c.titolo & vbLf & c.cognome.ToUpper & " " & c.nome.ToUpper & vbLf & c.indirizzo & vbLf & c.cap & " " & c.localita & "(" & c.provincia & ")" & vbLf & vbLf & "Cod. Fiscale: " & c.cf.ToUpper
objDB.EseguiSQL("delete * from Tmp_Stampa")
objDB.EseguiSQL("delete * from Tmp_trattamenti")
Dim objSQL As New clInsert("Tmp_Stampa")
objSQL.AggiungiCampoNew("Medico", medico)
objSQL.AggiungiCampoNew("sottotitolo", m.sottotitolo)
objSQL.AggiungiCampoNew("specializzazione", m.specializzazione)
objSQL.AggiungiCampoNew("BloccoMedico", bloccomedico)
objSQL.AggiungiCampoNew("NFattura", fattura.nfattura)
objSQL.AggiungiCampoNew("DataFattura", Format(fattura.dataFattura, "dd/MM/yyyy"))
objSQL.AggiungiCampoNew("BloccoPaziente", bloccopaziente)
objSQL.AggiungiCampoNew("pagamento", fattura.metodo.testo)
objSQL.AggiungiCampoNew("totale", FormatNumber(totale - sconto, 2))
Dim iva As Double
If chkIVA.Checked = True Then
iva = (totale - sconto) * 0.2
Else
If (totale - sconto) > 77 Then
iva = 1.81
Else
iva = 0
End If
End If
objSQL.AggiungiCampoNew("IVA", FormatNumber(iva, 2))
Dim totalone As Double
totalone = totale - sconto + iva
objSQL.AggiungiCampoNew("TotaleDoc", FormatNumber(totalone, 2))
objDB.EseguiSQL(objSQL.getSQL)
objSQL = Nothing


Dim percentualeSconto As Double
percentualeSconto = sconto * (1 / (lstTrattamenti.Items.Count))

Dim i As Integer
For i = 0 To lstTrattamenti.Items.Count - 1
objSQL = New clInsert("Tmp_Trattamenti")
Dim t As clTrattamenti
t = CType(lstTrattamenti.Items.Item(i), clTrattamenti)

'devo calcolarmi il costo poichè è un insieme di costi separati
Dim k As Integer
Dim costo As Double
costo = 0
For k = 0 To t.costo.Length - 1
costo = costo + t.costo(k)
Next
costo = costo - percentualeSconto
objSQL.AggiungiCampoNew("Testo", t.descrizione)
objSQL.AggiungiCampoNew("Costo", FormatNumber(costo, 2))
objDB.EseguiSQL(objSQL.getSQL)
objSQL = Nothing
Next

Dim miaform As New frmAnteprimaFatturaCliente

miaform.MdiParent = frmMain

miaform.Show()
End Sub


A design time ho impostato tutte le posizioni dei campi (infatti la primissima anteprima esce giusta, mentre dalla seconda in poi devo fare "aggiorna")..
La form frmAnteprimaFatturaCliente è una semplicissima windows form con all'interno un crystalReportViewer e come report source ho messo il report stesso che avevo creato (che è incluso nel progetto, infatti oltre al .exe sul pc del cliente non andranno altri file)...quindi sinceramente il problema rimane

freeteo Profilo | Guru

ciao DarkKnight,
dal tuo codice vedo che i dati li popoli, ma il punto è che non passi niente al report e penso sia proprio questo quello che intendeva DomA .
Se non gli apassi niente, il report tenta con le stesse impostazioni con cui l'hai creato, a collegarsi e riprendersi i dati, ma tipicamente nelle macchine di deploy i puntamenti cambiano.

Quello che devi fare dentro alla form dove hai il reportviewer, è fare da codice il passaggio di dati letti da db,
oppure passare direttamente le impostazioni di connessione per il report.

I 2 modi sono spiegati qui:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=21962
http://www.dotnethell.it/articles/Crystal-Reports-Integration-Windows-Form.aspx
(in quest'ultimo trovi un esempio scaricabile da provare, che ti mostra i vari metodi)

Vedi tu quale di questi si adatta meglio alla tua situazione.
ciao.

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

DomA Profilo | Expert

E' vero ciò che dice FreeTeo. Comunque segui le sue indicazioni. A me ha risolto diversi problemi.
Ciao
Domenico
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