Chemin d'accès virtuel: Crystal report Viewer

Signaler
Messages postés
45
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
30 janvier 2014
-
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
-
Bonjour Tous,
je ne sais pas si mon sujet est indiqué pour ce forum... sinon je m en excuse.

j'ai un souci avec mes états Crystal report ils ne s'affichent ni en local sur le serveur ni sur une machine cliente... mais pourtant en mode "debug/release" lancé depuis visual studio tout roule sans problème...

l'erreur suivante est générée:'C:/inetpub/wwwroot/monSite/REPORT/DecompteDefinitifAvecPret.rpt' est un chemin physique, mais un chemin d accès virtuel était attendu.
besoin d'aide SVP

voici mon code..


 protected void Page_Load(object sender, EventArgs e)
        {
            ReportDocument _myCrystalReport = new ReportDocument();
            _myCrystalReport.Load(Server.MapPath("C:/inetpub/wwwroot/monSite/REPORT/DecompteDefinitifAvecPret.rpt"));
            _myCrystalReport.SetDatabaseLogon("", "", @"(local)", "MURCASFASAS", true);
            _myCrystalReport.SetParameterValue("_matricule", DecompteTextBox.Text);
            CrystalReportViewer1.ReportSource = _myCrystalReport;
        }

5 réponses

Messages postés
45
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
30 janvier 2014

l'erreur a évolué j'ai modifié la ligne 4 :
_myCrystalReport.Load(Server.MapPath("~/monSite/REPORT/DecompteDefinitifAvecPret.rpt"));


l'erreur suivante est générée par la ligne 5: Opération non prise en charge. Un document traité par le moteur JRC ne peut pas être ouvert dans la pile C++
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
Salut,

j'utilise le même code que toi, pour charger le report je fais :
(avec le site sur wwwroot/monSite/REPORT/ )

string m_report = "monReport.rpt";

ReportDocument m_doc = new ReportDocument();

string  m_reportPath = Path.Combine(Server.MapPath("./REPORT/"), m_report);

m_doc.Load(m_reportPath);


et ça marche bien.

bye...
merci d'avoir répondu et désolé pour le retard de ma réponse... j'ai testé tel que mentionné plus haut... coté client j'ai aucune erreur mais l état crystal n'est pas visible(à partir du site).. lorsque j'exécute la mm page en mode debug je recois l'erreur suivante:
0x800a1391 -Erreur d'exécution javascript <<bobj>> est indéfini.

la ligne de code générant l erreur est : bobj.crv.stateManager.setComponentState('ContentPlaceHolder1_CrystalReportViewer1__UI',eval('('+document.getElementById('__CRYSTALSTATEctl00$ContentPlaceHolder1$CrystalReportViewer1').value+')'));
Salut yann_lo_san, je reviens encore avec le même problème... j'ai exécuté ton code il marche bien mais quand je change le chemin au niveau du site, rien ne s'affiche et aucune erreur n est générée...


 protected void Page_Load(object sender, EventArgs e)
{
try
{

string m_report = "CrystalReport1.rpt";
ReportDocument m_doc = new ReportDocument();
string m_reportPath = Path.Combine(Server.MapPath("wwwroot/Fasas_Murcas_2/Presentation/"), m_report);
m_doc.Load(m_reportPath);

}
catch (Exception ex)
{
ClientScriptManager cs = Page.ClientScript;
Type csType = this.GetType();
cs.RegisterStartupScript(csType, "myAlert", "<script language=JavaScript>window.alert('" +ex.Message + " -- " + ex.StackTrace + " -- " + ex.TargetSite+ "');</script>");


}
}

je ne sais pas si ce problème est lié à la version de CrystalReport(CRforVS_13_0_7)
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
Salut,

Je ne sais pas si cela à un rapport avec ton erreur, mais
as tu essayé de transformer le répertoire REPORT en dossier virtuel dans IIS ?

Dans l'arborescence du serveur WEB, Click droit sur REPORT, puis Dossier virtuel ou créer l'application,
ce qui permet d'en faire un répertoire virtuel.

bye...
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
Salut,

attention, ton code d'affichage de l'exception risque de ne pas marcher si une quote existe dans le message d'exception.
C'est déjà arrivé pour moi.

Je te conseille donc de faire ceci pour être sur que l'exception soit bien affichée :

cs.RegisterStartupScript(
	csType, 
	"myAlert", 
	"<script language=\"JavaScript\">window.alert(\'" + 
	ex.Message.Replace("\'", " ").Replace("\"", " ") + " -- " + 
	ex.StackTrace.Replace("\'", " ").Replace("\"", " ") + " -- " + 
	ex.TargetSite + "\');</script>");
</code>


Une autre solution est de lancer la page Trace.axd une fois que ta page a fini de charger.

Si par exemple tu utilises l'url :
http://monSite/maPageChargeReport.aspx
et bien tapes dans la barre d'adresse :
http://monSite/trace.axd

tu auras une page contenant toutes les données GET/POST, les variables serveur et client ect... Plus l'erreur en rouge si une exception à été exécutée.
Voir la doc .net pour activer ce moteur de trace automatique et tous les Handler utiles en .AXD

bye...
Slt yann_lo_san,
peux tu me donner les différentes configurations de ton matériel et logiciel(version etc...)? les miennes sont les suivantes:
-visual studio 2012 ultimate
-Crystal Report 13.0.8
-Windows Server 2012 (64bits)
-IIS 8.0

fais tu une configuration particulière pendant le déploiement de ton site?(genre copie d'un dossier ou ajout de balise dans ton fichier webconfig??
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
Salut,

Visual studio 2010
Crystal report 13
Windows server 2003
IIS 6

Pas de config particulière sauf pour le mode trace/debug

Le répertoire Report est un dossier virtuel en lecture/écriture

Sinon as tu tracé cette ligne

Path.Combine(
Server.MapPath("/wwwroot/Fasas_Murcas_2/Presentation/"), m_report));

(J'ai rajouté le slash avant wwwroot)

Cela doit afficher : C: ou D: selon ton serveur

C:\RACINE_DU_SITE\wwwroot\Fasas_Murcas_2\Presentation\leReport.rpt

Es ce bien ce le chemin que tu veux ?