|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Проверка открываемой БД Access
Суть такова:
Есть программа, есть возможность выбирать файл через OpenDialog, нужно: 1. Проверить, что открываем. БД или нет, если файл базы данных то идём дальше. 2. Проверяем ту ли базу открыли (в базе имеется таблица, например, "init"? в которой есть поле, например, тоже "init") 2.1. Проверяем есть ли такая таблица, есть - дальше 2.2. Проверяем есть ли такое поле в таблице, есть дальше 2.3. Проверяем соответствует ли содержимое поля заданному ключу, соответствует - открываем БД при несовпадении любого из пунктов выдать ошибку и предложить выбрать другой файл Как мне это реализовать программно? Жизнь - не те дни, что прошли, а те, что запомнились! |
#2
|
|||
|
|||
Цитата:
Читаешь первые (с начала файла) 19 байт. По идее должна быть цепочка байт (шестнадцатиричные): 00 01 00 00 53 74 61 6E 64 61 72 64 20 4A 65 74 20 44 42 .. .. .. .. S t a n d a r d пробел J e t пробел D B Последний раз редактировалось roamer, 08.11.2010 в 23:04. |
#3
|
|||
|
|||
1. Пытаемся подключиться к БД. Если ошибка - то явно проблемы с файлом.
2. Делаем запрос нужного поля из нужной таблицы. Если ошибка - ну значит не туда попали. 3. проверяем полученное значение. Не то - значит неправильная БД. Код:
function OpenDB(AFileName : String); begin Try Try ADOConnection.DBName := AFileName; // Здесь типа правим строку подключения, сорри, delphi под рукой нет ADOConnection.Open; ADOQuery.SQL.Text := 'SELECT INIT FROM INIT'; ADOQuery.Open; If ADOQuery.RecordCount = 0 Then Raise Exception.Create('No records.'); If ADOQuery.FieldbyName('INIT').AsInteger <> 101 Then // проверяемое значение Raise Exception.Create('Wrong key value.'); Result := True; Finally ADOQuery.Close; End; Except If ADOConnection.Connected then ADOConnection.close; Result := False; End; end; |