Вопрос на общую тему...Стандарты

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 19.09.2004 (Вс) 20:36

Я так понимаю, что ты в Аксессе пытаешься MSSQL-ный запрос использовать? Конечно, ничего не получится. Но в общем ты понял правильно - это все метаданные, и практ. все БД (Аксесс не исключение) хранят их в том же месте и в том же виде, что и сами данные.

К примеру: мне тут недавно дали задание - написать серверный функционал, который бы автоматически чистил таблицы в базе произвольной структуры, удаляя устаревшие данные. При этом главная запарка была именно в учете внешних ключей - нужно правильную последовательность таблиц установить по ходу очистки, иначе не избежать FOREIGN KEY VIOLATION. Без активного использования системных таблиц такого не написать, сам понимаешь...

Насчет ADOX - понятия не имею и никогда не использовал, просто знаю, что есть такая вещь. Не было необходимости, все метаданные вытягивал всегда напрямую из системных таблиц.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 20.09.2004 (Пн) 7:02

нужно правильную последовательность таблиц установить по ходу очистки, иначе не избежать FOREIGN KEY VIOLATION. Без активного использования системных таблиц такого не написать, сам понимаешь...


Делал такое. Без системных таблиц.
Ибо ничего не мешает просмотреть индексы этих таблиц используя ADOX...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 20.09.2004 (Пн) 7:17

Кстати, вот интересный примерчик попался - никогда такого еще не пользовал, а именно:

An object stored in ADO Recordset

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId=30477
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.09.2004 (Пн) 8:48

Andrey Fedorov писал(а):Делал такое. Без системных таблиц.
Ибо ничего не мешает просмотреть индексы этих таблиц используя ADOX...

Мне кажется, что ему системные таблицы требовались скорее для нахождения устаревших данных, а не для выборки индексов.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 20.09.2004 (Пн) 9:12

Мне кажется, что ему системные таблицы требовались скорее для нахождения устаревших данных, а не для выборки индексов.


Нет - ему нужен порядок обработки таблиц (например, при удалении сначала удаляются данные из дочек потом из родителей, а при заполнении - наоборот).

Этот порядок можно установить по связкам между таблиц. Используя для этого то-же ADOX.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 20.09.2004 (Пн) 9:22

А мне казалось, что Access позволяет настроить Referential integrity или как-то так это называлось. Короче, не просто таблички накидать, а указать прямо в дизайне какие таблицы как связаны и чут ли не так, что при удалении "родительской записи", например, удалять все дочерние.

Сейчас пойду проверю, не обманула ли вас...

Ага. Точно. Меню Relationships. Там между таблицами можно установить связи и выбрать "каскадное обновление" (cascade update related fields) и "каскадное удаление" (cascade delete updated fields). Посмотрите, например, в Northwind (стандартном примере) - там Relationships настроены между таблицами.
Последний раз редактировалось Rainbow 20.09.2004 (Пн) 9:26, всего редактировалось 1 раз.
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 20.09.2004 (Пн) 9:25

Короче, не просто таблички накидать, а указать прямо в дизайне какие таблицы как связаны и чут ли не так, что при удалении "родительской записи", например, удалять все дочерние.


Позволяет. Но это не всегда удобно. Чтобы не дать юзеру грохнуть документ целиком, к примеру, я не ставлю разрешение каскадного удаления.

Да и в любом случае - при заполнении базы все одно пришлось бы заполнять ее в определенном порядке.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 20.09.2004 (Пн) 9:30

То, что не всегда удобно - согласна. Но знать, что такое есть - полезно. Может пригодиться. Ведь на уровне программы мы и сами можем пользователя строго спросить, а работы нам, программистам, меньше.

А заполняется база в более логичном порядке - от родителя к детям.
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 20.09.2004 (Пн) 9:33

А заполняется база в более логичном порядке - от родителя к детям.


Вот этот порядок человеку и требовалось определить...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 20.09.2004 (Пн) 10:14

Andrey Fedorov писал(а):Делал такое. Без системных таблиц.
Ибо ничего не мешает просмотреть индексы этих таблиц используя ADOX...

В хранимой процедуре ADOX недоступен по определению, знаешь ли... :) А мне был нужен именно серверный код, чтобы оформить это в джоб, настроить ему шедулер и забыть про него.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 20.09.2004 (Пн) 11:24

В хранимой процедуре ADOX недоступен по определению, знаешь ли... А мне был нужен именно серверный код, чтобы оформить это в джоб, настроить ему шедулер и забыть про него.


Ну, если оно должно выполняться хранимой на сервере без вызова внешних программ (которые, кстати, тоже можно засунуть в шедулер), то тогда другое дело.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 20.09.2004 (Пн) 16:10

Andrey Fedorov писал(а):Ну, если оно должно выполняться хранимой на сервере без вызова внешних программ (которые, кстати, тоже можно засунуть в шедулер), то тогда другое дело.

Можно, но это лишние накладные расходы на всех этапах архитектуры клиент-сервер, сам понимаешь. Кроме того, клиента в этом случае тоже писать надо, а я уже потихоньку забываю VB, как-то больше на T-SQL писать приходится...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 20.09.2004 (Пн) 17:20

Ээээ..... Это конечно прекрасно, но мне кто-нибудь скажет, Как мне определить структуры базы в ADO. Т.е. таблицы, поля и проч.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 21.09.2004 (Вт) 7:03

Ээээ..... Это конечно прекрасно, но мне кто-нибудь скажет, Как мне определить структуры базы в ADO. Т.е. таблицы, поля и проч.


См Help по ADOX, Catalog, Tables, Columns...

Чем это лучше считывания системных таблиц - своей большей универсальностью. Т.е можно написать код который будет работать как с MDB-шкой так и с SQL-сервером...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Пред.

Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 1

    TopList