Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2013, 13:05   #1
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
Печаль Вывести штрихкод в отчете....

Помогите люди добрые!!!!! Кто имел дело с штрих кодами в формате Code 128, отзовитесь пожалуйста! Нужно вывести в отчет данные таблицы, чтобы одно из полей выводилось в виде штрих- кода. Поле содержит как цифры, так и буквы. Поэтому нужна кодировка Code 128 или Code 39. Нигде не могу найти функцию, чтобы закодировать эти данные! Накопала функцию для Code 128, но она во всех источника приводится в неполном формате: необъявлены 2 функции, вызываемые в конце. Может кто-нибудь объяснить, что нужно дописать, чтобы эта функция сработала, и создалася штрих-код?
Код:
Public Function Code_128(A As String) As String
    Dim BCode(0 To 1023) As Integer
    Dim BInd As Integer
    Dim CurMode As String
    Dim Ch As Integer
    Dim Ch2 As Integer
    Dim I As Integer
    Dim LenA As Integer
    Dim CCode As Integer
    Dim S As String
    Dim BarArray As Variant
    
    'Собираем строку кодов
    BInd = 0
    CurMode = ""
    I = 1
    LenA = Len(A)
    While I <= LenA
        'Текущий символ в строке
        Ch = Asc(Mid(A, I, 1))
        I = I + 1
        'Разбираем только символы от 0 до 127
        If Ch <= 127 Then
            'Следующий символ
            If I <= LenA Then
                Ch2 = Asc(Mid(A, I, 1))
            Else
                Ch2 = 0
            End If
            'Пара цифр - режим С
            If (48 <= Ch) And (Ch <= 57) And _
               (48 <= Ch2) And (Ch2 <= 57) Then
                I = I + 1
                If BInd = 0 Then
                    'Начало с режима С
                    CurMode = "C"
                    BCode(BInd) = 105
                    BInd = BInd + 1
                ElseIf CurMode <> "C" Then
                    'Переключиться на режим С
                    CurMode = "C"
                    BCode(BInd) = 99
                    BInd = BInd + 1
                End If
                'Добавить символ режима С
                BCode(BInd) = CInt(Chr(Ch) & Chr(Ch2))
                BInd = BInd + 1
            Else
                If BInd = 0 Then
                    If Ch < 32 Then
                        'Начало с режима A
                        CurMode = "A"
                        BCode(BInd) = 103
                        BInd = BInd + 1
                    Else
                        'Начало с режима B
                        CurMode = "B"
                        BCode(BInd) = 104
                        BInd = BInd + 1
                    End If
                End If
                'Переключение по надобности в режим A
                If (Ch < 32) And (CurMode <> "A") Then
                    CurMode = "A"
                    BCode(BInd) = 101
                    BInd = BInd + 1
                'Переключение по надобности в режим B
                ElseIf ((64 <= Ch) And (CurMode <> "B")) Or (CurMode = "C") Then
                    CurMode = "B"
                    BCode(BInd) = 100
                    BInd = BInd + 1
                End If
                'Служебные символы
                If (Ch < 32) Then
                    BCode(BInd) = Ch + 64
                    BInd = BInd + 1
                'Все другие символы
                Else
                    BCode(BInd) = Ch - 32
                    BInd = BInd + 1
                End If
            End If
        End If
    Wend
    'Подсчитываем контрольную сумму
    CCode = BCode(0) Mod 103
    For I = 1 To BInd - 1
        CCode = (CCode + BCode(I) * I) Mod 103
    Next I
    BCode(BInd) = CCode
    BInd = BInd + 1
    'Завершающий символ
    BCode(BInd) = 106
    BInd = BInd + 1
    'Собираем строку символов шрифта
    'BarArray = Array("155", "515", "551", "449", "485", "845", "458", "494", "854", _
        "548", "584", "944", "056", "416", "452", "065", "425", "461", "560", "506", _
        "542", "164", "524", "212", "245", "605", "641", "254", "614", "650", "119", _
        "191", "911", "089", "809", "881", "098", "818", "890", "188", "908", "980", _
        "01:", "092", "812", "029", "0:1", "821", "221", "182", "902", "128", "1:0", _
        "122", "209", "281", ":01", "218", "290", ":10", "230", "5<0", ";00", "04=", _
        "0<5", "40=", "4<1", "<05", "<41", "05<", "0=4", "41<", "4=0", "<14", "<50", _
        "=40", "50<", "320", "=04", "830", "047", "407", "443", "074", "434", "470", _
        "344", "704", "740", "113", "131", "311", "00;", "083", "803", "038", "0;0", _
        "308", "380", "023", "032", "203", "302", "A", "B", "C", "@")
    S = ""
    For I = 0 To BInd - 1
        S = S & Code_Char(Code_128_ID(BCode(I)))
        'S = S & BarArray(BCode(I))
    Next I
    Code_128 = S
Swatch вне форума Ответить с цитированием
Старый 19.04.2013, 18:28   #2
Myhaylo
Форумчанин
 
Регистрация: 19.07.2012
Сообщений: 520
По умолчанию

http://am.rusimport.ru/msaccess/f2.aspx?type=1&id=18781
http://am.rusimport.ru/msaccess/f2.aspx?type=1&id=34342
http://am.rusimport.ru/msaccess/f2.a...=64432&page=-1
Окупант, руки прочь от Украины!!! Слава Героям!
Myhaylo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Штрихкод KOMPNET Общие вопросы Delphi 19 19.11.2012 21:08
Фильтр в отчете Vaysbleh Microsoft Office Access 1 31.10.2012 02:09
Фильтр в Отчете thebrownie БД в Delphi 1 29.02.2012 00:54
Заголовок в отчете((( Arinka Помощь студентам 1 04.12.2010 19:44
Таблица в отчете Nikolaeva Компоненты Delphi 0 12.09.2008 11:27