2010-03-04 8 views
0

J'ai un problème sérieux avec les rapports de cristal. Lorsqu'il est exécuté dans mon environnement de développement ou débogué sur ma machine locale, il fonctionne correctement.Crystal rapporte .net Visual Studio 2008 édition groupée

mais quand l'application est publiée sur un serveur Windows 2003, il a la redoutée « Le rapport demandé nécessite plus d'informations » message

Je n'ai pas eu la chance d'essayer de se débarrasser de ce message

Tout le monde savoir ce que je peux essayer?

Voici un tas plus d'infos. J'utilise un espace réservé dans la page ASPX et ensuite définir l'utilisateur/mot de passe et la base de données dans le codebehind Je ne pouvais pas le faire fonctionner avec un jeu de données et a constaté que je devais assigner la connexion ODBC dans le cr concepteur. puis dans le code derrière changer les détails ci-dessus selon les besoins.

Cela se fait parce que le même rapport peut obtenir les données à partir de 3 différentes bases de données (développement en direct et de la formation)

protected override void Page_Load(object sender, EventArgs e) 
{ 
    base.Page_Load(sender, e); 

    CrystalReportSource1.ReportDocument.Load(Server.MapPath(@"~/Reports/Report5asp.rpt")); 
    CrystalReportViewer1.ReportSource = ConfigureCrystalReports(CrystalReportSource1.ReportDocument,CrystalReportViewer1); 

    // parameters 
    CrystalReportViewer1.ParameterFieldInfo.Clear(); 
    AddParameter("DIid", _app.Data["DIid"], CrystalReportViewer1.ParameterFieldInfo); 
    AddParameter("EEid", _app.Data["EEid"], CrystalReportViewer1.ParameterFieldInfo); 
    AddParameter("CTid", _app.Data["CTid"], CrystalReportViewer1.ParameterFieldInfo); 

} 


public ReportDocument ConfigureCrystalReports(ReportDocument report, CrystalReportViewer viewer) 
{ 
    String _connectionString = _app.ConnectionString(); 
    String dsn = _app.DSN(); 
    SqlConnectionStringBuilder SConn = new SqlConnectionStringBuilder(_connectionString); 


     TableLogOnInfos crtableLogoninfos = new TableLogOnInfos(); 
     TableLogOnInfo crtableLogoninfo = new TableLogOnInfo(); 
     ConnectionInfo crConnectionInfo = new ConnectionInfo(); 
     crConnectionInfo.ServerName = dsn;// SConn.DataSource; 
     crConnectionInfo.DatabaseName = SConn.InitialCatalog; 
     crConnectionInfo.UserID = SConn.UserID; 
     crConnectionInfo.Password = SConn.Password; 
     crConnectionInfo.Type = ConnectionInfoType.SQL; 
     crConnectionInfo.IntegratedSecurity = false; 

     foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in report.Database.Tables) 
     { 
      crtableLogoninfo = CrTable.LogOnInfo; 
      crtableLogoninfo.ConnectionInfo = crConnectionInfo; 
      CrTable.ApplyLogOnInfo(crtableLogoninfo); 
     } 

     return report; 

    } 

Comme il est dit ceci fonctionne très bien sur ma machine XP utilisée pour le développement lorsqu'ils sont déployés sur winserver 2003 I obtenir l'erreur

Quelques informations supplémentaires intéressantes

je me suis déplacé le développement de ma machine à la maison pour que je puisse travailler sur le problème ce week-end.

Alors maintenant je développe le débogage et les tests sur la même machine!

Dans VS2008, je peux modifier et afficher un aperçu des rapports sans problèmes Si je lance le débogueur, je peux voir les rapports dans le navigateur sans problème

Mais si je publie le site à un autre dossier sur le même machine et lancez IIS et essayez de naviguer vers un rapport, je reçois l'erreur susmentionnée. Tout le reste fonctionne comme prévu. IIS fonctionne sous des autorisations différentes que VS2008, donc c'est peut-être quelque chose à voir avec cela, mais j'ai essayé beaucoup d'autorisations différentes et je ne peux pas le faire fonctionner.

Répondre

0

La solution que j'ai trouvée qui fonctionnait était de ne pas utiliser ODBC du tout. Au lieu de cela j'ai peuplé les rapports d'un ensemble de données. Si j'avais su à quel point c'était facile, je l'aurais fait depuis le début.

-1

Votre visionneuse de rapports Crystal est-elle intégrée à la page ASPX et non au code? Si c'est le cas, essayez de déplacer le code sur le code derrière.

De même, si vous liez un dataset comme source de données, essayez plutôt de lier la datatable à l'intérieur du dataset.

+0

J'ai inclus un code source. J'espère que cela mènera à une solution. Je n'ai jamais utilisé CR auparavant et je ne le ferai probablement plus jamais – DeveloperChris

+0

J'ai ajouté quelques informations pertinentes. le plus important, il échoue lorsqu'il est vu en utilisant IIS sur la machine de développement. mais fonctionne dans VS2008 – DeveloperChris

+0

Salut, Avez-vous également copié les fichiers rpt (ou tout le dossier "Report") à l'emplacement de déploiement? Les fichiers rpt sont nécessaires pour exécuter les rapports pendant l'exécution. –