MAV & Hibernate
Добавлено: 10 Ноябрь 2010, 1:46
				
				Можно ли в MAV как то после Гибернации восстановить подключение? А то проги все валятся после сна.
Спасибо
			Спасибо
Место общения программистов, форум разработчиков БД на Clarion
https://www.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)