Проверка на открытие файла.
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Проверка на открытие файла.
Программа крутится на клиенте в режиме 24х7. Держит постоянную связь с сервером Firebird (вроде не по WiFi), таблицы открыты. Есть подозрение, что при спячке таблицы закрываются, может теряется коннект. Сообщений при этом нет. При выходе из спячки не находит записи по Fetch(). Проблема нестабильная. Есть ли возможность проверить таблицу на открытие? Или коннект? TryOpen()? Share()?
We are hard at work… for you.
- morkovin
- Ветеран
- Сообщения: 909
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Проверка на открытие файла.
ну так не давать серверу уснуть. Есть утилиты типа NoSleep...
WBR, morkovin
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Проверка на открытие файла.
Первое на стороне сервера, если свой сервер, отключить спящий режим сетевой и остальных девайсов
Создать на сервере таблицу в которую писать время коннекта и пользователя )
Н а стороне клиента, сделать запись в в таблицу с таймингом который вы сами укажите от 1минуту и больше
У меня такое работает круглосуточно, заодно и видно когда были проблемы с коннектом
Создать на сервере таблицу в которую писать время коннекта и пользователя )
Н а стороне клиента, сделать запись в в таблицу с таймингом который вы сами укажите от 1минуту и больше
У меня такое работает круглосуточно, заодно и видно когда были проблемы с коннектом
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Проверка на открытие файла.
Му, на самом деле, проверить наличие подключения к серверу не сложно через ODBC.
А вот, отвечать на вечные вопросы: кто виноват и что делать - нужно уже по обстановке.
А вот, отвечать на вечные вопросы: кто виноват и что делать - нужно уже по обстановке.
Код: Выделить всё
! --- ODBC ---
SQL_HANDLE_ENV EQUATE(1)
SQL_HANDLE_DBC EQUATE(2)
SQL_NULL_HANDLE EQUATE(0)
SQL_DRIVER_COMPLETE_REQUIRED EQUATE(3)
SQL_ERROR EQUATE(-1)
SQL_SUCCESS EQUATE(0)
SQL_SUCCESS_WITH_INFO EQUATE(1)
SQL_ATTR_ODBC_VERSION EQUATE(200)
SQL_OV_ODBC3 EQUATE(3)
SQL_IS_INTEGER EQUATE(-6)
Module('ODBC32')
SQLDriverConnect(LONG hdbc, |
UNSIGNED hwnd, |
*CSTRING szConnStrIn, |
SHORT cbConnStrIn, |
*CSTRING szConnStrOut, |
SHORT cbConnStrOutMax, |
*SHORT pcbConnStrOut, |
USHORT fDriverCompletion),SHORT,RAW,PASCAL,NAME('SQLDRIVERCONNECT'),PROC!,DLL(1)
SQLDisconnect(LONG hdbc),SHORT,RAW,PASCAL,NAME('SQLDISCONNECT'),PROC!,DLL(1)
SQLConnect(LONG hdbc, |
*CSTRING ServerName_, |
SHORT LenServerName_, |
*CSTRING UserName_, |
SHORT LenUserName_, |
*CSTRING Authentication_, |
SHORT LenAuthentication_),SHORT,RAW,PASCAL,NAME('SQLCONNECT'),PROC!,DLL(1)
SQLAllocHandle(SHORT HandleType,LONG InputHandle,*LONG OutputHandle),SHORT,RAW,PASCAL,NAME('SQLAllocHandle'),PROC!,DLL(1)
SQLSetEnvAttr(LONG EnvironmentHandle, |
LONG Attribute, LONG Value, |
LONG StringLength),SHORT,RAW,PASCAL,NAME('SQLSetEnvAttr'),PROC!,DLL(1)
SQLFreeHandle(SHORT HandleType, LONG Handle),SHORT,RAW,PASCAL,NAME('SQLFreeHandle'),PROC!,DLL(1)
end
CheckSQLConnect PROCEDURE(),byte
Loc:RetValue BYTE(False) ! Предполагаем худшее
Loc:RetCode LONG !
Loc:S1 CSTRING(255) !
Loc:S2 CSTRING(1025) !
Loc:Short SHORT !
Loc:Henv LONG(0)
Loc:Hdbc LONG(0)
Loc:Window &WINDOW !
CODE
! === Allocate environment handle
Loc:RetCode = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,Loc:Henv)
! === Set the ODBC version environment attribute
Loc:RetCode = SQLSetEnvAttr(Loc:Henv,SQL_ATTR_ODBC_VERSION,SQL_OV_ODBC3,SQL_IS_INTEGER)
! === Allocate connection handle
Loc:RetCode = SQLAllocHandle(SQL_HANDLE_DBC,Loc:Henv,Loc:Hdbc)
!Loc:S1 = 'Driver={{SQL Server};Server=90.0.0.2;Database=K_B;UID=sa;PWD=1;'
Loc:S1 = 'Driver={{SQL Server};Server=' & Clip(Left(Setup.DBServer)) & |
';Database=' & Clip(Left(Setup.DBName)) & |
';UID=' & Clip(Left(Setup.DBUser)) & |
';PWD=' & Clip(Left(Setup.DBPassword)) & |
';'
Loc:RetCode = SQLDriverConnect(Loc:Hdbc, |
Loc:Window{PROP:Handle}, |
Loc:S1, |
Len(Loc:S1), |
Loc:S2, |
1024, |
Loc:Short, |
SQL_DRIVER_COMPLETE_REQUIRED)
! SQL сервер жив !
If ((Loc:RetCode = SQL_SUCCESS) Or (Loc:RetCode = SQL_SUCCESS_WITH_INFO)) then Loc:RetValue = True.
RetCode# = SQLDisconnect(Loc:Hdbc)
If Loc:Hdbc then Loc:RetCode = SQLFreeHandle(SQL_HANDLE_DBC,Loc:Hdbc); Loc:Hdbc = 0.
If Loc:Henv then Loc:RetCode = SQLFreeHandle(SQL_HANDLE_ENV,Loc:Henv); Loc:Henv = 0.
Return(Loc:RetValue)
За теми кто отстал - не возвращаться. (С) Кодекс