Уроки Iczelion'а



Урок 5. ODBC пример - часть 6


  Конструируем строку соединения, которую мы будем использовать при подключении: invoke SQLDriverConnect, hConn, hDlg, addr ConnectString, sizeof ConnectString, addr Conn, sizeof Conn, addr StrLen, SQL_DRIVER_COMPLETE .if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO invoke SwitchMenuState,TRUE invoke MessageBox,hDlg, addr Conn,addr ConnectCaption, MB_OK+MB_ICONINFORMATION

  Когда строка соединения - готова, мы вызываем SQLDriverConnect, чтобы попытаться подключаться к test.mdb, используя MS Access драйвер Если файл test.mdb не обнаружен, то драйвер ODBC известит пользователя об этом поскольку мы определили флаг SQL_DRIVER_COMPLETE. Когда ф-я SQLDriverConnect успешно выполнится, переменная Conn заполнится полной строкой связи созданной драйвером Мы отображаем её используя окно сообщений. SwitchMenuState - простая функция, она прорисовывает серым цветом пункты соответствующего меню.

  Сейчас связь с базой данных будет установлена до тех пор пока пользователь не разорвёт её.

  Когда пользователь выбирает пункт меню "View All Records", процедура диалогового окна вызывает RunQuery: RunQuery proc hDlg:DWORD invoke ShowWindow, hList, SW_SHOW invoke SendMessage, hList, LVM_DELETEALLITEMS,0,0

  С Тех пор как элемент управления listview был создан, он оставался невидимым, но теперь самое время, чтобы показать его. Также нам нужно удалить все пункты (если имеются) с контрола listview. invoke SQLAllocHandle, SQL_HANDLE_STMT, hConn, addr hStmt .if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO

  Затем, программа выделяет память для идентификатора инструкции. invoke SQLExecDirect, hStmt, addr SQLStatement, sizeof SQLStatement .if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO

  Выполняем инструкцию SQL используя SQLExecDirect. Я решаю здесь использовать SQLExecDirect, поскольку эта инструкция SQL исполняется лишь однажды: invoke FillData

  После выполнения инструкции SQL, набор результатов должен быть возвращен. Мы извлекаем данные результатов в элемент управления listview используя функцию FillData: FillData proc LOCAL lvi:LV_ITEM LOCAL row:DWORD




Содержание  Назад  Вперед