[C#] Query designer do dowolnej bazy


(Marcin Obala) #1

Cześć

 

Poszukuje oprogramowania, w którym ktoś może sobie zaprojektować raport podpinając się pod jakąś bazę. Mam bazę danych, tabelki, chciałbym teraz jakiś designer w którym mógłbym zaznaczyć kolumny, które chcę w raporcie, ustawić grupowanie po czym, wykresy były by marzeniem, całość można by było zapisać do pliku z raportem i następnym razem wybrać tylko plik, ewentualnie ustawić jakieś daty i dostać raport. Pytanie jest odnośnie gotowego rozwiązania. Jednak druga sprawa to w razie gdy nie znajdę czegoś takiego to w jaki sposób najlepiej rozwiązać łącznie się do baz danych które mogą mieć całkowicie inną zawartość? W entity framework klasy są spójne z bazą. W przypadku zwykłych zapytań to mógłbym generować ręcznie zapytania na podstawie tabelek ale to rozwiązanie nie jest zbyt ładne.


(Ryan) #2

Dla SQL Servera jest Report Builder. Do innych baz - musisz pogooglać, ale podobno BIRT jest OK.

http://www.microsoft.com/en-us/download/details.aspx?id=6116

http://www.eclipse.org/birt/

Druga część pytania jest dla mnie kompletnie niezrozumiała. Co to znaczy “łączenie się do baz które mogą mieć całkowicie inną zawartość”? To normalne, że bazy zawierają jakąś treść, która się zmienia. Inną od czego? W EF klasy nie są spójne z bazą - EF tworzy obiekty ad hoc na podstawie zapytań oprogramowanych przez autora. Końcówki też nie rozumiem - to normalne, że zapytania generuje się na podstawie “tabelek”. Bo czegóż by innego? :S


(Marcin Obala) #3

W drugiej części miałem na myśli to, że schema bazy będzie inna. W entity framework póki co jedynie widzę modele które są skonfigurowane pod jedną konkretną bazę. W modelu mam 3 tabelki z jakiejś konkretnej bazy i nie dam rady (ja nie dam rady) napisać aplikacji przy pomocy entity framework gdzie będą miał kilka baz z zupełnie innymi tabelami i jakoś uniwersalnie to obsłużyć. A co do końcówki, nie chcę generować zapytań na zasadzie tekstu. Musiałbym zajrzeć do bazy master, jakoś wyciągnąć informacje jakie pola mają tabele, klucze i ogólnie cały schemat bazy, następnie to gdzieś zapisać, w momencie gdy użytkownik będzie tworzył sobie raport to na podstawie tego co poklikał wygenerować TEKSTOWO zapytanie.

 

Mówię oczywiście ze swojej perspektywy a nie ze strony tego co oferuje platforma .NET. Wielu rzeczy po prostu jeszcze nie wiem.


(pat.wasiewicz) #4

Dlaczego? Jeżeli chcesz, aby Twój program obsługiał bazę danych niezależnie od scheme, to będziesz musial to w ten sposób robić. Oczywiście wycigając dynamicznie informacje o tabelach, jej kolumnach itd z tabel / widoków systemowych. Do tego z pewnością przyda się ADO.NET (http://www.csharp-station.com/Tutorial/AdoDotNet). To, jak wyciągnac takie info. jak lista tabel, kolumny tabeli, typy itd znajdziesz na MSDNie (np. http://msdn.microsoft.com/en-us/library/ms186250.aspx). Oczywiście trzeba pamiętać o sql injection przy ADO.NET (entity framework dba o to automatycznie) - służą do tego parametry (http://msdn.microsoft.com/pl-pl/library/yy6y35y8%28v=vs.110%29.aspx)).