Alexander, Alexander, Jag har inte hittat någon bra dokumentation vad den menar med objekt som parameter. Alexander, <code>GetManifestResourceStream
HEJ!
Någon som fattar varför inte detta går?
/Alexander
<code>
'Denna funkar fint om man inte vill baka in rapporten i exe-filen.
Me.CrystalReportViewer1.ReportSource = "..\\rapporter\" & Rapportfil
'Med denna tycker crystal att det är en felaktig rapport....
Dim thisExe As System.Reflection.Assembly
thisExe = System.Reflection.Assembly.GetExecutingAssembly()
Dim file As System.IO.Stream = _
thisExe.GetManifestResourceStream("Bilverkstad.Tvättade.rpt")
Me.CrystalReportViewer1.ReportSource = file
</code>Sv: GetManifestResourceStream
Vad får du för felmeddelande? Är du helt säker på att du har anget korrekt resursnamn och att du har valt att din rapport är en <b>embedded resource</b> i ditt projekt? Prova att köra följande kod för att lista alla resourcer i din assembly.
Dim Resources As String()
Resources = Me.GetType().Assembly.GetManifestResourceNames()
Dim Resource As String
For Each Resource In Resources
' Skriv ut Resource på valfrittsätt, kanske me
' Debug.WriteLine() metoden så du ser det i
' Output fönstret
Debug.WriteLine(Resource)
Next
Hoppas det hjälper!
Sv: GetManifestResourceStream
Tackar för svaret!
Namnet är rätt och den finns i embedded resource.
Har löst det med detta...
Sparar ner till en temporär fil som sedan läses upp.
Borde finnas snyggare sätt...
Hjälp önskas fortfarande!
/Alexander
<code>
Dim thisExe As System.Reflection.Assembly
thisExe = System.Reflection.Assembly.GetExecutingAssembly()
Dim file As System.IO.Stream = _
thisExe.GetManifestResourceStream("Bilverkstad." & meRapportfil)
Dim fs As New FileStream("Temp.rpt", FileMode.Create)
Dim ret As Integer
fs.Position = 0
Do
ret = file.ReadByte()
If ret < 0 Then Exit Do
fs.WriteByte(ret)
Loop
fs.Close()
Me.CrystalReportViewer1.ReportSource = "Temp.rpt"
</code>Sv: GetManifestResourceStream
Kollade lite snabbt på dokumentationen för <b>CrystalReportViewer</b> klassen och den höll verkligen inte samma standard som övrig .NET dokumentation! Det står bara att <b>ReportSource</b> tar ett <b>Object</b> som parameter, har du kunnat bekräfta att denna kan vara en stream?
Det kanske bara fungerar med ett filnamn, men då tycker jag att man borde gjort den till <b>String</b> istället. Samtidigt så om den skall kunna vara olika typer av käller så är den korrekta lösningen att använda metod övelagring istället... verkligen dåligt det där =)Sv: GetManifestResourceStream
Jag misstänker STARKT nu att stream inte funkar bra.
De exemplen jag sett har varit med sökväg till fysisk fil...lite dåligt om det bara går, eller?Sv: GetManifestResourceStream
Tycker hela det objektet var dåligt dokumenterat och kodat. Skulle tippa på att de gjort en COm wrapper runt den som bara mappar direkt till COM API:t och inte en wrapper som använder sig av de funktioner som .NET erbjuder (t.ex overloading).Sv: GetManifestResourceStream
'SÅ HÄR SKALL DET VARA i .NET!!!
Dim rpt As New MinCrystalReport 'Den rapport man har skapat
rpt.SetDataSource(Me.DataSet_Data) 'Ifall man vill skicka med data
CrystalReportViewer1.ReportSource = rpt 'Kopplar ihop med viewern
</code>