vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
Drucken  
Autor: MT Arens
Datum: 22.08.03 19:09

Hallo Leute,

ich habe ein DBGrid und möchte den momentan angezeigten Inhalt aus drucken!
Bei dem fett gedruckten im Code bekomme ich beim druck Versuch immer den Fehler Variable nicht definiert. Aber wie mus diese definiert werden? Sorry, für solche Fragen aber was das drucken angeht bin ich totaler Anfänger!

Hier ist ein mal ein ausschnitt vom Code meines Form:
'------------------------------------------------------------------------------
' --'
'                             >> Grid drucken  <<                                '
'------------------------------------------------------------------------------
' --'
Private Sub Command1_Click()
  Dim fmt As String
  Dim sRow As String
  Dim xPos As Long
  Dim i As Long
  Dim intProz As Integer
  Dim GridWidth As Long
  Dim ColWidth As Long
  Dim PageWidth As Long
  Dim sHeader As String
 
  Screen.MousePointer = 11
  With Printer
    .ScaleMode = 6    ' Maßeinheit "mm"
    xPos = 20         ' 20mm Rand link
 
    .Font.Name = "Arial"
    .Font.Size = 12
 
    ' Listenbezeichnung
    .CurrentY = 10
    .CurrentX = xPos
    .Font.Bold = True
    Printer.Print DBGrid1.Caption + vbCrLf
    .Font.Bold = False
 
    ' Format (Spaltenbreiten) + Tabellenkopf
    ' anhand Bildschirm-Spaltenbreite ermitteln
    PageWidth = .ScaleWidth - (xPos * 2)
    With DBGrid1
      ' Gesamtbreite
      For i = 0 To .Columns.Count - 1
        If .Columns(i).Visible Then
          GridWidth = GridWidth + .Columns(i).Width
        End If
      Next i
 
      ' Prozentuale Verteilung auf die Spalten
      ' plus Tabellenkopf
      For i = 0 To .Columns.Count - 1
        With .Columns(i)
          ' zunächst Spaltenausrichtung berücksichtigen
          Select Case .Alignment
            Case dbgCenter
              ' zentriert
              fmt = fmt + "^"
            Case dbgRight
              ' rechtsbündig
              fmt = fmt + ">"
          End Select
 
          ' jetzt Spaltenbreite berechnen
          intProz = (.Width / GridWidth * 100 + 0.5)
          ColWidth = (PageWidth / 100 * intProz + 0.5)
          fmt = fmt + Format$(ColWidth, "0")
 
          ' Tabellenkopf
          sHeader = sHeader + .Caption
        End With
 
        fmt = fmt + "|"
        sHeader = sHeader + "|"
      Next i
 
      ' abschliessendes "|" entfernen
      fmt = Left$(fmt, Len(fmt) - 1)
      sHeader = Left$(sHeader, Len(sHeader) - 1)
    End With
 
    ' Tabellenkopf drucken
    .Font.Bold = True
    .Font.Size = 9
    PrintRow xPos, fmt, sHeader
    .Font.Bold = False
 
    ' Jetzt Recordset "satzweise" ausdrucken
    .Font.Size = 8
    .CurrentY = .CurrentY + 5
    Rs.MoveFirst                                 <-- Hier kommt der _
      Fehler
    While Not Rs.EOF
      sRow = ""
      With DBGrid1
        For i = 0 To .Columns.Count - 1
          If .Columns(i).Visible Then
            ' NumberFormat berücksichtigen
            If .Columns(i).NumberFormat <> "" Then
              sRow = sRow + Format$(FeldInhalt(Rs.Fields(i)), _
                .Columns(i).NumberFormat) + "|"
            Else
              ' normaler Text / sonstige Datentypen
              sRow = sRow + CStr(FeldInhalt(Rs.Fields(i))) + "|"
            End If
          End If
        Next i
        PrintRow xPos, fmt, sRow
      End With
 
      ' nächster Datensatz
      Rs.MoveNext
    Wend
 
    ' Druckauftrag beenden
    .EndDoc
  End With
  Screen.MousePointer = 0
 
  MsgBox "DBGrid1 wurde ausgedruckt!", 64, "Drucken..."
End Sub
 
' Nullfeld abfragen
Public Function FeldInhalt(Feld As Field) As Variant
  If IsNull(Feld.Value) Then
    Select Case Feld.Type
      Case adInteger, adSmallInt
        FeldInhalt = 0
      Case adBoolean
        FeldInhalt = False
      Case Else
        FeldInhalt = ""
    End Select
  Else
    FeldInhalt = Feld.Value
  End If
End Function
Ich habe schon in den Tips und Tricks gelesen und habe daher auch diesen Code zusammen gestrickt. Aber ich komme einfach nicht weiter.

Thanks 4 Help Wer Rechtschreibfehler findet darf Sie behalten!!

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Drucken 829MT Arens22.08.03 19:09
Re: Drucken 586TritonKeyboarder22.08.03 19:31

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel