Announcement

Collapse
No announcement yet.

Datensätze Drucken unter VB NET

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datensätze Drucken unter VB NET

    Hallo zusammen !
    Ich hab ein kleines Problemchen mit Datensätze zu Drucken. Sitze seit paar Wochen damit fest und komm nicht weiter. Hab zwar paar Voschläge bekommen aber ich will keine Array haben.

    Hab ein Tabellen Steuerelement wo die Datensätze angezeigt werden (siehe Bild "000", wenn eine Spalte in Tabelle markiert dann in "Details" werden Persönliche Angaben angezeigt siehe )
    Hie ist die Code:
    Code:
    Variable Deklaration
      Private lRows As Long
        Private ff As Long
        Private hh As Long
        Private lngGesRows As Long
        Private ss As Long
        Private zz As Long
        Private lWert As Long
        Private kk As Long
        Private ii As Long
    
        Private aa As Long
        Private bb As Long
    
    
    Private Sub mAllesDrucken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mAllesDrucken.Click
    
    'blatt löschen
    dBlatt = " "
            ff = flexErinnerung.Rows
            aa = flexErinnerung.Rows - 1
            aa = 1
            ss = 4
            zz = 0
    
            kk = 0
            ii = 0
    
        ppd.ResetText()
    
    
    
        ppd.Document = pdoc
            ppd.ShowDialog()
        ppd.AutoSizeMode = Windows.Forms.AutoSizeMode.GrowOnly
    
            If pd.ShowDialog = Windows.Forms.DialogResult.OK Then
    
    
    
                pdoc.PrinterSettings = pd.PrinterSettings
                pdoc.Print()
    
            End If
    
    
    
    
        End Sub
    
    
    Private Sub pdoc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pdoc.PrintPage
    
    
            If flexErinnerung.Rows >= 4 Then
    
                'Inhalt der Tabelle Erinnerung ausgeben
                For lRows = 1 To flexErinnerung.Rows - 1
    
                    flexErinnerung.Row = lRows
    
    
                    kk = kk + 1
                    ii = ii + 1
    
    
    
    
                    dBlatt = vbCrLf & " =================================================================================================================== " & _
                    vbCrLf & "   " & " " & " " & "Land:" & " " & flexErinnerung.get_TextMatrix(lRows, 0) & vbCrLf & _
                      vbCrLf & "   " & " " & " " & "PLZ:" & " " & flexErinnerung.get_TextMatrix(lRows, 1) & "                         " & _
                    "Ort:" & " " & flexErinnerung.get_TextMatrix(lRows, 2) & "                         " & "Straße/Haus.Nr:" & " " & flexErinnerung.get_TextMatrix(lRows, 3) & _
                    "." & " " & " " & flexErinnerung.get_TextMatrix(lRows, 4) & vbCrLf & vbCrLf & "   " & " " & " " & "Name:" & " " & flexErinnerung.get_TextMatrix(lRows, 5) & "                      " & _
                    "Vorname:" & " " & flexErinnerung.get_TextMatrix(lRows, 6) & vbCrLf & vbCrLf & "   " & " " & " " & "Geburtstag:" & " " & _
                    flexErinnerung.get_TextMatrix(lRows, 7) & "." & flexErinnerung.get_TextMatrix(lRows, 8) & "." & flexErinnerung.get_TextMatrix(lRows, 9) & vbCrLf & vbCrLf & vbCrLf & _
                    "   " & " " & " " & "Privat Telefon:" & " " & flexErinnerung.get_TextMatrix(lRows, 10) & "/" & flexErinnerung.get_TextMatrix(lRows, 11) & "                             " & _
                    "Mobil Telefon:" & " " & flexErinnerung.get_TextMatrix(lRows, 12) & "/" & flexErinnerung.get_TextMatrix(lRows, 13) & vbCrLf & vbCrLf & _
                    "   " & " " & " " & "Email:" & " " & flexErinnerung.get_TextMatrix(lRows, 14) & flexErinnerung.get_TextMatrix(lRows, 15) & flexErinnerung.get_TextMatrix(lRows, 16) & "." & flexErinnerung.get_TextMatrix(lRows, 17) & vbCrLf & vbCrLf & vbCrLf & _
                    "   " & " " & " " & "Bemerkung:" & " " & flexErinnerung.get_TextMatrix(lRows, 18) & _
                    vbCrLf & vbCrLf & vbCrLf & "===================================================================================================================" & dBlatt
    
    
                    If ii = ss Then
    
                        e.Graphics.DrawString(dBlatt, New Font("Arial", 8, FontStyle.Regular, GraphicsUnit.Point), Brushes.Red, 38, 55)
                        dBlatt = " "
    
    
    
                        zz = ff - kk 'Rest ermitteln
                        ii = 0
    
    
                        If zz <= 3 Then
    
                            e.HasMorePages = True
    
                            ss = zz
    
                        End If
    
    
    
                    End If
    
            
                Next
    
    
    
            End If
    
    
    
    
    
    
    
    
    
    
    
        End Sub
    Nach dem die Code ausgeführt wird auf Blatt1 mir das angezeigt siehe Bild 001 und auf das Blatt2 siehe das Bild002.

    Das erste Datensatz wird noch ein mal auf Blatt2 angezeigt. Ich habe nur 6 Datensätze.

    Kennt sich jemand aus und kann mir helfen ?
    Ich hab nur eine Bitte die Lösung ohre Arrays oder irgend-welche Objeckte !

    DANKE FÜR DIE ANTWORTEN !
    Attached Files
    VB 2005/ VB2008/ VB6

  • #2
    Ich hab nur eine Bitte die Lösung ohre Arrays oder irgend-welche Objeckte !
    Diese Lösung kann mit .net (VB.net) nicht erstellt werden, da alles ein Objekt ist.

    Wenn du keine Arrays haben willst verwende eine Liste.

    Woher kommen die Daten - ein Bild ist zu wenig Info.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hallo gfoidl !
      Die Daten stammen aus Hauptprogramm.
      Also ich beschreib das etwas deutlicher.
      Programmiere gerade ein Gebrutstags Manager unter VB 2005. Hab 3 separate Prokeckte die von-einander unabhängig sind:

      GBE (Geburtstag Erinnerung) - Haupst programm (wo die Daten eingegeben werden )
      Erinnerung - dort werden Einträge aus Tabelle der Hauptprogramm eingetragen wenn bis Geburtstag 3 Tage bleiben
      Einstellungen - wird verwendet für Programm einstellungen

      Die Verbindung zwieschen diesen 3 Projekten wird mit die Classen (DLL) hergestellt

      Ich verwende kein richtigen Datenbank, sonder einen Tabellen Steuerelement der mir anbietet Inhalt der Tabelle in Datei speichern und wieder laden.

      Das Form Erinnierung wird automatisch mit system geladen, und dient als Warner damit meinte ich sobald er in Tabelle ein Eintrag findet das bis Gebutrtstag noch 3 Tage sind wird das Programm mit einem Medung signalisieren.

      Mein Problemchen ist das Drucken.
      So wie man auf dem Bild sied wenn Anzahl die Datensätzen grösßer als 4 dann soll 4 Datensätze pro Blatt Drucken aber wenn zum schluß nur 3, 2 oder 1(weniger als 4) Datensätz übrig bleibt dann soll er das auf der Letzten Blatt Drucken.
      Anzahl die gedruckten Datensätzen darf nich eingeschränkt werden !

      Ich wollte das Mathematisch lösen ohne Arrays oder Listen, das haut zwar fast hin,aber der Erste Datensatz wird noch ein mal auf zweiten Blatt angezeigt.
      Der Grund dafür, waum ich das Mathematisch lösen wollte,ich habe gedacht wenn ich Datensätze in Arrays,Listen oder in sonst irgend-eine Objekte rein schreibe, kann passieren das Programm oder System wird bei dem vorgang abgebremst.

      Ich möchte beim Drucken sagen wir mal 1000 Datensätzen nicht einschlafen.
      Ja die Code sied bischen verwirrend aus, hab nur getestet und einfacheren Variablen Namen vergeben, was die Code unübersichtlich macht.

      So ich glaube von die Infos die du haben willst war mehr als genügend.

      Ok wenn du meinst mit Listen kannst mir dabei helfen ?



      Für die Hilfe werde dir sehr DANKBAR sein, dann kann ich endlich weiter mein Programmchen basteln !


      Mfg Alex
      Zuletzt editiert von FerrariF80; 26.10.2008, 16:00.
      VB 2005/ VB2008/ VB6

      Comment


      • #4
        Tut mir leid, aber Du machst das Antworten sehr schwer. Schon die Höflichkeit gebietet: Wer Hilfe sucht, sollte es dem Helfenden so einfach machen wie möglich. Dazu gehört, dass der Text gut lesbar ist; das wird mit ausreichendem Gebrauch von Satzzeichen und der Verwendung von korrekten Worten ("Geburtstag" statt "Geb") und annäherndem Gebrauch der deutschen Rechtschreibung ("Projekte" statt "Prokeckte") wesentlich erleichtert.

        Bitte benutze die Vorschau, lies Dir einmal das Geschreibsel durch und beseitige wenigstens die schlimmsten Verständnisprobleme. Erst danach ist "Antworten" angesagt.

        Zum Inhalt: Wenn Du aussagefähige Bezeichner verwendest, ist Dein Code leichter zu verstehen. Beispiele: ff, hh, ss, zz. Ein Standardfehler bei solchen Druckproblemen ist folgendes: mit PrintPage wird jede Seite gedruckt; beim Anfang der zweiten Seite wird ein Zähler benötigt, mit welchem Datensatz die erste Seite geendet hat. (Ob dieses Problem bei Dir besteht, kann ich mangels Information über die Variablen nicht beurteilen.)

        Zu Deiner Ausgangsfrage: Die Daten müssen auf jeden Fall aus irgendeiner Menge kommen. Du willst keine Arrays (verständlich, dies sind statische Objekte). Du willst keine Objekte (völlig unverständlich, denn Objekte sind Basis der OOP). Geeignet ist etwas wie List<Person> oder DataTable. Was ist denn das "Tabellen Steuerelement", in dem die Daten stehen? Bitte den Klassennamen angeben oder den Zusammenhang mit den Standardklassen erläutern!

        Wenn Du dazu Informationen suchst, dann bieten sich die SDK-Doku/MSDN oder die OpenBooks zu VB.NET an.

        Zur Zusatzfrage:
        Hab noch eine Frage wie kann ich meine Ressource von Fremden Zugriff schützen ?
        Was hat das mit "Datensätze Drucken unter VB" zu tun? Neues Thema => neue Diskussion eröffnen.

        Jürgen

        Comment


        • #5
          Thomas Danke für die Infos !
          Irgend-wo muß ich dir Recht geben !
          Wenn Du dazu Informationen suchst, dann bieten sich die SDK-Doku/MSDN oder die OpenBooks zu VB.NET an.
          Aber wenn ich das mit Drucken nicht lösen kann, da kannst mir noch 1000 Links und Bücher vor die Nase schmeisen das wird nicht weiter Helfen. Ich sitze schon seit paar Wochen mit diese Problem "Drucken" und komme einfach nicht weiter.

          Mfg Alex
          VB 2005/ VB2008/ VB6

          Comment


          • #6
            Hab mein Beitrag von 11:52 korregiert, denke dass muß voll ausreichen !
            VB 2005/ VB2008/ VB6

            Comment


            • #7
              Auch hallo,
              Ich hab ein kleines Problemchen mit Datensätze zu Drucken.
              Auch auf die Gefahr hin danebenzuliegen: suche nach print AND dataset unter codeproject.com ergibt einige Treffer, z.B. http://www.codeproject.com/KB/printi...idprinter.aspx
              MfG
              Cheat-Sheets for Developers / Programming Quotes

              Comment


              • #8
                Hallo F80,

                ich weiß, so heißt Du nicht; aber ich heiße in Foren auch nicht Thomas.

                Originally posted by FerrariF80 View Post
                Hab mein Beitrag von 11:52 korregiert, denke dass muß voll ausreichen !
                wenn Du meinst, dass das reicht, dann muss ich mir auch keine Gedanken mehr machen.

                Originally posted by FerrariF80
                da kannst mir noch 1000 Links und Bücher vor die Nase schmeisen
                Ich hatte ausdrücklich geschrieben:
                Wenn Du dazu Informationen suchst, dann bieten sich die SDK-Doku/MSDN oder die OpenBooks zu VB.NET an.
                Das Wort "dazu" bezog sich natürlich auf List<T> und DataTable. (Aber wenn Du so genau liest wie Du schreibst, dann )

                Eine sinnvolle Information hast Du nachgeliefert: Die Daten befinden sich in einem vsFlexGrid. Das kenne ich nicht; aber danach ist mir schon klar, dass das keine gute Lösung ist: Ein Grundsatz unter NET ist die Trennung von Daten und GUI. Dieses Element macht Dir zwar die Arbeit leichter; aber es widerspricht diesem Grundsatz. Wenn Du stattdessen eine DataTable nehmen würdest (igittigitt, das ist ja wieder ein Objekt), wäre das gewährleistet.

                Dein Problem liegt woanders; auf welche Rows Du beim Drucken zugreifst, ist natürlich zweitrangig. Aber ohne sorgfältige Prüfung Deines Codes (wobei verständliche Bezeichner und mehr Kommentare sehr helfen würden) kann ich Dir nicht helfen.

                Aber da Du auf meine Hilfe offensichtlich keinen Wert legst, ist das auch egal. Jürgen

                Comment


                • #9
                  Hallo,

                  im Anhang ein Beispiel wie das mit Objekten und Listen gelöst werden kann. Das Drucken ist primitiv gelöst.

                  Ohne Objekte gehts wie gesagt in .net nicht.
                  Ohnle Liste ist es sicher umständlicher und keinesfalls effizienter.
                  Das vsFlexGrid kenn ich auch nicht - ist keine .net-Komponente. Wahrscheinlich ein ActiveX oder so was (jedenfalls unmanaged Code) und somit ineffizienter als .net-Komponenten wegen Marshalling, etc.

                  Ansonsten schließ ich mich Jürgen an.

                  mfG Gü
                  Attached Files
                  Zuletzt editiert von gfoidl; 26.10.2008, 15:01.
                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                  Comment


                  • #10
                    Originally posted by gfoidl View Post
                    Das vsFlexGrid kenn ich auch nicht - ist keine .net-Komponente. Wahrscheinlich ein ActiveX oder so was (jedenfalls unmanaged Code) und somit ineffizienter als .net-Komponenten wegen Marshalling, etc.
                    Tatsächlich, so ist es. Google zeigt, dass VSFlexGrid von ComponentOne stammt und anscheinend ein ActiveX-Control ist (so steht es in der Google-Antwort; der CompOne-Server will grade nicht). Jürgen

                    Comment


                    • #11
                      @gfoidl: vielen vielen DANK für die Hilfe, ich werde die Code in meinem Projeckt umsetzen

                      @Thomas: seit nicht bös, es kann schon sein das ich dich falsch verstanden habe. Für mich ist jede Hilfe ein Wert und selbst wenn ich das nicht einsetzen kann, werde ich weiter nach andere Lösungen und Vorschäge suchen.
                      Das mit verwirrende Code das war nur ein Test, ärlich gesagt hab kein Lust das ordentlich rein zu schreiben, hab nur rum probiert und rum gespielt. Hab in MSDN und Online Bücher nachgeschaut, aber irgend- wie fehlt mir schwer die Theori in Praxis umzusetzen, darum habe ich ein Tread geöffnet das jemand zu mindestens ein Beispiel zeigt wie sowas überhaupt funktioiniert.

                      Aber trotzdem Danke für die Infos !

                      Mfg Al
                      VB 2005/ VB2008/ VB6

                      Comment


                      • #12
                        kein Lust das ordentlich rein zu schreiben
                        Dann schreibs nicht rein! Das ist ja Verarschung von denen dies lesen sollen

                        mfG Gü
                        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                        Comment


                        • #13
                          gfoidl das ist keine Verarschung die Code kommt aus meinem Projekct, da habe ich mit die ganze Variablen rum gespielt. Ich hab nichts vor hier jemanden zu verarschen !

                          Mfg Alex
                          VB 2005/ VB2008/ VB6

                          Comment

                          Working...
                          X