Programování sestavy RLDC   zodpovězená otázka

VB.NET

Nemá někdo prosím ponětí, jak ve VB2005 programovat sestavu pro ReportViewer kódem? Prohledal jsem mnoho vláken a nikde jsem smysluplné řešení nenalezl.

Mám na mysli: v nějakém Formu je umístěn ReportViwer a v určitém okamžiku bych rád vygeneroval sestavu, jejíž vzhled bude závislý na druhu zadaných dat v DB - proto ji nelze připravit dopředu a pak jen plnit daty. Jde o to vyrvořit sestavu, udělit jí nějakej datasource, vytvořit v sestavě zobrazovací pole, čáry, atd... no a pak ji přiřadit ReportVieweru.

Nemá někdo nějakej tip? Předem díky za ochotu odpovídat. Václav.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nevím jestli jsem vás dobře pochopil, jestli chcete generovat dynamicky report, nebude to nic jednoduchého. Pokud máte na mysli vytvořit spojení dat na report ve formu tak já to dělám takto.

        private void Form1_Load(object sender, EventArgs e)
        {
            this.reportViewer1.Visible = true;
            this.reportViewer1.LocalReport.ReportEmbeddedResource = "namespace+nazev reportu";
            this.reportViewer1.LocalReport.DataSources.Clear();
            ReportDataSource RDSUniversal;
            int iForEachValue = 0;

            foreach (DataTable dt in m_dtReport)
            {
                RDSUniversal = new ReportDataSource(m_sReportDatasourceName[iForEachValue].ToString(),dt);
                this.reportViewer1.LocalReport.DataSources.Add(RDSUniversal);
                iForEachValue += 1;
            }

            this.reportViewer1.RefreshReport();   
        }

Z jakého důvodu potřebujete to generovaní samotného reportu, nemůžete jich třeba vytvořit víc a potom jenom podmínkou spustit ten kterej potřebujete?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Přesně sice nechápu, proč nemůžeš definovat sestavu, ale kdysi jsem řešil možná něco podobného. Používám však mnoha lidmi zatracovaný CrystalReport.

Udělal jsem docela složitý report, jehož chování a vzhled byl závislý na parametrech reportu. Program pak předal příslušné parametry, datasource a o vše ostatní se pak postarala logika napsaná v rpt souboru. Možná bude mít podobný model i microsoftí reporter.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Crystal Reports poskytuje API pro programové vytváření a manipulaci se sestavami, ovšem bude to extrémě pracné. Asi tak jako kdybyste chtěl celé uživatelské rozhraní aplikace napsat ručně bez pomoci designéru.

Samotnou sestavu představuje třída ReportDocument. Všechno co se dá navrhnout vizuálně se dá napsat i programově.

http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, to je pravda. Nicméně doufám, že tazatel nehodlá budovat vlastní generátor sestav. Je pravděpodobné, že bude chtíl měnit pouze design nebo interpretaci zobrazovaných dat. Není pravděpodobné, že by v jednom reportu chtěl mít v jednom případě koláčový graf zobrazující počet koček v pražských čtvrtích a ve druhém případě tabulku vývoje kurzu dolaru. Třída ReportDocument a ReportParams dokáže docela výrazně ovlivňovat vhodně navržený report.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pánové, děkuji za příspěvky. Pokusím se objasnit proč potřebuji dynamicky vytvářet sestavu, možná vás někoho napadne jiné řešení.

Moje aplikace vytváří montážní výkresy určitého zařízení a v této sestavě se má zobrazit schematické zobrazení zažízení (pohled na svorkovnice) s čísly spojů. Potíž je ovšem v tom, že zařízení je vždy skládané z různých komponent a každá komponenta má jiný počet a rozmístění svorek. Na jednom patře může vedle sebe být např. 3x relé, 2x pojistka, 5x něco jiného, atd. Proto nelze sestavu nadefinovat dopředu, ale asi ideálně při generování sestavy. Skladba zařízení podle umístění jednotlivých zařízení (adresy: patro, pozice na patře) k dispozici samozřejmě je - v tabulce.

Teoreticky další možností by mohlo být nadefinování vzhledu jednotlivých součástí (těch je omezený a známý počet) ve formě podsestav. Hlavní sestava by pak při generování vybírala potřebné součásti a skládala je na určitém patře vedle sebe. To by bylo velice elegantní, ale netuším jak to udělat. Kdyby měl někdo zájem mi poskytnout pomoct, mohu poslat mailem technický výkres, ke kterému bych se chtěl sestavou dopracovat nebo případně ještě podrobněji popsat problematiku.

Pomoc, která mne dokáže dovést k vyřešení této zálešitosti jsem ochoten náležitě odměnit. Pánové, děkuji předem za trpělivost a pomoc. Díky Venca

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To jsi měl říci dřív. Řešil jsem naprosto stejný problém (tedy rozmístění různých el. prvků na různých místech) a nakonec jsem (z důvodu jednoduchosti) vybavení rozvaděče zobrazoval jako HTML dokomunent ve WebBrowseru komponentě. Sice jsem silně zvažoval použít RTBox, ale jaksi jsem to nedotáhl do konce. Ale mám to zčásti odzkoušeno a jde to docela elegantně. Stačí si trochu nastudovat definici RTF formátu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No nějak mi ale stále nedochází co je vlastně v té tiskové sestavě? Obrázek a seznam součástek?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback