powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Украина работа с ЭККА Mini 600.01 и Mini 600.05
25 сообщений из 30, страница 1 из 2
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228730
kvova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрий день, у нас к базе акцес (97) подключены эти два ЭККА (см. сабж)
все время с ними проблемы, зависание базы при печати чеков, ошыбки ...
Производитель драйверов говорит что проблема в нашей базе, так как у других клиентов на 1С все ок. В программе у нас все просто, должно работать, незнаю может я чего не так делаю?
Буду благодарен за пример работы с ЭККА на VBA, или советы.
Зарание спасибо.
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228744
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть ты действительно что-то не так делаешь...
Проблема в том, что уважаемой публике неизвестно, что ты делаешь...
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228760
kvova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(Vsevolod V) запостить код что б вы посмотрели?
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228767
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как хочешь :)
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228771
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если на других компьютерах тоже самое работает, то:
1. Сжать/восстановить базу данных
2. Если не помоголо 1-е: создать новую базу и импортировать туда все из этой
3. п.2 не помого: дело видимо в другом....
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228775
kvova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это функция инициализации драйвера запускается при запуске базы

Function InitEcr() As Boolean
On Error GoTo Err_InitEcr
' Initialize dll
Dim ErrN As Variant
Set mini = CreateObject("MiniServer.MiniServ.1")
If CompName = "KASA1" Then
m_aEcrType = 22
InitEcr = -mini.InitEcr(m_aChannel, m_aEcrType, m_aMaxUsedPLU, m_aIsAsyncModeT)
ElseIf CompName = "MAGAZYN-1" Then
m_aEcrType = 7
InitEcr = -mini.InitEcr(m_aChannel, m_aEcrType, m_aMaxUsedPLU, m_aIsAsyncModeF)
Else
GoTo Exit_InitEcr
End If
If mini.GetRoundType <> m_aRoundType Then ' Set RoundType
mini.SetRoundType (m_aRoundType)
End If
If mini.GetPriceType <> m_aPriceType Then ' Set PriceType
mini.SetPriceType (m_aPriceType)
End If
mini.SetVatType (m_aVatType)
Exit_InitEcr:
Exit Function
Err_InitEcr:
ErrN = mini.GetErrorCode
MessageError (ErrN)
GoTo Exit_InitEcr
End Function

это функция для печати чека

Function PrintCheck() As Boolean
' Prints current operation on Cash Register.
On Error GoTo Err_PrintCheck
Dim ErrN As Variant
Dim dbs As Database, rst As Recordset, U_Reply As String, U_ReplyDate As String
Dim qd As QueryDef, SQL_ As String, GName As String, Good_B As Variant, Kurs As Variant
Dim Tr As Long
Dim Help As Integer
SumCarry "MatC"
SQL_ = "SELECT Sum(Spec.Qty) As SQty, [_Goods].DNam, Spec.GPrice, [_Goods].PriceSt, [Good_Name]"
SQL_ = SQL_ + " FROM _Goods INNER JOIN (_Inv_Good INNER JOIN Spec ON [_Inv_Good].Inv_Good_ID = Spec.Inv_Good_ID) ON [_Goods].Good_Name = [_Inv_Good].Good_ID"
SQL_ = SQL_ + " GROUP BY [_Goods].DNam, Spec.GPrice, [_Goods].PriceSt, Spec.Trans_ID, [Good_Name]"
SQL_ = SQL_ + " HAVING Trans_ID=" + Format$([Forms]![MatC]![Trans_ID])

' Prepare recordset
Set dbs = Workspaces(0).Databases(0)
Set rst = dbs.OpenRecordset(SQL_, dbOpenSnapshot, dbReadOnly)

If rst.RecordCount = 0 Then ' Test Number of records
MsgBox "В чеку нема жодної позицiї!", vbCritical, "Помилка"
GoTo Err_PrintCheck
End If

' Check short name
rst.FindFirst "DNam = '' Or IsNull(DNam)"
If Not (rst.NoMatch) Then
MsgBox "Неможливо роздрукувати чек через вiдсутнiсть скороченої назви на товар" + Chr$(13) + Chr$(13) + rst![Good_Name], vbCritical, "Помилка"
GoTo Err_PrintCheck
End If

' Check Price
rst.FindFirst "GPrice = 0 Or IsNull(GPrice)"
If Not (rst.NoMatch) Then
MsgBox "Неможливо роздрукувати чек через вiдсутнiсть ціни на товар" + Chr$(13) + Chr$(13) + rst![Good_Name], vbCritical, "Помилка"
GoTo Err_PrintCheck
End If

' Check PriceSt
rst.FindFirst "PriceSt = 0 Or IsNull(PriceSt)"
If Not (rst.NoMatch) Then
MsgBox "Неможливо роздрукувати чек через вiдсутнiсть магазинної ціни на товар" + Chr$(13) + Chr$(13) + rst![Good_Name], vbCritical, "Помилка"
GoTo Err_PrintCheck
End If

' Check GPrice > Cost
Good_B = 0
Kurs = DLookup("[Last_Kursac]", "Курси")
If (Not Efficiency_Off) Then
Good_B = DCount("[Good_ID]", "MD_C", "([GPrice]-([Cost]*[Kurs]))/IIf(IsNull([Cost]),0.01,[Cost])<" + Format$(Efficiency))
If Good_B > 0 Then
U_Reply = MsgBox("В проводці є товари (" + Format$(Good_B) + " шт.), " + Chr$(13) + " які продано нижче рентабельності " + Format$(Efficiency, "0%") + "!" + Chr$(13) + Chr$(13) + "Продовжити друк чеків - Yes," + Chr$(13) + "Відмінити друк - No.", vbInformation + vbDefaultButton2 + vbYesNo)
If U_Reply = vbNo Then ' Edit
GoTo Err_PrintCheck
End If
End If
End If

rst.FindFirst "SQty = 0"
If Not (rst.NoMatch) Then
MsgBox "Неможливо роздрукувати чек через вiдсутнiсть кількості проданого товару" + Chr$(13) + Chr$(13) + rst![Good_Name], vbCritical, "Помилка"
GoTo Err_PrintCheck
End If
rst.MoveFirst
mini.OpenCheck ("")
While Not rst.EOF ' Cycle over sold Goods
GName = IIf(IsNull(rst!DNam), left$(rst![Good_Name], 11), rst!DNam)
Help = -mini.RegCheckPos(GName, CDbl(rst!PriceSt), CDbl(rst!SQty), m_aVatNum, CDbl(0))
rst.MoveNext
Wend
If MsgBox("Закрити чек?" + Chr$(13) + Chr$(13) + " Yes - закрити чек," + Chr$(13) + " No - анулювати чек.", vbDefaultButton1 + vbYesNo + vbQuestion, "Друк чеку") = vbYes Then
Call CloseCheck
' Lock opearation
If IsFormLoaded("MatC") Then
Forms![MatC]![Buh] = 2
Call SecurityMATC(5)
Tr = [Forms]![MatC]![Trans_ID]
DoCmd.SetWarnings False
DoCmd.RunSQL "Delete * From TimerTab Where TransID = " & Tr & ";"
DoCmd.RunSQL "INSERT INTO TimerTab ( TransID, TimerT, UserName ) SELECT [Forms]![MatC]![Trans_ID], Timer(), CurrentUser();"
DoCmd.SetWarnings True
End If
Else
mini.CancelCheck
End If
Exit_PrintCheck:
rst.close
Set dbs = Nothing
Exit Function
Err_PrintCheck:
ErrN = mini.GetErrorCode
MessageError (ErrN)
GoTo Exit_PrintCheck
End Function
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228784
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие ошибки?
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228785
kvova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(Vsevolod V) это я делаю регулярно, думаю проблема в другом
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228791
kvova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
иногда база зависает намертво, иногда акцес выполнил недопустимую оперецию и будет закрыт, иногда на ЭККА ошыбка 14 (недопустимая операция)
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228796
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Windows 98???
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228802
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какой смысл в вот этом:
Set dbs = Workspaces(0).Databases(0)
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228803
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2kvova

а в 1С смотрел как там у них сделано?
При определеной фантазии - даже можно что-то понять :)

По моему: или баг у тебя (сравнивай с 1С) или у Акеса, которому не нравиться "MiniServer.MiniServ.1".
Кстати почему именно позднее связывание через CreateObejct?
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228807
kvova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2000 и 98, на 98 виснет, а на 2к акцес в коврик сворачивается, вот такая не веселая история...
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228816
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>акцес в коврик сворачивается
???
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228817
Фотография TatianaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exit_PrintCheck:
rst.close
Set dbs = Nothing

Exit Function
Err_PrintCheck:
ErrN = mini.GetErrorCode
MessageError (ErrN)
GoTo Exit_PrintCheck
End Function


а если всё-таки так:
rst.close
Set rst = Nothing
dbs.close
Set dbs = Nothing
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228827
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В догонку Татьяне
Set mini=Nothing
возможно у mini есть свой оператор деинициализации. Надоть смотреть в доки.

==
Так все же почему позднее связывание???
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228830
kvova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1с код смотрел (я больше 1с-ом занимаюсь), ничего особенного не увидел..

>Кстати почему именно позднее связывание через CreateObejct?
не понял вопрос, сначала подключаем библиотеку драйвера
Set mini = CreateObject("MiniServer.MiniServ.1")
потом инициализиция ЭККА, вроде все верно.

>А какой смысл в вот этом:
>Set dbs = Workspaces(0).Databases(0)
не знаю, этот код не я писал и в vba я неочень силен.
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228841
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
'Check short name
rst.FindFirst "DNam = '' Or IsNull(DNam)"
И что это значит?
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228843
kvova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(Vsevolod V) извени, в коврик значит програма выполнила недопустимую операцию и будет закрыта
(TatianaT)спасибо, так сделаю, но надо время что б понять помогло или нет
>возможно у mini есть свой оператор деинициализации. Надоть смотреть в доки.
да есть запускаю при закрытии базы
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228845
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
типа "тяп-ляп"...
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228852
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>не понял вопрос, сначала подключаем библиотеку драйвера
Set mini = CreateObject("MiniServer.MiniServ.1")
потом инициализиция ЭККА, вроде все верно.


Можно через ссылки подключить этот "драйвер" - это будет называться ранними связывание (рекомендуется с точки зрения скорости).
Другие плюсы: по F2 сможешь видеть всю структуры драйвера, будет работать IntelliMouse (это когда после точки выскакивает список объектов, а после написание имени функции - ее состав)
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228857
kvova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(VIG) проверяет заполнен ли реквизит DNam у всех товаров, это наименование товаров для печати чеков
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228862
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имел в виду что там синтаксис неправильный
Наверно надо так
'Check short name
rst.FindFirst "DNam = 0' Or IsNull(DNam)"
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228864
kvova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(Senin Viktor) а если через ссылки подключать мне надо будет, на всех станциях (которые работают с базой) этот драйвер регистрировать?
...
Рейтинг: 0 / 0
Украина работа с ЭККА Mini 600.01 и Mini 600.05
    #32228868
kvova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(VIG) там rst.FindFirst "DNam = ' ' Or IsNull(DNam)" и это работает.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Украина работа с ЭККА Mini 600.01 и Mini 600.05
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]