Announcement

Collapse
No announcement yet.

Druckerschachtumschaltung unter MS Access 97

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

  • Druckerschachtumschaltung unter MS Access 97

    1. In einem Programm unter MS-Access 97 soll in einer Routine zum Ausdruck von Rechnungen der Druckerschacht mittels Programmcode umgeschaltet werden. Hierzu benutze ich die untenstehende Routine, die jeweils unmittelbar vor dem eigentlichen Druck aufgerufen wird und den Druckerschacht auswählt und speichert. Die Routine wurde im wesentlichen aus einem Beispiel der Access-Online-Hilfe abgeleitet.

    Im Betrieb kommt es jedoch – nicht immer, aber sehr häufig – in der letzten zeile der Routine zu Laufzeitfehlern „Zu wenig Speicher“, die ich mir nicht erklären kann. Das Programm läuft in einem Netzwerk auf einem PC mit 128 MB Hauptspeicher unter Windows NT mit Servicepack 6.

    Wer kann mir einen Rat geben? Gibt es andere Möglichkeiten der Druckerschachtumschaltung zur Laufzeit?

    2. Wie kann man zur Laufzeit beim Druck eines mehrseitigen Reports nach Druck der ersten Seite auf einen anderen Druckerschacht umschalten (Problem: erste Seite auf Kopfbogen, weitere Seiten auf Blankopapier)?

    Für Ihre freundliche Hilfe danke ich sehr.

    Hans Grigull

    'Für PrtDevMode (Wechseln Druckerschacht)
    Type str_DEVMODE
    strGZF As String * 94
    End Type

    Type type_DEVMODE
    strDeviceName As String * 16
    intSpecVersion As Integer
    intDriverVersion As Integer
    intSize As Integer
    intDriverExtra As Integer
    lngFields As Long
    intOrientation As Integer
    intPaperSize As Integer
    intPaperLength As Integer
    intPaperWidth As Integer
    intScale As Integer
    intCopies As Integer
    intDefaultSource As Integer
    intPrintQuality As Integer
    intColor As Integer
    intDuplex As Integer
    intResolution As Integer
    intTTOption As Integer
    intCollate As Integer
    strFormName As String * 16
    lngPad As Long
    lngBits As Long
    lngPW As Long
    lngPH As Long
    lngDFI As Long
    lngDFr As Long
    End Type 'type_DEVMODE

    Private Sub SetAPaperCase(strRptName As String, intSchacht As Integer)
    'Gibt für einen bestimmten Report den Drucvkerschacht vor, aus dem später gedruckt werden soll.
    'PARAMETER: IN: strRptName = Name des Reports
    ' intSchacht = Kennziffer für den Druckerschacht
    'HINWEISE:
    '- Die Kennziffer für den jeweiligen Druckschacht ist druckerspezifisch
    '- Der Druckerschacht wird mit diesem Report gespeichert. Aus ihm wird solange
    ' gedruckt, bis er mit dieser Prozedur geändert wird
    Dim GeräteZF As str_DEVMODE
    Dim DM As type_DEVMODE
    Dim strGerätemodus As String
    Dim rpt As Report
    DoCmd.OpenReport strRptName, acViewDesign 'Bericht öffnen.
    Set rpt = Reports(strRptName)
    If Not IsNull(rpt.PrtDevMode) Then
    strGerätemodus = rpt.PrtDevMode 'PrtDevMode holen
    GeräteZF.strGZF = strGerätemodus
    LSet DM = GeräteZF
    DM.lngFields = DM.lngFields Or DM.intDefaultSource 'Das Element Fields initialisieren.
    DM.intDefaultSource = intSchacht
    LSet GeräteZF = DM 'PrtDevMode aktualisieren.
    Mid(strGerätemodus, 1, 94) = GeräteZF.strGZF
    rpt.PrtDevMode = strGerätemodus
    End If
    'Bericht schließen; Änderungen speichern
    'Hier tritt der Laufzeitfehler „Zu wenig Speicher“ auf!!!!!!!!!
    DoCmd.Close acReport, strRptName, acSaveYes
    End Sub

  • #2
    hast du da schon was rausgefunden? bäruchte auch genau sowas...

    hoffentlich meldest du dich bei mir ... vielen dank
    Zuletzt editiert von Jemand Anders; 10.01.2013, 15:31.

    Comment

    Working...
    X