Crystal report

domenica 27 aprile 2003 - 15.09

MauriBS Profilo | Newbie

Ciao a tutti.
Sto iniziando a 'pasticciare' con .NET. Dopo varie prove con i Web Form ho provato anche ad inserire un report creato con Crystal Report.
Evidentemente ho dimenticato qualche passaggio perchè quando tento di aprire la pagina web mi compare il seguente errore "Accesso non riuscito."
Qualcuno sa elencarmi la sequenza corretta di operazioni da effettuare per includere un report in una pagina web?
Grazie a tutti.

Brainkiller Profilo | Guru

Ciao,
se puoi portare pazienza ancora per qualche ora/giorno sto scrivendo proprio un articolo su come utilizzare Crystal Report da pagine web e da applicazioni WinForms. Nel frattempo tu hai già avuto modo di fare altri esperimenti o sei ancora bloccato?
Sembra così difficile Crystal Report invece alla fine con pochi passaggi si riescono ad ottenere ottimi risultati.

Aspetto tue notizie.
Ciao

David

MauriBS Profilo | Newbie

Purtroppo non ho più avuto tempo di fare altri esperimenti. Attenderò con ansia il tuo articolo.
Ciao.

Maurizio

Anonimo Profilo | Senior Member

Sbav sbav....attenderei anchio se fosse possibile:)

Brainkiller Profilo | Guru

Ciao a tutti e due.
Sono stati aggiunti questa notte due articoli per creare Report con Crystal.
Il primo è un vero e proprio tutorial su come crearne uno.
Il secondo sono semplicemente dei tips per migliorare la grafica dei grafici creati.

Costruire Report con ASP.NET e Crystal Reports
http://www.dotnethell.it/articles/article.aspx?ArticleID=87

Migliorare la qualità dei grafici nei Crystal Reports
http://www.dotnethell.it/articles/article.aspx?ArticleID=88

Ciao
Fatemi sapere come li trovate.
David

MauriBS Profilo | Newbie

Ho appena letto l'articolo riguardante Crystal Report. E' spiegato molto chiaramente, e ho capito perchè io non riuscivo. Appena posso faccio una prova e poi ti faccio sapere.

Ciao.

memole741 Profilo | Newbie

Sto cercando di creare un Report dinamicamente in Crystal Report utilizzando un dataset però non riesco a parametrizzare la query che i riempi il dataset o meglio se faccio una count mi restituisce i record che vorrei vedere nel report ma il report una volta legato al database o non mi fa vedere risultati o mi restituisce tutto il contenuto delle tabelle che ho legato precedentemente al report, cosa devo fare?
Insomma vi mostro il codice che ho scritto vi prego aiutatemi!!!

Dim Myconnection As New OleDb.OleDbConnection()
Myconnection.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:\Mio.mdb;"

Dim MyCommand As New OleDb.OleDbCommand()

MyCommand.Connection = Myconnection

MyCommand.CommandText = "Select * from Tabella where Campo like 'M%'"


MyCommand.CommandType = CommandType.Text
Dim MyDA As New OleDb.OleDbDataAdapter()
MyDA.SelectCommand = MyCommand

Dim myDS As New Dataset1()

MyDA.Fill(myDS, "Tabella")

Response.Write(myDS.Tables("Tabella").Rows.Count())


Dim oRpt As New CrystalReport1()

oRpt.SetDataSource("Tabella"))

CrystalReportViewer1.ReportSource = oRpt

Mi è venuto il dubbio che forse non è così che si utilizza una dataset......
Grazie in anticipo.


Brainkiller Profilo | Guru

Allora, io molto più semplicemente di solito il dataset lo creo e lo riempio così, ci sono molte meno istruzioni:

Dim ds As New DataSet()
Dim conn As New OleDb.OleDbConnection()
conn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\main.mdb;"
conn.Open()

Dim da As New OleDb.OleDbDataAdapter("SELECT * FROM USERS", conn)
da.Fill(ds, "Tabella")

Poi probabilmente, l'errore potrebbe essere in questa riga qui:

oRpt.SetDataSource("Tabella")

Da quello che mi risulta al metodo SetDataSource devi passare il Dataset vero e proprio quindi:

oRpt.SetDataSource(ds)

e non una stringa.

Dall'help vistual studio ti incollo un frammento di codice più completo:

Private Function SetDataSource _
(ByVal conn As String, ByVal query As String, _
ByVal dataSet As DataSet)

' Use ADO.NET object model to set up the connection
' information.
Dim oleConn As New OleDbConnection(conn)
Dim oleAdapter As New OleDbDataAdapter()
oleAdapter.SelectCommand = New OleDbCommand(query, oleConn)

' Connect to the data source, fetch the data, and disconnect
' from the database.
oleAdapter.Fill(dataSet, "Customer")

' Pass the populated data set to the report.
Report.SetDataSource(dataSet)
End Function

Fammi sapere se te la cavi in qualche modo.
Ciao
David

memole741 Profilo | Newbie

Grazie per i suggerimenti ma il mio problema non sta nel riempire il dataset e poi se nell'istruzione oRpt.SetDataSource(".....") gli passo il dataset mi appare questo messaggio quando lancio il programma:
---------------------------------------------------------------
Server Application Unavailable
The web application you are attempting to access on this web server is currently unavailable. Please hit the "Refresh" button in your web browser to retry your request.
Administrator Note: An error message detailing the cause of this specific request failure can be found in the system event log of the web server. Please review this log entry to discover what caused this error to occur.
---------------------------------------------------------------

Nell'altro modo invece funziona, forse è il mio PC che non va.

Una volta riempito il dataset comunque dovrei riuscire a legarlo al mio report-modello variando la condizione where ed è proprio questo che non riesco a fare.
Mi puoi aiutare in questo senso?
Grazie per la tua disponibilità.

Brainkiller Profilo | Guru

Probabilmente questo tipo di errore : Server Application Unavailable probabilmente è proprio relativo al computer.
Le altre applicazioni Web che hai costruito ti funzionano?
Hai provato a dare una riavviata alla macchina o eventualmente a IIS ?

Nel frattempo credo entro domani o domenica di preparare un nuovo articoletto su come creare report utilizzando dei Database su Access e su come filtrare i dati.
Se hai voglia e tempo di aspettare potrai leggerlo entro breve.

Ciao
David

memole741 Profilo | Newbie

Sì, effettivamente ho installato Visual Studio .Net prima di IIS e per farlo funzionare ho dovuto registrare una dll manualmente infatti quando creo un nuovo progetto ancora non riesco a fargli creare la directory in modo automatico ma devo predisporre tutto per far funzionare poi l'applicazione.
In attesa del tuo articolo cercherò di risolvere questo di problema.
Grazie mille.
Ciao Silvia

Brainkiller Profilo | Guru

Allora, anche per questo c'è una soluzione.
Infatti quando si installa prima VS.NET e poi IIS oppure quando rimuovi e reinstalli IIS, è necessario lanciare dal prompt questo comando:

aspnet_regiis.exe -i

Ulteriori istruzioni su come lanciare questo comando le trovi qui:
http://support.microsoft.com/default.aspx?scid=kb;en-us;306005

Ciao
David De Giacomi

memole741 Profilo | Newbie

Con i tuoi prezionsi consigli e una buona dose di fortuna sono riuscita a risolvere i miei problemi.
Di seguito riporto il codice che ho usato per passare la clausola where al mio report collegato al dataset, dovesse essere utile a qualcuno in preda al panico :oP

Dim reportFields As FormulaFieldDefinitions = oRpt.DataDefinition.FormulaFields()
Dim SelectFormula As String
SelectFormula = "{TABELLA.CAMPO} = 'STRINGA'"
oRpt.RecordSelectionFormula = SelectFormula ' existing formula + custom
oRpt.DataDefinition.RecordSelectionFormula = SelectFormula
oRpt.DataDefinition.FormulaFields(0).Text = oRpt.RecordSelectionFormula

Grazie ancora per la tua disponibilità.
Ciao Silvia.

Brainkiller Profilo | Guru

Si infatti si può anche fare così.
Ci sono diversi modi, uno possibile è quello che hai indicato, ma puoi anche scrivere direttamente la query come avevi indicato precedentemente, come per esempio SELECT * FROM Utenti WHERE Utente Like 'M%' per visualizzare solo quelli che iniziano per M.
E sostituire il parametro 'M%' con qualcosa che passavi dall'esterno come parametro.

Sono contento che tu abbia risolto il problema.
Torna a trovarci quando hai bisogno.
Ciao

David

MauriBS Profilo | Newbie

Ciao a tutti. Ho provato Crystal Report nelle pagine web. Seguendo l'articolo pubblicato è stato semplicissimo. Io però pensavo che si potessero poi stampare i report senza utilizzare l'opzione di stampa del browser. Se utilizzo l'opzione di stampa del browser al report stesso vengono aggiunti i numeri di pagina, l'indirizzo web ecc. ecc. Purtroppo non è quello che mi servirebbe, non posso ad esempio far stampare una fattura con in calce l'indirizzo della pagina web. Devo rassegnarmi e tornare alla programmazione delle applicazioni classiche per Windows?
Ciao.

Brainkiller Profilo | Guru

Ciao Mauri,
in effetti è vero, la soluzione con Windows Applications è stata sempre la migliore per questo tipo di cose, ma poi inevitabilmente ci si scontra con difficili deploy, call center da mettere in piedi perchè spesso non va qualcosa, allora si è passati al web e tutto sommato funziona abbastanza bene anche questa soluzione.

Ciò che dici è vero e si può risolvere andando su Imposta Pagina di Internet Explorer e rimuovendo i numeri di pagina e l'indirizzo che ti danno fastidio in modo che la pagina stampata è completamente bianca.
Certamente se la tua applicazione viene usata da 1000 client, anche se mi sembra dura che 1000 client debbano stampare fatture, è abbastanza noioso passare su ogni client per modificare le impostazioni pagina anche se si potrebbe ovviare con uno script.

Un'altra soluzione che mi viene in mente in questo momento è questa: con Crystal Report si può anche esportare il report appena visualizzato via Web in un formato diverso per esempio in .pdf e poi eventualmente stampare il pdf senza chiaramente avere scritte non necessarie tipo i numeri di pagina di cui sopra. In più con il formato .pdf si può tenere lo storico delle fatture stampate e addirittura inviare in forma elettronica la fattura al cliente.
Come ti sembra come soluzione?

Avevo intenzione di scrivere degli articoli di integrazione relativi a Crystal Report per fare il binding di Dataset al Report, per connettersi a sorgenti remote diverse da SQL (esempio Access) e per esportare in .pdf o in .xsl il Report.
In questo momento sono un po' occupato quindi li pubblicherò più avanti se ti interessa.

Ti saluto e aspetto tue risposte.
Ciao
David De Giacomi

MauriBS Profilo | Newbie

Ciao.
La fattura che ho citato nel mio precedente messaggio era solamente un esempio, ma la cosa mi potrebbe servire anche per bolle di accompagnamento, ricevute ecc. L'idea che hai lanciato di esportare il report in un file pdf potrebbe essere una buona soluzione. Aspetterò con ansia il tuo prossimo articolo.
Ciao e grazie.

lelem Profilo | Newbie

Datemi una mano per questo errore quando uso la CrystalReportViewer ??!!?? Premetto che ho iniziato da poco ...

Errore server nell'applicazione '/BFSWEB/SorgentiWEB/BFSRicercaScarica'.
--------------------------------------------------------------------------------

Accesso al percorso "C:\Programmi\Microsoft Visual Studio .NET\Crystal Reports\Viewers" negato.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.UnauthorizedAccessException: Accesso al percorso "C:\Programmi\Microsoft Visual Studio .NET\Crystal Reports\Viewers" negato.

Il processo ASP.NET non è autorizzato ad accedere alla risorsa richiesta. Per motivi di protezione, l'identità predefinita del processo ASP.NET è "{nomecomputer}\ASPNET" e dispone di privilegi limitati. Si consiglia di concedere all'identità del processo ASP.NET i diritti di accesso alla risorsa.

Per concedere l'accesso in scrittura ASP.NET a un file, fare clic su di esso con il pulsante destro del mouse in Esplora risorse, scegliere Proprietà e fare clic sulla scheda Protezione. Fare clic su Aggiungi per aggiungere l'utente "{nomecomputer}\ASPNET". Evidenziare l'account ASP.NET e selezionare la casella Scrittura nella colonna Consenti.

Brainkiller Profilo | Guru

Ciao,
probabilmente è un problema di diritti e sicurezza.
Hai garantito all'utente ASPNET la possibilità di accedere a quella cartella?
Sembra comunque strano visto che durante l'installazione di .NET dovrebbe già automaticamente garantire questi diritti visto che si tratta di una cartella di Crystal.
Prova comunque a controllare.
Vai sulla cartella, tasto destro proprietà, guardi sulla linguetta protezione se c'è l'account ASPNET.
Ciao

David De Giacomi

lisac Profilo | Newbie

Vorrei realizzare un crystal report che utilizza dataset.Con visual studio.net ho creato un report denominato CristalReport1 la cui origine dati è il Dataset1 con 4 tabelle.IL problema è che non mi vengono visualizzati i dati(ossia nome e cognome selezionati dalla store procedure "datimodulo", in base all'ultimo record memorizzato nel database.)IL mio dubbio è che sia un problema relativo all'origine dati ossia il dataset, definita nel report.Come devo fare?
IL codice nella pagina asp.net è il seguente:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using CrystalDecisions.CrystalReports.Engine ;

namespace progetto
{
/// <summary>
/// Descrizione di riepilogo per modulo.
/// </summary>
public class modulo : System.Web.UI.Page
{
protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;
progetto.database objDatabase=new progetto.database();

private void Page_Load(object sender, System.EventArgs e)
{

CrystalReport1 oRpt = new CrystalReport1();
DataSet1 dataSet = new DataSet1 ();
SqlConnection conn=objDatabase.connessione();
SqlDataAdapter dataAdapter=new SqlDataAdapter("datimodulo",conn);
// Connettersi al database, recuperare i dati disconnettersi dal database
dataAdapter.Fill (dataSet, "abilitazione");
// Utilizzare il modello di oggetti Report Engine per inoltrare
// il dataset al report
oRpt.SetDataSource (dataSet);
// collegare l'oggetto report con i dati a Web Forms Viewer
CrystalReportViewer1.ReportSource = oRpt;

}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: questa chiamata è richiesta da Progettazione Web Form ASP.NET.
//
InitializeComponent();
base.OnInit(e);

talReport2 oRpt = new CrystalReport2();
DataSet1 dataSet = new DataSet1 ();
SqlConnection conn=objDatabase.connessione();
SqlDataAdapter dataAdapter=new SqlDataAdapter("datimodulo",conn);
// Connettersi al database, recuperare i dati e disconnettersi dal database
dataAdapter.Fill (dataSet, "abilitazione");

}

/// <summary>
/// Metodo necessario per il supporto della finestra di progettazione. Non modificare
/// il contenuto del metodo con l'editor di codice.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}
}

overflow80 Profilo | Newbie

E' con molta tristezza che chiedo aiuto a voi...
Cerco di spiegare brevemnete quello che ho fatto e quello che mi sta succedendo.
S.O. con cui sviluppo XP Professional SP2
Visual Studio 2003 con Crystal Report
Ho crerato una mia applicazione web che visualizza un report Crystal.
Per connettermi alla base dati utilizzo un dataset oppure il wizard.
In locale funziona tutto cioè lanciando l'applicazione da Visual Studio il report lo visualizzo.
Ora voglio portare la mia applicazione su un Server Web dotato di windows 2003 server con framework 1.1
Lancio l'applicazione ma non riesco a visualizzare nessun report ma in compenso visualizzo quest'errore:

"Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: CrystalDecisions.CrystalReports.Engine.LoadSaveReportException: Load report failed."

Cosa succede?

Ma più generalmente, come si fa ad installare il report su un server web?
Grazie anticipatamente per eventuali risposte

overflow80 Profilo | Newbie

Il messaggio d'errore è cambiato....

"Accesso non riuscito.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: CrystalDecisions.CrystalReports.Engine.LogOnException: Accesso non riuscito."

Non so dove sbattere la testa

claudiasguilla Profilo | Newbie

...stesso identico problema! Come hai risolto?

Claudia

claudiasguilla Profilo | Newbie

...stesso identico problema! Come hai risolto?

Claudia
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