Search  

   

Latest News  

Problemstellung:Wenn man Etiketten drucken will steht man oft vor einigen Problemen.1. Man möchte nur ein paar Etiketten drucken und beim nächsten Druck braucht man wieder   ein neues Blatt weil freie...
   

Latest Forumposts  

  • Keine Beiträge vorhanden
   

Kommentare  

Tut mir leid Hella, ich kann Dir nicht folgen? 13.04.2017 - 14.04.2017 ergibt bei mir 1 13.04.2017 -...
Gast - Hella
Hallo, Berechne wie folgt, ob "zu früh" oder "zu spät" Rückmeldet. Früher sollte auch mit negativer ...
Gast - Hella
Hallo, mit negativen Werten meine ich z.B. -5 Tage (ohne Wochenende) u.ä. Zur Zeit wird nur die 0 au...
Hallo Hella, wie negative Werte? Kannst Du es erläutern was Du machen willst? Gruß Tommy
Gast - Hella
Hallo, ich bräuchte auch negative Werte bei der Anzahl, wie kann man das realisieren? Liebe Grüße He...
   

Counter  

1073007
HeuteHeute480
GesternGestern1118
Diese WocheDiese Woche2668
Dieser MonatDieser Monat13545
GesamtGesamt1073007
Highest 07.12.2017 : 1250
US
UNITED STATES
US

This page uses the IP-to-Country Database provided by WebHosting.Info (http://www.webhosting.info), available from http://ip-to-country.webhosting.info

   

Download Statistik  

Diese Site enthält 187 Downloads in 30 Kategorien. Gesamtdownloads bisher: 233293
   
Free live stats and visitor counter for Joomla, Wordpress, Drupal, Magento and Prestashop
   

Login

   

User Online

Total: 24 Members: 0 Guests: 24
No members online
   

Etikettendruck mit Beginn an beliebiger Position

Bewertung:  / 1
SchwachSuper 
Details

Problemstellung:
Wenn man Etiketten drucken will steht man oft vor einigen Problemen.
1. Man möchte nur ein paar Etiketten drucken und beim nächsten Druck braucht man wieder
   ein neues Blatt weil freie Etiketten z.B. erst ab 7. Postition vorhanden sind.

2. Man möchte von einer gleichen Adresse mehrere Etiketten drucken.

Für diese beiden Probleme möchte ich hier eine Lösung vorstellen.

Voraussetzungen:
Das Bsp ist ab A2002 lauffähig. (Download enthält eine mdb-Datei für A2002/A2003 und eine accdb ab A2007)

Lösung:
Als Bsp. habe ich die Kundentabelle aus der "Nordwind-DB" von MS genommen.
Die Download DB kann aber nach eigenem Ermessen angepasst werden.

Die Datenbank benötigt für die Lösung eine zusätzliche Tabelle (hier im Bsp. "tbl_KundenTmp").
Diese kann sich auch in einer anderen DB befinden und als Verknüpfung eingebunden werden.
Wichtig ist nur das diese Tabelle die gleichen Felder enthält die in der Adresstabelle vorhanden sind
bzw. für den Etikettendruck benötigt werden.

Achtung: die Felder in der "tbl_KundenTmp" dürfen nicht indiziert sein und müssen leere Zeichenfolgen zulassen.

Um das Bsp. in Eurer DB zu verwenden müsst Ihr als erstes einen Etikettenbericht mit Euren Etikettenmaßen erstellen.
In meinem Bsp. ist das Etikett mit einem Rechteck mit Rahmen hinterlegt. Dieser dient nur zu Layoutzwecken für dieses Bsp. und ist nicht erforderlich.

Kommen wir nun zum 1. Teil in dem wir den Etikettendruck an einer bestimmten Position beginnen lassen wollen.

Im Formular sehen wir die Adressliste in einem Endlosform.
Links befindet sich eine Checkbox mit der man die zu druckenden Datensätze markieren kann (gelb).
Um alle Datensätze aus- bzw. abzuwählen kann man die beiden Buttons oben benutzen (grün).
Soll der Druck an der 1. Position beginnen kann jetzt einfach der Button "Drucken" geklickt werden.

Wurde kein Datensatz markiert kommt ein Warnhinweis und der Vorgang wird abgebrochen

Jetzt kann in dem Kombifeld die Startposition des ersten zu druckenden Etiketts festgelegt werden (orange).
Hier ein Bsp: es wurden 4 Adressen markiert und der Druck soll ab der Position 4 beginnen.

Ergebnis der Druckvorschau:

Der Code ist nicht kompliziert:

Private Sub cmd_Print_Click()
    Dim iMark As Integer, i As Integer
    Dim rs As DAO.Recordset

    'Temp Tabelle leeren
    CurrentDb.Execute "DELETE tbl_KundenTmp.* FROM tbl_KundenTmp;"

    'Prüfen ob min. ein Datensatz ausgewählt wurde
    iMark = fcDomWert("Firma", "tbl_Kunden", "[Print]=-1", ltDCount)

    'Wenn kein Datensatz ausgewält wurde ist hier Schluss
    If iMark = 0 Then
        MsgBox "Keinen Datensatz gewählt!", vbCritical + vbOKOnly, "Fehler"
        Exit Sub
    End If

    'Ist Startpostion=1 dann wird der normale Etikettenbericht angezeigt
    If Me.cbo_Start = 1 Then
        DoCmd.OpenReport "rpt_Etikett_Start", acViewPreview
    Else
        'Anzahl der Dummy Datensätze erzeugen für Startpostion
        Set rs = CurrentDb.OpenRecordset("tbl_KundenTmp")
        For i = 1 To Me.cbo_Start - 1
            rs.AddNew
            rs!Print = -1
            rs.Update
        Next i
        rs.Close
        DoCmd.OpenReport "rpt_Etikett_Start", acViewPreview
    End If
End Sub

Zuerst wird die Tabelle mit den temporären Datensätzen geleert. Dann wird geprüft ob min. ein Datensatz markiert wurde.
Ist die Startposition=1 dann wird der Bericht normal geöffnet ansonsten wird ein Anzahl (Startpostition -1) Dummy Datensätzen erstellt.
Diese Daten werden dann in Unionabfrage "qry_Output" aus der Adress- und Temptabelle zusammen gefügt

SELECT tbl_KundenTmp.Firma,
       tbl_KundenTmp.Kontaktperson,
       tbl_KundenTmp.Straße,
       tbl_KundenTmp.PLZ,
       tbl_KundenTmp.Ort,
       tbl_KundenTmp.Print
FROM tbl_KundenTmp
WHERE (((tbl_KundenTmp.Print)=-1))
ORDER BY tbl_KundenTmp.Firma,
         tbl_KundenTmp.Kontaktperson
UNION ALL
SELECT tbl_Kunden.Firma,
       tbl_Kunden.Kontaktperson,
       tbl_Kunden.Straße,
       tbl_Kunden.PLZ,
       tbl_Kunden.Ort,
       tbl_Kunden.Print
FROM tbl_Kunden
WHERE (((tbl_Kunden.Print)=-1));

Im 2. Teil soll das Ziel sein von einer oder mehreren Adressen mehrere Etiketten mit der gleichen Adresse zu drucken

Auch soll hier die Startposition festgelegt werden können.

 

In diesem Fall nehme ich ein Einzelformular. Dort können dann die zu druckenden Adressen markiert werden (gelb).
Auch kann hier wieder die Startposition gesetzt werden (grün).
Und die Anzahl der Etiketten die von der jeweiligen Adresse gedruckt werden sollen (orange).

Ergebnis der Druckvorschau bei Startpostion=3, Anzahl der Etiketten=5, gewählt ein Datensatz:

Hier wurde der Code dahin erweitert das von den markierten Adressen die gewählte Anzahl in der Temptabelle kopiert werden.

Private Sub cmd_Print2_Click()
    Dim iMark As Integer, i As Integer, j As Integer, k As Integer
    Dim rs As DAO.Recordset, rsIn As DAO.Recordset, rsOut As DAO.Recordset

    'Temp Tabelle leeren
    CurrentDb.Execute "DELETE tbl_KundenTmp.* FROM tbl_KundenTmp;"

    'Prüfen ob min. ein Datensatz ausgewählt wurde
    iMark = fcDomWert("Firma", "tbl_Kunden", "[Print]=-1", ltDCount)

    'Wenn kein Datensatz ausgewält wurde ist hier Schluss
    If iMark = 0 Then
        MsgBox "Keinen Datensatz gewählt!", vbCritical + vbOKOnly, "Fehler"
        Exit Sub
    End If

    'Ist Startpostion=1 dann wird der normale Etikettenbericht angezeigt
    If Me.cbo_Start1 = 1 Then
        'Anzahl der zu druckenden Etiketten erzeugen
        Set rsIn = CurrentDb.OpenRecordset("qry_Adressen")
        Set rsOut = CurrentDb.OpenRecordset("tbl_KundenTmp")
        Do While Not rsIn.EOF
            'Anzahl der gewählten Datensätze durchlaufen
            For j = 1 To Me.cbo_Anzahl
                rsOut.AddNew
                'Inhalt der Adressfelder in Temp Tabelle schreiben
                For k = 0 To 6
                    rsOut.Fields(k) = rsIn.Fields(k)
                Next k
                rsOut.Update
            Next j
            rsIn.MoveNext
        Loop
        rsIn.Close
        rsOut.Close
        DoCmd.OpenReport "rpt_Etikett_Start2", acViewPreview
    Else
        'Anzahl der Dummy Datensätze erzeugen für Startpostion
        Set rs = CurrentDb.OpenRecordset("tbl_KundenTmp")
        For i = 1 To Me.cbo_Start1 - 1
            rs.AddNew
            rs!Print = -1
            rs.Update
        Next i
        rs.Close
        'Anzahl der zu druckenden Etiketten erzeugen
        Set rsIn = CurrentDb.OpenRecordset("qry_Adressen")
        Set rsOut = CurrentDb.OpenRecordset("tbl_KundenTmp")
        Do While Not rsIn.EOF
            'Anzahl der gewählten Datensätze durchlaufen
            For j = 1 To Me.cbo_Anzahl
                rsOut.AddNew
                'Inhalt der Adressfelder in Temp Tabelle schreiben
                For k = 0 To 6
                    rsOut.Fields(k) = rsIn.Fields(k)
                Next k
                rsOut.Update
            Next j
            rsIn.MoveNext
        Loop
        rsIn.Close
        rsOut.Close
        DoCmd.OpenReport "rpt_Etikett_Start2", acViewPreview
    End If
End Sub

Ich hoffe es hilft Diesem oder Jenem weiter.Zwinkernd

Dateien:
Etikettendruck ab bestimmter Position 03

Etikettendruck ab bestimmter Position

Die Rar-Datei enthält eine mdb-Datei für A2002/2003
Datum 23.04.2014 Dateigröße 48.16 KB Download 285

Etikettendruck ab bestimmter Position 07

Etikettendruck ab bestimmter Position

Die Rar-Datei enthält eine accdb-Datei ab A2007

Datum 23.04.2014 Dateigröße 40.48 KB Download 401

Einen Kommentar verfassen

Als Gast kommentieren

0 / 300 Zeichen Beschränkung
Dein Text sollte zwischen 10-300 Zeichen lang sein
Nutzungsbedingungen.
  • Keine Kommentare gefunden