logo
small logo
  • Produkty
  • Zamów
  • Wsparcie techniczne
  • About
  • Customer panel Wsparcie techniczne
    • en
    • de
    • JP
    • ZH
  • Glówna strona
  • /
  • Articles
  • /
  • Jak używać procedur składowanych z wieloma zestawami danych jako wynikiem?
  • Jak tworzyć wizytówki z aplikacji WinForms

    28 maja 2020

    Jak widać z nazwy, rodzaj aplikacji Windows Forms jest przeznaczony do pracy w środowisku systemu

    read more
  • Jak utworzyć paragon z aplikacji WinForms

    30 maja 2020

    Najprawdopodobniej każdy programista platformy .Net rozpoczynał swoją pracę od aplikacji Windows Forms. Niezliczona liczba takich

    read more
  • Jak połączyć się z bazą danych Sybase SQL Anywhere

    29 lutego 2020

    Baza danych Sybase SQL Anywhere ma szereg przydatnych funkcji, które sprawiają, że bardzo się wyróżnia

    read more
  • Jak programowo utworzyć raport tabelaryczny z natywnego kodu

    8 lutego 2022

    Przypomnijmy sobie dość powszechną sytuację, kiedy trzeba zrobić coś bardzo szybko i przy użyciu tego,

    read more
  • Budowanie biblioteki libgdiplus ze źródła

    2 października 2020

    Korzystając z bibliotek FastReport.NET (Core), FastReport Open Source i FastReport Mono w systemie operacyjnym Linux,

    read more

Jak używać procedur składowanych z wieloma zestawami danych jako wynikiem?

8 maja 2020

Podczas tworzenia raportów często mamy do czynienia z bazami danych, którym daleko do ideału . Różnorodne „funkcjonalności” czasami nas blokują. Na przykład, jak zbudować raport oparty na wielu zbiorach danych, którego wynikiem będą procedury składowane MS SQL? Po utworzeniu źródła danych w raporcie, możemy użyć procedury składowanej w zapytaniu SQL, ale tylko dla konkretnej tabeli. Oznacza to, że będzie ona pobierała tylko pierwszy zestaw danych zwracanych przez procedurę składowaną. W celu wygenerowania wielu tabel z wyników procedury składowanej, należy stworzyć program źródła danych w kodzie własnej aplikacji.

Należy utworzyć połączenie z bazą danych, wykonać procedurę składowaną i wprowadzić jej wyniki do zbioru danych. Następnie przenieść zbiór danych do raportu i zapisać źródło danych w raporcie. W ten sposób podczas tworzenia raportu w projektancie otrzymamy przygotowane źródło danych. Można pójść dalej i programowo połączyć się ze źródłem raportu, aby było już w drzewie danych. Ale najpierw rozważmy pierwszą opcję z prostym dodaniem źródła danych do raportu.

Powiedzmy, że masz kilka aplikacji WinForms, w których generujesz raporty. Dodaj przycisk wywołujący edytor raportów:

1
2
3
4
5
6
7
8
private void button1_Click(object sender, EventArgs e)
 {
 Report FReport = new Report();
 SqlConnection conn = new SqlConnection("Data Source=localhost;AttachDbFilename=;Initial Catalog=salesdb;Integrated Security=True;Persist Security Info=False;User ID=;Password=");
 DataSet data = GetDataSet(conn, "Test");
 FReport.RegisterData(data, "NorthWind");
 FReport.Design();
 }

W tym miejscu tworzymy obiekt raportu, zatytułowany wiersz połączenia bazy danych MS SQL, tworzymy źródło danych raportu i rejestrujemy go w raporcie.  Pobierz źródło danych GetDataSet w następujący sposób:

1
2
3
4
5
6
7
8
9
10
11
public DataSet GetDataSet(SqlConnection connection, string storedProcName, params SqlParameter[] params)
 {
 var command = new SqlCommand(storedProcName, connection) { CommandType = CommandType.StoredProcedure };
 command.Parameters.AddRange(params);
 
 var result = new DataSet();
 var dataAdapter = new SqlDataAdapter(command);
 dataAdapter.Fill(result);
 
 return result;
 }

Ta metoda akceptuje parametry połączenia, nazwę procedury składowanej i możliwe parametry dla procedury składowanej. W naszym przypadku nic nie zdaliśmy. Po utworzeniu połączenia z procedurą składowaną bazy danych jest wykonywana. Wyniki jej pracy są umieszczane w dataAdapter.

Na tym etapie mogliśmy już zakończyć artykuł. Powyższy kod wystarczy, aby utworzyć i zarejestrować źródło danych w raporcie, który będzie dostępny w projektancie, podczas edycji utworzonej na początku obiektu raportu.

Gdy Projektant raportów jest otwarty, zostanie wyświetlony pusty szablon raportu. Źródła danych będą musiały wybrać ustawienia:

 

Możemy jednak poprawić kod i uniknąć dalszych akcji projektowych przy wyborze źródeł danych. Oznacza to, że raport utworzy dodatkowe dane. Aby to zrobić, zakończymy obsługę przycisków:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void button1_Click(object sender, EventArgs e)
 {
 Report FReport = new Report();
 Config.DesignerSettings.DesignerLoaded += DesignerSettings_DesignerLoaded;
 SqlConnection conn = new SqlConnection("Data Source=localhost;AttachDbFilename=;Initial Catalog=salesdb;Integrated Security=True;Persist Security Info=False;User ID=;Password=");
 DataSet data = GetDataSet(conn, "Test");
 
 FReport.RegisterData(data, "NorthWind");
 // activate all data sources by default
 foreach (DataSourceBase source in FReport.Dictionary.DataSources)
 {
 source.Enabled = true;
 }
 FReport.Design();
 }

Jak już zauważyłeś, podpisaliśmy program obsługi zdarzenia pobierania projektanta. Następnie uwzględniamy wszystkie źródła danych w raporcie w pętli. Implementujemy program obsługi dla zdarzenia pobierania projektanta:

1
2
3
4
 private void DesignerSettings_DesignerLoaded(object sender, EventArgs e)
 {
 (sender as Designer).cmdNew.CustomAction += new EventHandler(cmdNew_CustomAction);
 }

Przekazujemy wskaźnik do projektanta raportów zdarzeń. obsługi zdarzeń:

1
2
3
4
5
6
7
8
9
10
 void cmdNew_CustomAction(object sender, EventArgs e)
 {
 Designer designer = sender as Designer;
 
 //StandardReportWizard wizard = new StandardReportWizard(); // you can use any wizard form package
 BlankReportWizard wizard = new BlankReportWizard();
 wizard.Run(designer);
 
 designer.SetModified(this, "EditData");
 }

Utwórz kreator tworzenia pustego raportu.

W rezultacie podczas edytowania pustego raportu otrzymujemy dodane dane:

 

about product zamów
avatar
Dmitriy Fedyashov
Technical Writer
Fast Reports Team: Dmitriy Fedyashov - Technical Writer at Fast Reports
.NET FastReport Data Source WinForms

Add comment
logo
  • 800-985-8986 (English, US)
  • +4930568373928 (German)
  • +55 19 98147-8148 (Portuguese)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314
  • Zamów
  • Pobierz
  • Dokumentacja
  • Opinie użytkowników
  • Jak odinstalować nasze produkty
  • FAQ
  • Tutorial Video
  • Forum
  • Articles
  • Our News
  • Prasa o nas
  • Partnerzy
  • Extended licensing
  • Kontakty

© 1998-2023 by Fast Reports Inc.

  • Poufność