Formualr Belegdruck

sconrad

Mitglied
Teammitglied
Halo Zusammen,

ich brauche mal einen Tipp, und zwar möchte ich in der OL 6.2/7.0 den Druckprozess vorgeben. Beim Speichern eines Beleges kann ich ja Druckprozess in VKBeleg setzen und dann nimmt er den, aber was ist, wenn jemand über die Bildschirmauskuft geht ? Wie ändere ich dort den Druckprozess ?

Gruß,
Stephan
 
ja, und genau das will ich beeinflußen und weis nicht wie ... DCM ist irgendwie externeABf (oder so)
 
Hier kann man echt Kreativ werden :)
Eine Idee wäre zum Beispiel die Tabelle KHKVKBelege die Spalte Druckprozess zu manipulieren.
Hier wird ja der zuletzt verwendetete Druckprozess hinterlegt.
 
Hm .. ich würde gerne per CM auf das Fenster bei der Druckprozessauswahl zugreifen - CM programmieren kann ich - nur weis ich nicht, wie ich das Fenster abfange ... nen paar VBA-Zeilen als Beispiel wäen gut
 
Hm .. ich würde gerne per CM auf das Fenster bei der Druckprozessauswahl zugreifen - CM programmieren kann ich - nur weis ich nicht, wie ich das Fenster abfange ... nen paar VBA-Zeilen als Beispiel wäen gut


Kann dir Montag ein Beispiel senden. Hab das schon einmal gemacht.
 
Ich muss mal schauen, irgendwo habe ich die ComboBox der Druckprozessauswahl manipuliert :)
 
Hier mal das erste Beispiel :)
Verwendete CommonMethod
Token: frmAbfMainErfassungPrint
Property: Formular
Method: BelegPrint

Und so gehts dann weiter :)

Code:
        Case 100
            Dim oForm As Form
            Dim bIstabaKasse As Boolean
            Dim sQry As String
            Dim sClause As String
            Dim mlErfassungsart As AbfErfassungsart
            Dim rs As GenericRecordset
            Set oForm = oStack.oBag.oItem("Formular")
            mlErfassungsart = oStack.oBag.lItem("Erfassungsart")
            If mlErfassungsart = AbfErfassungsart.olVerkauf Then
                bIstabaKasse = gbCBool(gsParameter(oForm.OpenArgs, "CRMSolabaKasse", "0"))
                sQry = oForm.Controls.Item("cboDruckprozess").RowSource
                If bIstabaKasse = False Then
                    sClause = " AND NOT KHKDruckprozesse.Bezeichnung like '%Kasse%' "
                   
                    Set rs = oMandant.oData.OpenGenericRecordset(sQry & sClause, True)
                    If Not rs.EOF Then
                        oForm.Controls.Item("cboDruckprozess") = glCLng(rs!Druckprozess)
                    End If
                    rs.CloseRs
                    Set rs = Nothing
                   
                    'CRM Solutions GmbH - Auswahlliste leeren, damit das UpdateEreignis gefeuert wird
                    oForm.Controls.Item("cboDruckprozess") = ""
                    'CRM Solutions GmbH - Auswahlliste leeren, damit das UpdateEreignis gefeuert wird
                    oForm.Controls.Item("cboDruckprozess").RowSource = sQry & sClause
                    oForm.Controls.Item("cboDruckprozess").Requery
                Else
                    sClause = "AND KHKDruckprozesse.Bezeichnung like '%Kasse%' "
                   
                    Set rs = oMandant.oData.OpenGenericRecordset(sQry & sClause, True)
                    If Not rs.EOF Then
                        oForm.Controls.Item("cboDruckprozess") = glCLng(rs!Druckprozess)
                    End If
                    rs.CloseRs
                    Set rs = Nothing
                   
                    'CRM Solutions GmbH - Auswahlliste leeren, damit das UpdateEreignis gefeuert wird
                    oForm.Controls.Item("cboDruckprozess") = ""
                    'CRM Solutions GmbH - Auswahlliste leeren, damit das UpdateEreignis gefeuert wird
                    oForm.Controls.Item("cboDruckprozess").RowSource = sQry & sClause
                    oForm.Controls.Item("cboDruckprozess").Requery
                End If
                Set oStack.oBag.oItem("Formular") = oForm
            End If
 
Ja, die CM habe ich dafür schon - aber wie greife ich den Druckprozess ab ? Muss ich den Beleg mit oBeleg laden und dann lVKDruckprozess umswitchen ? Am liebsten würde ich auf das Formular zugreifen und den Druckprozess vorgeben - muss ich dann echt das gesamte Formular auslagern und umleiten ?
 
Klick mal auf den Code. Ich manipuliere dort die ComboBox zur Druckprozessauswahl und setzte auch die ComboBox. In meinem Fall halt leer aber da kannst Du auch die ID des Druckprozesses rein packen
 
Aaaarneeee, ich hab den Code nicht gesehen - tausend Dank!!

Hm ... klappt nicht: Fehler 424 - Objekt Erforderlich
Kann das daran liegen, das die CM ausgelöst wird, bevor das Form geladen ist ?
 
Zuletzt bearbeitet:
Ja ausgelagert hatte ich das ganze Formular auch mal aber das war *pieeeeep*
Der Code ist leider von einer 6.0, ich habe leider keine Ahnung ob der mit einer anderen OL Version noch klappt.
 
Was mache ich falsch in dem Add In ? Ich verzweifel mittlerweile ....
 

Anhänge

  • OLAbfAddInTemplate70.zip
    579,4 KB · Aufrufe: 2
Hab gerade mal nachgesehen.
Ich hatte den Fall, dass ich einfach den Druckprozess, egal welcher ausgewählt war, überschreibe...
Und das beim Kopie Druck:

Code:
            If n > 1 Then
              sQry = "SELECT * FROM USysPrinterDefs WHERE Bericht='" & sBericht & "_KOPIE" & CStr(n - 1) & "'"
              Set rs = goMandant.oAppData.rsOpenRecordset(sQry, adOpenForwardOnly)
              If Not rs.EOF Then
                If gbTrue(rs!Country, goMandant.nCountry) Then
                  oPrinterKopie.Init goMandant, Printers, _
                                rs!Bericht, rs!Art, gsCStr(rs!Report), _
                                olPrinterErrorCheckNone, _
                                Nothing, _
                                , _
                                gsCStr(rs!Berichtbezeichnung), _
                                gcCCur(rs!RandLinks), gcCCur(rs!RandRechts), _
                                gcCCur(rs!RandOben), gcCCur(rs!RandUnten)
                  bPrinterChanged = True
                End If
                rs.Close
              End If
            End If
            If bPrinterChanged Then
              Call gbSetPrinterMargin(oPrinterKopie, bKorrespondenzPreview, nBelegtyp, nDruckbeleg, sKennzeichen, True)
              Set oBag.oItem("Printer") = oPrinterKopie
              nil = gbRptOpen(sBeleg, oPrinterKopie, nViewMode, , , , oBag)
            Else
              Call gbSetPrinterMargin(oPrinter, bKorrespondenzPreview, nBelegtyp, nDruckbeleg, sKennzeichen, True)
              Set oBag.oItem("Printer") = oPrinter
              nil = gbRptOpen(sBeleg, oPrinter, nViewMode, , , , oBag)
            End If
 
Zurück
Oben