fredag, december 18, 2009

Crystal Reports

Nu när jag jobbar i verkliga livet så har jag stött på en enorm mängd saker man hade kunnat blogga om. Intressanta fenomen som gamla utvecklare som är fast i sina hjulspår, chefer som är otekniska och bara vill sälja, konsulter som är jättetrevliga men man frågar sig vilken nytta de egentligen gör.

Ja, jag jobbar hos Dilbert, kort och gott. Men nöjd är jag för det, jag trivs och jobbet är roligt. Kanske mer om det senare.

De senaste dagarna har jag suttit och bråkat med Crystal Reports och upptäckt att det är ett riktigt monster. Det är lite märkligt dokumenterat och det är kinkigt med indatat. Dynamiska kolumner? Glöm det!

Om du inte vill köra SQL-frågor direkt till CR utan något lite mer dynamiskt och kanske genom något API (som i mitt fall) så finns det egentligen bara en lösning. Du får göra en klass, en ArrayList med objekt, ladda klassen i CR-rapportgeneratorn och sen göra lite fulhack.

rD = new ReportDocument();
string reportPath = Server.MapPath("CrystalReport.rpt");
rD.Load(reportPath)
rD.SetDataSource(aL);
CryView.ReportSource = rD;

Man måste gå genom reportdocuments, ladda rapporten man genererat på klassen och sen ArrayListen som datasource. Sen koppla en viewer mot den. Alla exempel på internet verkar förutsätta att man vill använda sig utav wizards och en direkt db-koppling, men det kan väl inte vara alla som vill generera sina rapporter den vägen? Inte jag iaf.


För övrigt så hittade jag den bästa dokumentationen här: http://www.sdn.sap.com/irj/boc/sdklibrary 
Crystal Reports .NET SDK  hade vad jag letade efter.


Njaja, nu ska jag knacka vidare.