Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak w C# zrobić fakturę? Jak wydrukować zawartość formatki?

DarknessWalker 21 Maj 2011 18:01 4064 2
  • #1 21 Maj 2011 18:01
    DarknessWalker
    Poziom 10  

    Witam

    Wie ktoś może jak w C# zrobić fakturę na której są dane sprzedawcy i kupca oraz tabele z produktami zakupionymi i żeby przenieść dane z programu na tą fakturę (dane kupca i sprzedawcy do odpowiednich miejsc na fakturze a do tabelki nazwy, opisy i ceny produktów)?
    Próbowałam robić na drugiej formatce, ale nie wiem jak wydrukować zawartość formatki.

    0 2
  • Pomocny post
    #2 21 Maj 2011 20:59
    marcinj12
    Poziom 40  

    Jak to zwykle bywa są (przynajmniej) dwie szkoły: falenicka i otwocka :)
    Szkoła pierwsza to użyć GDI, druga - gotowych komponentów do raportowania. Ewentualnie zrzucać wszystko do przygotowanego w Excelu szablonu i drukować Excela "ręcznie".

    Na drukowanie formatki nie licz - o ile jest to możliwe, to rezultaty są fatalne, to jest tak jakbyś zrobił printscreena i drukował bitmapę, czcionka jest niewyraźna, nie masz możliwości "podzielenia" wszystkiego na wiele stron...

    Możesz użyć drukowania z wykorzystaniem GDI: wtedy samemu podstawowymi operacjami graficznymi typu DrawString, DrawLine czy DrawRectangle "rysujesz" sobie stronę do wydruku.

    Zaletą jest to, że możesz sobie totalnie spersonalizować stronę: obrazki w dowolnym miejscu, różne kroje czcionek, wymyślne kształty - nie ma z tym problemu.

    Wada - jeżeli nie znasz GDI chwilę zajmie opanowanie jego podstaw, jest trochę "zabawy" żeby zaprojektować stronę (chociaż jak już raz to zrobisz porządnie, a jeszcze lepiej napiszesz sobie jakąś uniwersalną klasę - to potem do innego wydruku robisz tylko kopiuj-wklej i drobne modyfikacje). Dodatkowo jest parę ukrytych problemów które wychodzą w trakcie - np. marginesy drukarki, która każda może mieć inne (ten sam wydruk na dwóch różnych drukarkach może wyglądać nieco inaczej jeśli się tego nie uwzględni).


    Drugie rozwiązanie to użyć gotowe biblioteki - komercyjne CrystalReports, całe mnóstwo różnych darmowych i płatnych - trzeba poszukać na necie...

    Zaletą jest to że ktoś już to wszystko zaprojektował, a rola programisty polega na odpowiednim połączeniu (nierzadko w wizualnym edytorze) odpowiednich pól czy zmiennych z odpowiednimi polami w raporcie. Generalnie przypomina to robienie raportów w MS Access: projektujesz raport "przeciągając" elementy na formę i wskazujesz które dane mają pobierać.

    Wadą jest (nieco) mniejsza możliwość ingerencji w wygląd raportu - jak chcesz zrobić coś niestandardowego, no i jednak aby opanować nowe narzędzie i poznać jego opcje też potrzeba trochę czasu. Ich twórcy stawiając na uniwersalność czasem przesadzają z ilością opcji.


    U mnie w pracy wykorzystuję GDI (mimo że faktycznie jest z tym więcej zabawy - polecam ;)), podczas gdy mój kolega korzysta z darmowej biblioteki fyireporting czy ITextSharp, nie pamiętam.
    Wolę GDI bo dzięki temu wiem co piszę, w bibliotekach, zwłaszcza tych darmowych, zdarzają się czasem trudne do wychwycenia problemy czy zwykłe bugi...

    Żeby pokazać że GDI nie takie straszne, poniżej prosty przykład:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    1
  • #3 22 Maj 2011 17:15
    DarknessWalker
    Poziom 10  

    Hmm a ja myślałam, że dałoby się jakoś z formatki i problem z głowy :roll:
    Dzięki za poradę, spróbuję pokombinować z tym

    -1