Marquer les enregistrements imprimés depuis une base de données Excel
Question
BarTender ne permet que la lecture à partir d'une base de données, mais j'aimerais marquer une ligne comme lue dans Excel une fois que c'est fait. Est-ce possible ?
Réponse
La meilleure façon de procéder est d'ajouter un champ supplémentaire dans la feuille Excel pour servir de drapeau "Étiquette imprimée". Lorsqu'un enregistrement est utilisé pour imprimer une étiquette, une valeur est inscrite dans le champ "Étiquette imprimée" pour indiquer qu'il a été imprimé. Une requête peut être utilisée lors de la connexion au fichier Excel pour exclure tous les enregistrements dont le champ "Étiquette imprimée" est renseigné.
Malheureusement, BarTender, en ce qui concerne la connectivité aux bases de données, est une application en lecture seule. Cela signifie que pour écrire une valeur dans un enregistrement de base de données imprimé, il faudra utiliser la fonctionnalité de script VB intégrée à BarTender. Voici les fichiers d'exemple :
Dans le fichier Excel, il y a deux champs : un pour le produit et un autre qui indique si l'enregistrement du produit a été imprimé.
Dans le format d'étiquette BarTender, j'ai créé une connexion au fichier Excel, qui doit se trouver dans le dossier "C:\Seagull". Une requête est utilisée pour ne trouver et donc éventuellement imprimer que les produits (enregistrements) qui n'ont pas le mot "YES" dans la colonne "Printed". L'option de sélection d'enregistrement au moment de l'impression est activée, ce qui permet à l'utilisateur de choisir quels enregistrements non encore imprimés doivent l'être.
Pendant l'impression, le script VB contenu dans l'objet en rouge placé en dehors de l'étiquette exécute un code qui se connecte au fichier Excel, trouve l'enregistrement en cours d'impression et définit le champ "Printed" sur la valeur "YES", afin que lors de la prochaine impression, il ne soit plus disponible dans la boîte de dialogue de sélection. Voici le script VB :
OnNewRecord event
'Définir les noms des objets.
dim objConn
dim strConn
dim rs
'Définir les constantes des paramètres de connexion à la base de données.
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
'Connexion au fichier Excel.
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;"""
'Créer un ensemble d'enregistrements contenant l'enregistrement en cours d'impression.
Set rs = CreateObject("ADODB.Recordset")
rs.open "SELECT * FROM [Sheet1$]", objConn, adOpenStatic, adLockOptimistic, adCmdText
rs.Find "Product = '" & Field("Sheet1$.Product") & "'"
'Définir le champ "Printed" de l'enregistrement à "YES" pour indiquer qu'il a été imprimé.
rs.Fields("Printed") = "YES"
rs.Update
Les éléments en gras peuvent être modifiés selon le chemin et le nom de votre fichier Excel, ainsi que les noms des champs que vous souhaitez rechercher et mettre à jour. Vous pouvez utiliser cet exemple pour l'adapter à vos propres besoins d'impression d'étiquettes.