MAV & Hibernate
Добавлено: 10 Ноябрь 2010, 1:46
Можно ли в MAV как то после Гибернации восстановить подключение? А то проги все валятся после сна.
Спасибо
Спасибо
Место общения программистов, форум разработчиков БД на Clarion
https://forum.clarionlife.net/
Понятно... найти бы событие которое прогам разбегается при восстановлении винды из гибернейта еще...Andrew™ писал(а):проверяй регулярно что то типа: (главное, чтобы не ресурсоёмкий запрос был)
IF MAVLOAD('select getdate()',datetimefield)
MAVDISCONNECT
If MAVCOMEMECT(ConnectName,ConnectString)
MAVSHOWERROR
END
END
Код: Выделить всё
PROGRAM
INCLUDE('equates.clw'),ONCE
INCLUDE('errors.clw'),ONCE
INCLUDE('keycodes.clw'),ONCE
INCLUDE('mav.inc'),ONCE
MAP
MODULE('MAV SQL')
INCLUDE('mavsql.inc'),ONCE
INCLUDE('mavfunc.inc'),ONCE
END
MODULE('Windows API')
GetWindowLong(UNSIGNED, SIGNED), LONG, PASCAL, NAME('GetWindowLongA')
SetWindowLong(UNSIGNED, SIGNED, LONG), LONG, PASCAL, NAME('SetWindowLongA')
CallWindowProc(ULONG,UNSIGNED,UNSIGNED,UNSIGNED,LONG),PASCAL,LONG,NAME('CallWindowProcA')
END
MAVCallBack(UNSIGNED,UNSIGNED,UNSIGNED,LONG),LONG,PASCAL
ConnectProc
END
DbManager MAVConnectManager,NAME('MAV$DbManager')
DbFiles MAVFiles,NAME('MAV$DbFiles')
ConnectString CSTRING(200)
Result STRING(200)
DataQueue QUEUE
GoodsName STRING(50)
END
PrevCallBack LONG
GWL_WNDPROC EQUATE(-4)
WM_POWERBROADCAST EQUATE(0218h)
PBT_APMRESUMESUSPEND EQUATE(7)
Window WINDOW('MAV Resume'),AT(,,287,176),FONT('Tahoma',8,,FONT:regular,CHARSET:CYRILLIC),CENTER,GRAY, |
RESIZE
LIST,AT(7,7,274,143),USE(?List1),VSCROLL,FORMAT('20L(2)|M~GoodsName~@S255@'),FROM(DataQueue)
BUTTON('Reconnect'),AT(6,156,45,14),USE(?ButtonReconnect)
BUTTON('Clear'),AT(54,156,45,14),USE(?ButtonClear)
END
CODE
OPEN(Window)
PrevCallBack = SetWindowLong(Window{PROP:Handle}, GWL_WNDPROC, ADDRESS(MAVCallBack))
ConnectProc
ACCEPT
CASE ACCEPTED()
OF ?ButtonReconnect
ConnectProc
OF ?ButtonClear
FREE(DataQueue)
END
END
CLOSE(Window)
ConnectProc PROCEDURE
CODE
MAVDISCONNECT('MSSQL')
ConnectString = 'DRIVER={{SQL Server};SERVER=XXX;DATABASE=YYY;UID=ZZZ;PWD=PPP;App=AAA'
IF MAVCONNECT('MSSQL', ConnectString)
MAVSHOWERROR
RETURN
END
FREE(DataQueue)
IF MAVLOAD('SELECT TOP 100 G.GoodsName FROM Goods G', DataQueue)
MAVSHOWERROR
RETURN
END
MAVCallBack PROCEDURE(LOC:hWnd, LOC:usMsg, LOC:WParam, LOC:IParam)
CODE
IF LOC:usMsg = WM_POWERBROADCAST
IF LOC:WParam = PBT_APMRESUMESUSPEND
ConnectProc
END
END
RETURN CallWindowProc(PrevCallBack, LOC:hWnd, LOC:usMsg, LOC:WParam, LOC:IParam)