[ vekica @ 17.04.2005. 21:55 ] @
kada stavim na report fajl da mi je datasource moj dataset iz projekta on mi u runtime-u trazi da se logujem na tu bazu. sto je za korisnika ne prihvatljivo.

pitanje pored ostalog: sta stavljate da vam je datasource za report. mozda bazu i neki sql upit ili dataset ili mozda celu bazu?

[ Željko @ 18.04.2005. 09:26 ] @

Napravi xml šemu za tvoj dataset [yourDataSet.WriteXmlSchema("shema.xsd")], zatim u pri design-u crystal report-a stavis da ti je izvor podataka ADO.NET(xml) i izaberes .xsd file koji si napravio("shema.xsd"), i na kraju stavis za tvoj report rpt.SetDataSource(yourDataSet). Na ovaj nacin crystal report je nezavisan od baze podataka, znaci nije bitno odakle ti izvlacis podatke (da li je to baza, text file, xml file ...), bitno je samo da report-u prosledis podatke u formatu koji je opisan u xml šemi.

Nadam se da ce ti odgovor pomoci.

pozdrav Željko
[ Dusannn @ 19.04.2005. 19:13 ] @
Hmm..ako nije njemu, pomogao je meni, jer (slucajno) vec nekoliko dana muku mucim sa tim.
Tako da.. HVALA!
[ vekica @ 20.04.2005. 15:14 ] @
Citat:
bitno je samo da report-u prosledis podatke u formatu koji je opisan u xml šemi.

ok. ali kako? naime ja sve sto vidim od metoda i svojstava za moju kontrolu cristalReportViewer jeste ReportSource. i tu lepo pise da je tip object ali ja tu mogu samo da prosledim string do mog *.rpt fajla.

tako da ja ne vidim tvoj metod rpt.SetDataSource(dataSet);

hvala na odgovoru u svakom slucaju
[ vekica @ 20.04.2005. 15:47 ] @
i ja sam resio. ustvari nisam ni znao da postoji reportDocument komponenta na koju treba da se prijavi kontrola cristalReportViewier.

pa hvala zeljku i poz
[ negyxo @ 22.04.2005. 18:36 ] @
Ima jos nacina. Ja idem preko starog dobrog recordset-a. Doduse ja sam uvek za da se koriste novije stvari u ovom slucaju dataset ali koristim recordset jer se brze podaci ucitavaju pa ako je nekome bitno to evo


tereba samo dadati referencu na neku od ado 2.x library

Code:


ADODB.RecordsetClass rs = new ADODB.RecordsetClass();    
            
string connectionString =  "...";

rs.Open("SELECT * FROM SUcenikMaticniPodaci", connectionString, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic, 1);
                    
MojReport.SetDataSource(rs);



Mozda ce nekom smetati sto se mesaju COM i .NET ali sta da se radi :)


Postoji jos jedna mogucnost da se konektuje a to je preko CrystalDecisions.Shared.ConnectionInfo klase.

evo primera sa msdn-a

Code:

private void SetConnectionInfo (ReportDocument Report, string table, string server, string database, string user, string password)
        { 
            // Get the ConnectionInfo Object.
            TableLogOnInfo logOnInfo = new TableLogOnInfo();
            logOnInfo = Report.Database.Tables[table].LogOnInfo;
            ConnectionInfo connectionInfo = new ConnectionInfo ();
            connectionInfo = logOnInfo.ConnectionInfo;

            
            // Set the Connection parameters.
            connectionInfo.DatabaseName = database;
            connectionInfo.ServerName = server;
            connectionInfo.Password = password;
            connectionInfo.UserID = user;

            Report.Database.Tables [table].ApplyLogOnInfo(logOnInfo);
        }


Nadam se da je pomoglo. Pozdrav