Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
Имеется такой код, написан не мной, а собран из разных источников...помогите разобраться Пример № 1: ***** Имеется FOX БАЗА ДАННЫХ в которую входит к примеру две таблицы связанные между собой Relationship Вопрос. Как восстановить программно Relationship? Ответ Допусим, нужно связать wr1 и wr2 по ключу id_z из БД work2 Код: plaintext 1. 2. 3. 4. 5. 6. 7. >Просматриваю ее как таблицу BROWSEом. Структура вроде бы ясна. Но в >строки, где ObjectType="Relation" поля RiInfo пустые. >В другой базе в одном случае в поле RiInfo стоит "ICI" >Хотя Relation в обоих случаях на первый взгляд одинаковые. >Вопрос. Где могут быть описаны все допустимые значения поля RiInfo? I - Ignore C - Cascade R - Restrict Первый символ относится к Update, второй к Delete, третий к Insert. В твоём случае c ICI I - Ignore Update C - Cascade Delete I - Ignore Insert (с) Кирилл ***** источник: A.Пинигин, СБОРНИК прибамбасов для VFP по материалам конференций, литературы и собственных разработок. HELP "PRIBAMBASI for VFP on materials of conferences, literature and own development Пример № 2 ***** **** Удаляем из базы данных все ссылки на индексы **** ************** и постоянные отношения **************** Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. дальше идет переиндексация и востановление отношений Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. табл много *дум* 2 хватит ...... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. (с) Жихарев Дмитрий *****источник: foxclub.ru People сделайте мне help!!! плизз... Я во все дела суюсь -> всесторонне разовьюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 12:34 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
Grumax_userPeople сделайте мне help!!! плизз... Help чего? Каждую строчку комментировать? Уточни, что именно надо прояснить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 13:14 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
2ВладимирМ Добрый день! Каждую строчку не надо ;-)) надо каждую строчку где -> && с вопросом "???" :-)) Я во все дела суюсь -> всесторонне разовьюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 13:46 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
2Grumax_user А вы батенька нахал... >nObjID=ObjectID && ??? что за переменные и чему равен ObjectID и откуда берется ??? Это поле таблицы в текущей рабочей области. В этом примере в work2.dbc >PARENTID = m.lnObjectID && тут мучает вопрос что такое символ "эм" с точкой m.* что означает??? скажи пожалуйста Пожалуйста:) Это означает что мы используем не поле таблицы а одноименую переменую памяти >REPLACE RiInfo WITH "RRR " && что есть RiInfo и с чем его едят и где оно храниться ??? Это поле таблицы в текущей рабочей области. В этом примере в KONTAKT.DBC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 14:39 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
Ну, начну с того, что восстанавливать постоянные связи (persistent relationship) вообще нет необходимости. Это чисто дезайнерская примочка и никак, никоим образом не влияет на собственно работу программы и заполнение базы данных. Для чего это вообще используется можно почитать здесь http://www.foxclub.ru/kb/index.php?sid=35321&aktion=artikel&rubrik=004&id=103&lang=ru Раздел "Связи и отношения межде таблицами" Теперь собственно по коду: Код: plaintext 1. 2. В даннм случае видимо предполагалось, что ObjectID - это имя поля таблицы work2.dbc Однако сам код некорректен. Проблема в том, что в таком синтаксисе FoxPro предполагает, что ObjectID - это имя поля таблицы, открытой в текущей рабочей области. Но, поскольку используется синтаксис USE ... IN 0, то нет никакой гарантии, что таблица work2.dbc будет открыта именно в текущей рабочей области. Т.е. нужен дополнительный переход в нужную рабочую область непосредственно перед командой LOCATE. Я бы сделал так: Код: plaintext 1. 2. 3. Впрочем, тут надо еще навесить много каких проверок, но это отвлечет от сути. Код: plaintext Префикс "m." означает, что речь идет именно о переменной памяти, а не о поле таблицы. Когда FoxPro встречает выражение вроде nObjID=ObjectID то сначала он предполагает, что "ObjectID" - это имя поля таблицы, открытой в текущей рабочей области. Если же такого поля в текущей рабочей области не существует, то после этого предпринимается поиск переменной памяти с таким именем. Так вот, префик "m." говорит FoxPro о том, что надо сразу искать переменную памяти и не тратить время на поиск поля с таким именем. Код: plaintext Странно, ты вроде бы смотрел файл базы данных как таблицу в BROWSE-окне(work2.dbc). Хочешь сказать, что не заметил там поля с именем "RiInfo"? В команде REPLACE в этом месте может стоять только и исключительно имя поля таблицы. Поскольку нет опции IN, то речь идет о таблице открытой в текущей рабочей области. Поднимаемся чуть выше по коду и видим, что речь идет о таблице открытой командой USE KONTAKT.DBC EXCLUSIVE PS: Вместо с FoxPro поставляется такая программ Home()+Tools\GenDBC\GenDBC.prg. Если натравить эту программу на твою базу данных, то она сгенерит файл PRG, который будет содержать код программной генерации файла базы данных DO (Home()+Tools\GenDBC\GenDBC.prg) WITH "MakeBase.prg" MakeBase.prg - это файл, который будет сформирован как результат работы программы GenDBC.prg При запуске программа попросит указать базу данных (файл DBC) по которому надо создать программу генерации Далее открываешь полученный файл MakeBase.prg на редактирование и смотришь как именно там создают постоянные связи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 14:50 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
2Burn и Вас тем же местом ;-))) Почему нахал? Я просто самоучка (пару месяцев назад я вообще не знал что такое VFP, за плечами школьный курс по Basic и диплом по окончании детского сада № 3). Обучаюсь методом научного тыка, столкнулся с проблеммой (создаю базу, архивацию сделал, но надо еще программу по восстановлению, с ней собственно и мучаюсь) начал лопатить литературу искать, изучать нашел пару интересных статей и что не удивительно для ньюба не разобрался в коде...попросил помощи у гуру, а Вы сразу нахал 8-((( *обидно да* З.Ы. из Вашего объяснения ничего не понял ;-)) (слишком круто завернули, придется опять соло доходить *вздых*) Я во все дела суюсь -> всесторонне разовьюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 14:56 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
>из Вашего объяснения ничего не понял Ничего, Владимир все по полочкам разложил. А у меня нет педагогического таланта... Почитай здесь - http://www.foxclub.ru/kb/ как раз для начинающих ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 15:18 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
2Владимир "Ну, с "постоянной связью" все относительно просто. Ее следует использовать, если Вы собираетесь построить Referential Integrity." (С) Владимир Максимов Ну, начну с того, что восстанавливать постоянные связи (persistent relationship) вообще нет необходимости... Я как раз и использую Referential Integrity для создания триггеров на обновление, удаление и вставку, но при разрушении базы мне придется восстановить отношения с триггерами, для этого, как я понимаю и используется Код: plaintext Код: plaintext Код: plaintext 1. 2. Я во все дела суюсь -> всесторонне разовьюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 15:23 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
2 Burn Спасибо... Просто пока отвечал Вам пришло сообщение от Владимира Я во все дела суюсь -> всесторонне разовьюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 15:32 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
Grumax_user2Владимир "Ну, с "постоянной связью" все относительно просто. Ее следует использовать, если Вы собираетесь построить Referential Integrity." (С) Владимир Максимов Ну, начну с того, что восстанавливать постоянные связи (persistent relationship) вообще нет необходимости... Здесь нет противоречия. Вы просто не прочитали статью http://www.foxclub.ru/kb/index.php?sid=35321&aktion=artikel&rubrik=004&id=104&lang=ru Раздел "Триггер", "Referential Integrity" Там есть такой абзац В принципе, по окончании создания триггеров "Referential Integrity" постоянную связь, послужившую основой для создания данной ссылочной целостности можно удалить. Это уже никак не скажется на факте существования созданных триггеров. Однако я не советовал бы этого делать по той причине, что в случае внесения изменений в "Referential Integrity" (пусть даже по отношению к другим таблицам) генератор "затрет" ранее созданные триггера. Прежде чем что-то делать надо обязательно определить "граничные условия". Т.е. при каких условиях будет происходить то или иное действие. В данном случае, когда Вам понадбиться восстанавливать контейнер базы данных? Очевидно, что речь идет о ситуации, когда Вы установили программу конечному пользователю и у него произошел сбой, в результате которого был поврежден файл контейнер базы данных. Так вот, "постоянная связь" нужна для создания новых объектов. Но если объект уже создан, то факт наличия (отсутствия) постоянной связи на него никак, никоим образом уже не влияет. Вы планируете предоставить возможность конечному пользователю модифицировать триггера из "Referential Integrity"? Если "Да", то тогда действительно надо восстанавливать постоянные связи. Если же "Нет", то это не обязательно. Еще одно соображение. В программе обязательно необходимо предусмотреть создание резервной копии базы данных. Это просто уже "штатная" процедура вообще для любой программы. Так вот, контейнер база данных (DBC, DCT, DCX) - это файл, который как правило вообще не модифицируется в процессе работы. Это значит, что для восстановления файла контейнера базы данных достаточно просто скопировать эти файлы из резервной копии. ВСЕ. Никаких проблем. Восстановление индексов - это аналогичная операция: Из резервной копии копируются файлы CDX и выполняется команда REINDEX на все таблицы. Поскольку структура индексных файлов в резервной копии корректна, то такая подмена пройдет безболезненно, а команда REINDEX приведет в соответствие содержимое индексов и реальных данных. Опять же нет необходимости мучится со структурой индексов и ссылочной целостностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 15:42 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
2Владимир Спасибо большое. Теперь бы как объяснить шефу требующему от меня прогу по восстановленю базы, что написаной ранее проги по резервному копированию хватит ;-))) *мдя Надеюсь я сделал правильный вывод :-))) Пойду до дому...пока Я во все дела суюсь -> всесторонне разовьюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 16:34 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
2 Владимир Владимир Странно, ты вроде бы смотрел файл базы данных как таблицу в BROWSE-окне(work2.dbc). Хочешь сказать, что не заметил там поля с именем "RiInfo"? Я читал Вашу статью "Советы начинающим Часть I.База данных ", но не догадался что файл *.dbc подобный *.dbf можно browse посмотреть...ступил...было бы меньше проблем, подвел VFP добавили бы вместо 'open' кнопочку 'browse' ;-))) Я во все дела суюсь -> всесторонне разовьюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 08:23 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
Еще вопросик... Сделал browse файла *.dbc там есть поля типа MEMO, жму просмотр (ctrl+home) а там квадратики, а между ними просветы из читаемого текста...эти мемо поля читаемы или нет? если читаемы то как ;-)) Я во все дела суюсь -> всесторонне разовьюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 08:41 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
Квадратиками отображаются всяческие служебные символы для которых нет подходяших букв например символы с кодами от x00 до x20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 09:10 |
|
||
|
Восстановление базы
|
|||
|---|---|---|---|
|
#18+
2 Burn Burn А у меня нет педагогического таланта... Вы заблуждаетесь.... :-)) Спасибо Вам и Владимиру, без вас я бы не разобрался, все оказалось просто, надо было сделать browse *.dbc и код бы читался сравнительно легко... Я во все дела суюсь -> всесторонне разовьюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 09:24 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32623623&tid=1596080]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 423ms |

| 0 / 0 |
