none
C#,DataTable/Datenbank, Drucken RRS feed

  • Frage

  • Hallo,

    das Thema Drucken wird für mich langsam zum Problem!

    Dank eurer Hilfen kann ich zwar

    - eine Textzeile drucken

    - ein TextFile  *.txt drucken

    - und sogar ein am Schirm dargestelltes Form zu Papier bringen,

    aber mit dem Drucken des Inhalts einer DataTable komme ich einfach nicht voran.

    Es geht um Folgendes:

    - ich habe eine Datenbank *.mdb

    - aus dieser selektiere ich mit SELECT....WHERE....LIKE .. usw. Datensätze

    - diese Datensätze schreibe ich mit FILL in eine DataTable dt

    - diese dt übergebe ich einem Konstruktor auf FormX

    - mit einem dataGridView1.DataSource= dt zeige ich dem User das Ergebnis der Selektion

    - auf FormX gibt es einen Button "Drucken"

    Bis daher ist alles OK. Aber damit ist der Ofen wieder aus !

    Daher die Frage: Wo finde ich den Code, der es ermöglicht, einen zur Laufzeit

    erstellten Inhalt einer (mehrseitigen - etwa bis 1000 Zeilen) DataTable dt zu Papier zu bringen ??

    Und auch : Wie druckt man den Inhalt einer Datenbank *.mdb ??

    Um voran zu kommen habe ich mir (auch zu anderen Fragen) ein sehr dickes Buch von MS-Verlag

    über Datenbanken mit Visual C# 2008 gekauft. Darin finde ich umfangreiche

    Anleitungen gut erklärt zu diesem Thema - aber nur, wenn man die Vollversion

    von Visual hat ! (Reporting Services, Crystal Report)

    Ich habe aber nur die Express-Editionen. Muß ich mir wirklich die Vollversion

    von Visual Studio 2008 zulegen, nur um eine Datenliste zu drucken ?

    Schon vorab vielen Dank für Hinweise !

    Gruß !

    Hermann

     

    Freitag, 21. Mai 2010 09:31

Antworten

Alle Antworten

  • Dein Gridview dient der Darstellung  der Daten in einem Formular auf dem Bildschirm. Für das was Du willst brauchst Du etwas, das Deine Daten in irgeneiner Form auf Papier bringt z. B. CrystalReports. Es gibt auch noch anderes. In Access (*.mdb) könntest Du einen Report erstellen ohne VS. Du könntest eine Word oder Excel-Dokument erstellen, Deine Daten in einer XML-Datei speichern und mit Stylesheets in die passende Form bringen, ....
     
    Volker
    Freitag, 21. Mai 2010 13:07
  • Hallo Volker,

    wenn ich deine Hinweise richtig verstehe habe ich 2 Möglichkeiten :

    1.) Ich kaufe die Vollversion und habe damit CrystalReports

    2.) Ich arbeite mit einem Access-Report.

    Dazu müsste ich anscheinend folgendes tun:

    - eine idente Datenbank DB2.mdb zu meiner Arbeitsdatenbank DB1.mdb erstellen

    - für DB2 einen Report erstellen (geht ohne VS)

    - mein Programm mit DB1 starten und die Datensätze selektieren

    - eine Connection zu  DB2 öffnen und DB2 leer machen

    - die selektierten Datensätze dann in die DB2 einschreiben

    - das Programm schließen und Access öffnen

    - den Report drucken mit DB2

    Wie man einen Acces-Report erstellt muß ich noch anschauen.

    Habe ich das so richtig verstanden ?

     

    Danke !

    Hermann

     

    Samstag, 22. Mai 2010 08:10
  • Hallo Hermann,

    Du hast durchaus mehr Möglichkeiten. Das nicht alles bei den kostenlosen
    Express-Editionen dabeiliegt, sollte verständlich sein - auch Office ist nicht kostenlos.

    Für den Microsoft Report Designer brauchst Du schon mindestens VS 2008 Standard,
    siehe Microsoft-Berichte

    Kostenlose Alternativen wäre z. B. http://sharpdevelopreports.net/Default.aspx
    (wobei ich mir das zwar mal immer ansehen wollte, es bisher nicht geschafft habe)

    Und kostenpflichtige gibt es neben Crystal Report (wo man auch eine Vollversion
    haben sollte) diverse mehr.

    Zu Access: Das Einbinden von Access-Berichten ist direkter möglich,
    ohne Einschränkungen aber nur dort, wo eine Access Vollversion installiert ist.
    Bei der Laufzeit-Version gibt es einige Einschränkungen, siehe
    ACC: How to Use Automation to Print Microsoft Access Reports

    (auch wenn der Artikel steinalt ist, gelten die Einschränkungen auch bei .NET)
    und Automatisieren von Microsoft Access mit Visual Basic .NET

    Word und Excel können via Automation auch zum Drucken mißbraucht werden,
    aber für größere Listen ist das IMHO nur Masochisten zu empfehlen ;-)

    Gruß Elmar

     

    Sonntag, 23. Mai 2010 09:12
    Beantworter
  • Hallo Elmar,

    danke für deine Hinweise.

    Auf Grund meiner schon zahlreichen Fragen an das Forum und deiner

    zielsicheren Antworten denke ich, daß Du bereits ein ganz gutes Gefühl für meine

    SW-Aktivitäten hast. Daher meine Bitte :

    - Ich werde eine Vollversion kaufen

    - Kannst Du mir raten, welche/s Produkt/e für mich optimal(e) ist/sind.

    Zur Zeit habe ich :

    MS Windows XP Prof mit allen SP, Nov 2004, Systems Student Media

    MS Office Prof Enterprise Edition 2003, June 2004 Applications Student Media, alle SP

    Die der MS-Literatur beiliegenden DVD :

     - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2008 Express Edition (R.Panther)

     - Richtig einsteigen: Programmieren lernen mit Visual C# 2008 (Fahnenstich/Haselier)

     - Datenbank-Programmierung mit Visual C# 2008 (Doberenz/Gewinnus)

     - alles was bisher dazu an UpDates angeboten wurde

    Ich habe alles was drauf war installiert und daher auf dem DeskTop:

     - MS Visual Studio 2008

     - MS Visual C# 2008 Express Edition

     - SQL Server Management Studio

    Gibt es für einen solchen Arbeitsplatz  UpGrades oder einfach nur Vollversionen ?

    Ich habe die MS-WebSites angeschaut, bin mir aber nicht sicher.

    Sag mir bitte, was ich nehmen soll, damit das Geld weinigstens optimal

    angelegt ist.

    Vielen Dank für deine Mühe !

    Gruß !

    Hermann

    PS: Habe vermutlich irrtümlich irgend was mit dem Feld "Als Antwort markieren" angestellt.

    Werde das beim nächsten Mal korrigieren.

     

    Sonntag, 23. Mai 2010 18:49
  • Hallo Hermann,

    Du solltest bei einer Vollversion bei VS 2010 einsteigen.
    Und i. a. gemeinen ist man mit Professional dort gut bedient.
    Premium und Ultimate haben einige bunte Bonbons mehr,
    man muß aber ordentlich bezahlen, um sie lutschen zu dürfen ;-)
    Für klassische Windows Forms/WPF/Datenbank-Entwicklung
    braucht man das als Einzelentwickler nicht zwangsweise.

    Die Versionen, die bei Büchern beiliegen, sind üblicherweise
    entweder Express oder eine zeitlich limitierte Testversion.
    Laut dem "bläulichen" Kasten auf
    http://www.microsoft.com/germany/visualstudio/products/team/visual-studio-professional.aspx

    ist man mit (fast) allen Produkten zum Upgrade berechtigt.

    Allerdings scheint man sich sputen zu müssen, wenn ich eine Seite
    http://www3.zoschke.com/shop/producers/microsoft/visualstudio2010/?tab=12761e4c-d6be-4604-a8f0-8dffbb2f3dce
    so läuft es (dort?) Ende Mai aus.
    Guck aber woanders, ob es günstiger ist - ich hatte nur gerade
    den Namen von einer Prospektbeilage hier rumliegen.

    Gruß Elmar

    Sonntag, 23. Mai 2010 22:28
    Beantworter
  • Hallo Hermann,

    wenn Du die Daten schon in einem DataGridView hast, kannst Du dir mal diese fertige Lösung ansehen:

    http://www.codeproject.com/KB/printing/DGVPrinter.aspx?msg=2639567

     

    Gruß,

    Uwe

    Mittwoch, 26. Mai 2010 10:01
  • Hallo Robert,

    das macht doch das beschriebene Tool alles automatisch. Man macht einige Angaben zum Layout und übergibt das DataGridView.

    Gruß,

    Uwe

    Mittwoch, 26. Mai 2010 14:40
  • Hallo Uwe,

    ich habe einige Tage gebraucht, um alle eingelangten Hinweise zu meinem Druckproblem wenigstens im Überblick einmal anzuschauen.

    Dir gebührt ein besonderer Dank : Nach vielen vergeblichen Wochen habe ich dank deines Hinweises nun erstmal mein dataGridView auf einem Stück Papier sehen können !!

    Das Programm hat auf Anhieb funktioniert ! Es hat allerdings eine komische Eigenheit, die ich nicht haben will :

    - ich selektiere die Datensätze aus einer DBank und zeige dem User das Ergebnis dieser Selektion in einem dataGridView an

    - diese dataGridView habe ich genau so gestaltet, wie ich es dann am Papier haben will, und zwar so, daß es auf einem A4 - Querformat Platz findet. Dazu habe ich die Breite der Columns entsprechend ausgewählt. Das führt ggf. dazu, daß manchmal ein Text nicht zur Gänze in der Zelle Platz hat. Er wird dann abgebrochen mit ... , was nicht stört.

    - das Programm DGVPrinter.cs ignoriert aber überraschenderweise diese Einteilung. Es verändert selbständig diese Column-Breite immer so, daß der Text zur Gänze in der Zelle Platz hat. Das führt dann fast immer dazu, daß das DGV nicht auf einem Blatt Papier Platz hat und ein zB. Page 1 of 1 - Part 2 gedruckt werden muß. Wie erreiche ich, daß DGVPrinter mein dataGridView einfach 1 : 1 übernimmt , also das DGV nicht verändert ??

    Ich vermute, daß dies mit einer einfachen Einstellung behoben werden kann, nur wie ?

    Um den Ausdruck noch übersichtlicher zu gestalten hätte ich noch einige Fragen :

    - man kann eine Titelzeile und eine SubTitel-Zeile drucken. Wie kann man mehrere SubTitelZeilen einfügen ?

    - diese Zeilen werden immer mittig eingefügt. Wie kann man deren Text zB. links beginnen lassen bzw. an einer beliebigen Position innerhalb der Zeile ?

    - wie kann man eine Leerzeile einfügen ?

    - wie kann man eine Leerzeile und dann auch mehrere footerZeilen  direkt im Anschluß an die Zeilen des DGV anfügen ?

    Ich hoffe, ich überlade dich nicht mit meinen Fragen. Jedenfalls hat mir dein Hinweis sehr geholfen !

    Dafür nochmals vielen Dank !

    Gruß !

    Hermann

     

    Samstag, 29. Mai 2010 14:23
  • Hallo Hermann,

    die Überschriften ganz Du linksbündig ausrichten, in dem Du diese Eigenschaft angibst:

    printer.SubTitleAlignment = StringAlignment.Near;

    Zu Deinen anderen Fragen habe ich auf die Schnelle keine Antworten gefunden.

    Gruß,

    Uwe

    Sonntag, 30. Mai 2010 16:14
  • Hallo Hermann,

    das "Drucken" eines DataGridViews kann immer nur ein eingeschränkter Ersatz sein.
    Dinge wie Kopf-/Gruppen/Leerzeilen sind dort nicht vorgesehen.
    Und einen Bericht als Access-, Reporting Services-, Crystal Report und wie sie alle heißen,
    kann es nicht ersetzen.

    Gruß Elmar

    Sonntag, 30. Mai 2010 17:48
    Beantworter
  • Hallo Uwe,ich habe nochmals in aller Ruhe alles durchprobiert und auch das DGVPrinter.cs -File angeschaut. Und dabei dazu gelernt, wie man zB. die Fonts oder auch die Blattränder einstellen oder linksbündigen Text eingeben kann. Die Frage mit den Columns bleibt aber. Es wird  der Inhalt der Zellen übernommen, das Layout des DGV aber immer irgendwie angepasst, sodaß bis zu 3 Parts pro Seite notwendig sein können. (Mein DGV hat 10 Spalten und bis etwa 1000 Zeilen).

    Nochmals danke für den Tip. Wenn die Sache wieder akut wird, werde ich mich wieder melden.

    Gruß !

    Hermann

    Montag, 31. Mai 2010 10:05
  • Hallo Elmar,

    das Thema "Drucken" eines DGV lege ich vorerst einmal zur Seite. Grund : Die Vollversion VS Studio Prof ist im Anrollen! Ich vermute, es wird sicher einige Zeit dauern, bis ich damit halbwegs umgehen kann. Sollte es mich dann wieder schleudern mit Reporting Service, Crystal Report ua. darf ich mich bitte wieder melden.

    Danke und beste Grüße !

    Hermann

    Montag, 31. Mai 2010 10:20
  • Hallo Hermann,

    na denn viel Spaß mit dem neuen Spielzeug ;-))

    Und sicher darfst Du Dich wieder melden, dafür ist der Laden hier da ;-)

    Gruß Elmar

    Montag, 31. Mai 2010 11:46
    Beantworter
  • Hallo Elmar,

    ich bin wieder am Dampfer. Die Installation von VS 2010 Pro ging ohne irgend ein Problem über die Bühne. Ich habe längere Zeit vieles dazu gelesen und durchgesehen , sodaß ich schon einigermaßen mit dem 'neuen Spielzeug' umgehen kann. Natürlich habe ich auch alle meine bislang erstellten Programme anschließend geladen und kontrolliert, ob sich diese auch mit VS Pro debuggen lassen.

    Ergebnis: Obwohl diese Programme schon seit längeren problemlos laufen,  sind alle im Debugger hängen geblieben ! Es gab weniger einen wirklichen Fehler, dafür aber zahlreiche Warnungen. Offensichtlich ist VS EX viel großzügiger und VS Pro sehr pingelig.  Anscheined stimmt demnach die Aussage, daß es keine fehlerfreie Software gibt, auch die die anscheinend funktioniert hat ihre versteckten Wanzen. Jedenfalls habe ich eine weitere Woche gebraucht, um all diese Fehler zu beseitigen.

    Mein Kopf ist  wieder frei. Jetzt mache ich mich an das Erstellen von Reports !

    Viele Grüße !

    Hermann

     

     

     

    Freitag, 25. Juni 2010 11:05
  • Hallo Hermann.

    Ob Visual Studio Express oder Professional, Premium oder Ultimate
    ist letzendlich ziemlich egal. Die Basis ist überall die gleiche,
    unterscheiden tun sie sich erst bei den Zusatzfeatures.

    Allerdings findet VS 2010 schon mal einen Fehler den VS 2008
    nicht ankreidete, was den verbesserten Compilern geschuldet sind.

    Um genaueres zu Deinen "eingeschleppten Tierchen" sagen zu können,
    müsste Du einen Codeschnipsel zeigen, der Dir angekreidet wurde.

    Und nun viel Spaß bei den Berichten ;-)

    Gruß Elmar

     

    Samstag, 26. Juni 2010 07:53
    Beantworter