Anmelden

printreport in version 2_8g does not write a PDF file

I have created a simple report with data using a Dot Net database connection to Postgres. All Report Manager tools work fine, including printing and preview of printreport.exe. But printreport.exe in version 2_8g does not write a PDF file (same behaviour at Windows and LINUX). The program ends without errors, but there is no PDF. 

I have decompiled and debugged the Assembly Reportman.Drawing. I have found some strange lines in PrintOutPDF.Print(). When arriving the if clause CurrentCount is 1 and FromPage is also 1 (first page), so the method ends without doing its job. After deactivating the if clause and compiling the Assembly printreport produces a correct PDF file.

public override bool Print(MetaFile meta)
{
	bool flag = base.Print(meta);
	int pageindex = base.FromPage - 1;
	meta.RequestPage(pageindex);
	/*if (meta.Pages.CurrentCount < = base.FromPage)
	{
		return false;
	}*/
	...

Can it be a mistake in my environment, 

Postgres direkt (Npgsql)

Die Verwendung von Npgsql funktioniert bedingt.

Reports mit mehreren Abfragen scheitern offenbar daran, dass mehrere Reader von Report Manager parallel abgerufen werden, was Npgsql nicht erlaubt (Windows, LINUX). Vermutlich ist die Strategie von Reportman.Reporting nicht mit Npgsql kompatibel. Es wären möglicherweise erhebliche Eingriffe in Reportman.Reporting erforderlich.

Reports mit einer einzigen Abfrage funktionieren. Die direkte Verwendung eines Datenbanbanbeiters erreicht man durch Auswahl Dot Net 2 Connection in der Reportvorlage (siehe Datenbankzugänge)

DbProviderFactory registrieren

  • im app.config muss Npgsql als DbProviderFactory eingetragen werden in Sektion
  • Parametrisierung mit @ funktioniert vermutlich, unabhängig davon sollte die Substituierungsvariante im Report Manager funktionieren
< ?xml version="1.0" encoding="utf-8" ?>
< configuration>
< system.data>
  < DbProviderFactories>
  < add name="PostgreSQL Data Provider"
  invariant="Npgsql"
  description=".Net Framework Data Provider for PostgreSQL"
  type="Npgsql.NpgsqlFactory, Npgsql, Version=1.99.1.0,
  Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
  < !-- other provider entries elided -->
  < /DbProviderFactories>
< /system.data>
< /configuration>

Postgres über System.Data.Odbc

per System.Data.Odbc gibt es das Problem mit geöffneten DataReader nicht, damit mehrere Abfragen möglich. Die ODBC-Variante funktioniert unter Windows und LINUX vorbildlich. Hinweise Zur Installation von Postgres-ODBC unter LINUX

Parameter-Ersetzung

  • die Standardparametriesierung funktioniert möglicherweise nicht (festgestellt unter Windows). So wird z.B. der Parameter @INVOICEID nicht ausgeführt, da ein Fehler 'invoceid' gemeldet wird.
  • Als Ausweg kann man den Parametertyp String subst. verwenden. Hierbei werden Parameter bereits durch Report Manager ersetzt. Das funktioniert für Prozeduren (Tabellen, Sichten noch nicht getestet)

 

   
Top

Wir arbeiten mit Software von http://www.campus21.de.

Verantwortlich für angezeigte Daten ist der Webdomain-Eigentümer laut Impressum.

Suche