Datensätze beim Drucken aus einer Excel-Datenbank markieren
Frage
BarTender kann nur aus einer Datenbank lesen, aber ich möchte eine Zeile in Excel als gelesen markieren, sobald sie verarbeitet wurde. Ist das möglich?
Antwort
Am besten fügen Sie ein zusätzliches Feld in das Excel-Arbeitsblatt ein, das als „Etikett gedruckt“-Kennzeichen dient. Wenn ein Datensatz zum Drucken eines Etiketts verwendet wird, wird ein Wert in das Feld „Etikett gedruckt“ geschrieben, um zu markieren, dass es bereits gedruckt wurde. Beim Verbinden mit der Excel-Datei kann eine Abfrage verwendet werden, die alle Datensätze auslässt, bei denen das Feld „Etikett gedruckt“ gesetzt ist.
Leider ist BarTender in Bezug auf die Datenbankanbindung eine reine Leseanwendung. Das bedeutet, dass wir, um einen Wert in einen gedruckten Datenbankeintrag zurückzuschreiben, die integrierte VB-Scripting-Funktion von BarTender nutzen müssen. Hier sind die Beispieldateien:
In der Excel-Datei gibt es zwei Felder: eines für ein Produkt und ein weiteres, das anzeigt, wann der Datensatz des Produkts gedruckt wurde.
Im BarTender-Etikettenformat habe ich eine Verbindung zur Excel-Datei hergestellt, die davon ausgeht, dass sie im Ordner „C:\Seagull“ liegt. Es wird eine Abfrage verwendet, um nur die Produkte (Datensätze) zu finden und ggf. zu drucken, bei denen in der Spalte „Printed“ nicht „YES“ steht. Die Option „Datensatz beim Drucken auswählen“ ist aktiviert, sodass der Benutzer auswählen kann, welche der noch nicht gedruckten Datensätze gedruckt werden sollen.
Während des Druckvorgangs läuft das im roten Objekt außerhalb des Etiketts enthaltene VB-Skript ab. Es verbindet sich mit der Excel-Datei, sucht den aktuell zu druckenden Datensatz und setzt das Feld „Printed“ auf den Wert „YES“, sodass dieser Datensatz beim nächsten Druckvorgang nicht mehr zur Auswahl steht. Das VB-Skript sieht wie folgt aus:
OnNewRecord-Ereignis
'Objektnamen definieren.
dim objConn
dim strConn
dim rs
'Konstanten für die Datenbankverbindung definieren.
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
'Mit der Excel-Datei verbinden.
Set objConn = CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Seagull\Fruits.xls';Extended Properties=""Excel 8.0;HDR=YES;"""
'Erstellen eines Recordsets mit dem aktuellen zu druckenden Datensatz.
Set rs = CreateObject("ADODB.Recordset")
rs.open "SELECT * FROM [Sheet1$]", objConn, adOpenStatic, adLockOptimistic, adCmdText
rs.Find "Product = '" & Field("Sheet1$.Product") & "'"
'Das Feld „Printed“ des Datensatzes auf „YES“ setzen, um zu kennzeichnen, dass es gedruckt wurde.
rs.Fields("Printed") = "YES"
rs.Update
Die fett markierten Elemente können Sie entsprechend Ihrem Excel-Pfad und Dateinamen sowie den Namen der Felder, die Sie suchen und aktualisieren möchten, anpassen. Sie können dieses Beispiel für Ihre eigenen Etikettendruck-Anforderungen verwenden.