Принтер Xprinter, протокол ESC/POS, USB интерфейс
В таблице товаров отмечаются галочками те товары, ценники к которым нужно распечатать, нажимаем кнопку в панели управления, которая вызывает скрипт.
VBS-скрипт:
Код:
'настройки, путь к базе, куда выводим и путь к принтеру
sDbPath = "D:\Склад и торговля\baza.mdb"
fileout1 = "D:\Склад и торговля\Stickers.prn"
printer1 = "\\VAIO\Xprinter_XP-350B\Stickers.prn"
'Выбираем данные из базы
Set Con = CreateObject("ADODB.Connection") 'создание объекта Connection
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDbPath & ";Persist Security Info=False" 'открываем соединение с базой данных
sSql = "SELECT * FROM tblMain WHERE ForPrint = -1"'формируем SQL инструкцию для набора записей
Set rstA = CreateObject("ADODB.Recordset") 'создание объекта Recordset
rstA.Open sSql, Con 'открытие набора записей
'Предупреждение
If rstA.EOF = True Then
msgbox "Не выбраны товары для печати. Поставьте галочки"
WScript.Quit
End IF
'собираем данные из базы в текстовую команду
s = "SIZE 30 mm, 20 mm" & vbcrlf
s = s + "DIRECTION 1,0" & vbcrlf
s = s + "REFERENCE 0,0" & vbcrlf
s = s + "OFFSET 0 mm" & vbcrlf
s = s + "SET PEEL OFF" & vbcrlf
s = s + "SET TEAR ON" & vbcrlf
s = s + "CLS" & vbcrlf
Do Until rstA.EOF 'начало цикла
'определяем штрих-код, если 13 цифр то это ean13 иначе - code 128
If len(rstA("BarCode").Value) <> 13 Then
s = s + "BARCODE 0,0,""128"",48,1,0,2,4,""" & rstA("BarCode").Value & """" & vbcrlf
Else
s = s + "BARCODE 0,0,""EAN13"",48,1,0,2,4,""" & rstA("BarCode").Value & """" & vbcrlf
End If
s = s + "TEXT 0,80,""1"",0,1,2,""" & rstA("ProductCode").Value & """" & vbcrlf
s = s + "TEXT 0,125,""2"",0,1,1,""price:""" & vbcrlf
s = s + "TEXT 90,120,""3"",0,1,1,""" & rstA("PriceOut1").Value & """" & vbcrlf
s = s + "PRINT 1,1" & vbcrlf
s = s + "CLS" & vbcrlf
rstA.MoveNext
Loop 'конец цикла
'msgbox s
'запись текстовой команды в файл
set FSO=CreateObject("Scripting.FileSystemObject")
set file = FSO.CreateTextFile(fileout1)
file.WriteLine(s)
file.Close
WScript.Sleep 1000
'вывод на принтер
Const OverwriteExisting = True
FSO.CopyFile fileout1 , printer1, OverwriteExisting
WScript.Sleep 1000
'снять галочки
sSql = "UPDATE tblMain SET ForPrint = 0"
Con.Execute sSql
set FSO = Nothing
rstA.Close
Set rstA = Nothing
Con.Close 'закрытие соединения с БД
Set Con = Nothing 'очистка переменной
скрипт формирует текстовый файл типа такого, все отступы установлены экспериментальным путем:
Код:
SIZE 30 mm, 20 mm
DIRECTION 1,0
REFERENCE 0,0
OFFSET 0 mm
SET PEEL OFF
SET TEAR ON
CLS
BARCODE 0,0,"128",48,1,0,2,4,"Штрих-код"
TEXT 0,80,"1",0,1,2,"Артикул"
TEXT 0,125,"2",0,1,1,"price:"
TEXT 90,120,"3",0,1,1,"Цена"
PRINT 1,1
CLS
BARCODE 0,0,"128",48,1,0,2,4,"Штрих-код2"
TEXT 0,80,"1",0,1,2,"Артикул2"
TEXT 0,125,"2",0,1,1,"price:"
TEXT 90,120,"3",0,1,1,"Цена2"
PRINT 1,1
CLS