Formualr Belegdruck

Dieses Thema im Forum "AddIns" wurde erstellt von sconrad, 3. Dezember 2017.

  1. sconrad

    sconrad Mitglied Mitglieder

    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
     
  2. POLAT

    POLAT Mitglied

    Hmmm, auch da kommt doch das Fenster mit dem Druckprozess?
     
  3. sconrad

    sconrad Mitglied Mitglieder

    ja, und genau das will ich beeinflußen und weis nicht wie ... DCM ist irgendwie externeABf (oder so)
     
  4. akabelitz

    akabelitz Administrator Mitglieder

    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.
     
  5. sconrad

    sconrad Mitglied Mitglieder

    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
     
  6. POLAT

    POLAT Mitglied


    Kann dir Montag ein Beispiel senden. Hab das schon einmal gemacht.
     
  7. akabelitz

    akabelitz Administrator Mitglieder

    Ich muss mal schauen, irgendwo habe ich die ComboBox der Druckprozessauswahl manipuliert :)
     
  8. sconrad

    sconrad Mitglied Mitglieder

    Suuuuper -ich übe mich in Geduld :)
     
  9. akabelitz

    akabelitz Administrator Mitglieder

    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
     
  10. sconrad

    sconrad Mitglied Mitglieder

    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 ?
     
  11. akabelitz

    akabelitz Administrator Mitglieder

    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
     
  12. sconrad

    sconrad Mitglied Mitglieder

    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: 11. Dezember 2017
  13. sconrad

    sconrad Mitglied Mitglieder

    Schickst Du mir das Beispiel noch ?
     
  14. POLAT

    POLAT Mitglied

    jup, sorry war leider viel los heute
     
  15. sconrad

    sconrad Mitglied Mitglieder

    ja, kenn ich ;)
     
  16. sconrad

    sconrad Mitglied Mitglieder

    Es klappt nicht - hattest Du die Box als eigenes Formular ausgelagert ?
     
  17. akabelitz

    akabelitz Administrator Mitglieder

    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.
     
  18. akabelitz

    akabelitz Administrator Mitglieder

    Also bei der Sache oben habe ich nix ausgelagert
     
  19. sconrad

    sconrad Mitglied Mitglieder

    Was mache ich falsch in dem Add In ? Ich verzweifel mittlerweile ....
     

    Anhänge:

  20. POLAT

    POLAT Mitglied

    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
    
     

Diese Seite empfehlen