2009-07-27 8 views
1

Ich habe einige Crystal Reports erstellt, die mit Crystal (extern zu Visual Studio) erstellt wurden und jetzt im VS-Projekt geladen sind. Bevor der Bericht in der Vorschau angezeigt wird, richte ich die Berichtsdatenbankinformationen wie diese im Bericht und in allen Unterberichten ein.Crystal Reports - "Der von Ihnen angeforderte Bericht benötigt weitere Informationen"

 var connectionInfo = new ConnectionInfo(); 
     connectionInfo.ServerName = "192.168.x.xxx"; 
     connectionInfo.DatabaseName = "xxxx"; 
     connectionInfo.Password = "xxxx"; 
     connectionInfo.UserID = "xxxx"; 
     connectionInfo.Type = ConnectionInfoType.SQL; 
     connectionInfo.IntegratedSecurity = false; 

     TableLogOnInfo logon = table.LogOnInfo; 
     table.LogOnInfo.ConnectionInfo = connectionInfo; 
     table.ApplyLogOnInfo(logon); 

Der Bericht korrekt angezeigt, wenn es anfänglich angesehen wird, aber wenn ich auf die nächste Seite in dem Bericht Vorschau gehen bekomme ich die Meldung: „Der Bericht, den Sie erfordert weitere Informationen angefordert“ und werden für die Datenbank-Anmeldeinformationen aufgefordert nochmal. Sobald ich es hier eingegeben habe, werde ich nicht mehr aufgefordert. Es scheint, dass die ursprüngliche ConnectionInfo, die ich eingerichtet habe, nicht über die erste Seite hinausgeht.

I Kristall XI bin mit und Visual Studio 2008.

Antwort

5

ich den besten Weg gefunden habe, um einen Fehler zu beheben, ist die Frage zu Stackoverflow und 5 Minuten später arbeiten, es selbst zu veröffentlichen aus. Unnötig zu sagen, dass ich das herausgearbeitet habe.

Neben der Einstellung aller Anmeldeinformationen in den Berichtsobjekten muss ich dies auch in der Crystal Viewer-Komponente in ASP.NET tun. Also schreibe ich einfach einen Code wie diesen und alles funktioniert, keine Eingabeaufforderungen.

<CR:CrystalReportViewer Height="500px" ID="Viewer" runat="server" /> 

var connectionInfo = new ConnectionInfo(); 
    connectionInfo.ServerName = "192.168.x.xxx"; 
    connectionInfo.DatabaseName = "xxxx"; 
    connectionInfo.Password = "xxxx"; 
    connectionInfo.UserID = "xxxx"; 
    connectionInfo.Type = ConnectionInfoType.SQL; 
    connectionInfo.IntegratedSecurity = false; 

for (int i = 0; i < Viewer.LogOnInfo.Count; i++) 
{ 
    Viewer.LogOnInfo[i].ConnectionInfo = connectionInfo; 
} 
+0

hallo Craig, werden Sie bitte erarbeiten this.Means: Ich bin in Crystal-Bericht, und ich auch die gleichen problem.where mit Blick auf diesen Code hinzuzufügen und wie, bitte . danke im voraus –

+0

@Craig. Ich habe meinen Kopf für eine Weile an die Wand geschlagen und hoffe, dass deine Lösung für mich funktioniert. Ich kann aus deinem Code nicht sagen, hast du die Var und Code in den CodeBehind gesetzt? Oder als Javascript auf der Seite? – davids

+0

Es ist in Code hinter. Sie müssen möglicherweise auch durch Unterberichte recursen und Verbindungsinformationen für alle festlegen. – Craig

1

setzen Sie Ihre Codierung Ereignis während binden Bericht nicht setzen IsPostBack = false Bedingung

Beispiel

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Dim dt As New dsPrintRevisionStatus 
    Try 
     lblHeader.Text = Request.QueryString("name") 
     If lblHeader.Text = "Report- Print Revision Status" Then 
      Dim rpt As New rpt_PrintRevisionStatus 
      rpt.SetDataSource(sqlHandler.ExecuteDataTable("SELECT * FROM [Print Revision Status]")) 
      crtViewer.ReportSource = rpt 
      crtViewer.DataBind() 

     End If 
    Catch ex As Exception 
     lblError.Text = ex.Message 
    End Try 
End Sub 
2

Verwendung Datentabelle statt Data Set .. Es laden funktioniert ..

3

Versuchen Sie zu setzen die EnableDatabaseLogonPrompt Eigenschaft in der Crystal Report Viewer zu false;

0

Ich hatte das gleiche Problem, aber ich fand eine einfache Lösung. d. h. ersetzen Sie einfach dataset durch die data table und es wird gut funktionieren.

0

Wenn Sie die Anmelde Informationen hinzugefügt haben, wie folgt,

 LogInfo.ConnectionInfo.ServerName = "mcqueen"; 
     LogInfo.ConnectionInfo.Password = "abc123"; 
     LogInfo.ConnectionInfo.UserID = "sa"; 
     LogInfo.ConnectionInfo.DatabaseName = "tbboss"; 

     crysViewer.LogOnInfo.Add(LogInfo); 

einfach gesagt die crysViewer.LogOnInfo.Add (loginfo); am Ende der Crystal Viewer Parametereinstellungen. Wie folgt.

LogInfo.ConnectionInfo.ServerName = "mcqueen"; 
    LogInfo.ConnectionInfo.Password = "abc123"; 
    LogInfo.ConnectionInfo.UserID = "sa"; 
    LogInfo.ConnectionInfo.DatabaseName = "tbboss"; 


    int exportFormatFlags =(int)(CrystalDecisions.Shared.ViewerExportFormats.PdfFormat | CrystalDecisions.Shared.ViewerExportFormats.ExcelFormat); 
    crysViewer.AllowedExportFormats = exportFormatFlags; 
    crysViewer.ReportSource = Server.MapPath("Reports/Report1.rpt"); 
    crysViewer.ParameterFieldInfo = paramFields; 

    crysViewer.LogOnInfo.Add(LogInfo); 
0

Verwenden EnableDatabaseLogonPrompt, um zu sehen, den tatsächlichen Fehler

Verwandte Themen