|
|
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
(VFP9) Есть таблица, как проверить, есть ли у неё связь с базой данных, а если есть, то убрать эту связь.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 12:00 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 12:07 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
спасибо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 12:10 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
Да, но тут возникла ещё одна проблема, прежде чем вводить эту команду, надо проверить, есть ли эта связь или нет..., а потом вводить free table. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 12:18 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
Со стороны таблицы: Код: plaintext 1. 2. Со стороны базы данных Код: plaintext Правда, тут есть ряд тонкостей в идентификации таблицы и базы данных. Но, думаю, по ходу сам разберешся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 12:42 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
могу дать поц-ку чистки на низком уровне - но это не для слабонервных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 12:42 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
Мне надо это сделать в программе... Приходит таблица, есть два варианта, либо она со связью, либо без... Если у неё есть связь (use mytable и тут начинается про link), но прежде чем использовать команду use table и просматривать свойства, эту связь надо убрать...но опять же в программу не введёшь Free table use mytable Потому что связи может и не оказаться...поэтому до открытия таблицы и использования Free table, надо узнать, есть ли эта связь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 12:51 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
т.е. if функция определения связи(есть связь) Free table endif use mytable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 12:54 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. для того чтобы узнать не юзая и не открывая контейнер БД необходимо в заголовке определить наличие привязки - как это сделать можно понять из показанного примера структура заголовка дбф - в хелпе к фоксу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 12:57 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
позови так ERASEBYTEINSTRU('полный путь + имя') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 12:58 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
ERASEBYTEINSTRU('полный путь + имя'), передаётся один параметр, а принимается два, а второй параметр это что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 13:04 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
а 2-й - это чтобы связь грохнуть если туда передашь истину ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 14:06 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
а INDBC() для проверки не подходит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 14:30 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
А что происходит при использовании Free table БЕЗ проверки наличия связи? Ругается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 14:41 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
попробую предположить что как раз у вопрошавшего и нет контейнеров, т.е. к нему поступают откуда-то файлы и их необх-мо отвязать 2 q1w1e1 при отвязке потеряются имена если таковые имелись (более 10 символов) функ-я, которую я Вам показал применялась мной успешно для восстановления испорченных контейнеров + восстановление структуры и индексов, поэтому приходилось в случае необходимости от котейнера все отвязать, проверить, и правильно все назад положить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 14:41 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
+ ссылочка по теме http://www.sql.ru/forum/actualthread.aspx?tid=411139&hl=isintablechr13 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 14:44 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
2 12345вышелзайчикпогулять Для поиска первого байта со ссылкой на контейнер базы данных вместо "бесконечного" перебора можно считать значение 8 и 9 байтов (начало собственно данных) и из полученного значения отнять 264 (263 байта ссылка на контейнер и 1 байт завершения заголовка) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 15:18 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
не спорю, но Вы упустили момент того, что код писался при царе горохе код делался для порушенных БД и таблиц, так, что при некотор.ситуациях происходит смещение и адекватно найти конец можно только перебором, что было протестировано на многих БД Мск, полет был гарантированный и управляемый + это я и не отрицал если Вы посмотрите ссылку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 15:27 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
По правде говоря, я не совсем понимаю предназначение базы данных (контейнера таблиц), ведь все хранимые процедуры, отношения(не путать с табл.), тригеры(программы по проверки вставки-удаления) и т.д., хранятся в мемо полях этого контейнера, но 1. программы(тригеры, хранимые процедуры) лучше хранить и компилировать в prg-файле, так как он затем компилируется в программу 2. всё равно программа начиная работу, начинает проверять, если такая таблица, нет табл., создаётся структура табл...., есть ли такой индекс, нет - создаётся индекс, отношение также проверяется и т.д. , создаётся всё, что нужно для работы программы... но может я не прав... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 05:59 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
> Автор: q1w1e1 > По правде говоря, я не совсем понимаю предназначение базы данных > (контейнера таблиц), ведь все хранимые процедуры, отношения(не путать с > табл.), тригеры(программы по проверки вставки-удаления) и т.д., хранятся в > мемо полях этого контейнера, но > 1. программы(тригеры, хранимые процедуры) лучше хранить и > компилировать в prg-файле, так как он затем компилируется в программу Тригеры и прочие ХП должны быть НЕРАЗДЕЛЬНЫ с данными. Ведь они предназначенны для контроля целостности. И не важно чем ты пытаешься изменить эти данные. Программой или просто открыв таблицу в Фоксе. Естественно от низкоуровнего доступа наличие ХП не спасет. > 2. всё равно программа начиная работу, начинает проверять, если такая > таблица, нет табл., создаётся структура табл...., есть ли такой индекс, > нет - создаётся индекс, отношение также проверяется и т.д. , создаётся > всё, что нужно для работы программы... Наличие таблицы - да - задача программы, ведь именно этой программе нужна та или иная таблица. А вот проконтролировать ссылочную целостность - это к отдельно взятому модулю не имеет никакого отношения. Это общий вопрос для всех программ, работающих с ДАННЫМ КОНКРЕТНЫМ набором данных. Естественно логичнее всего повешать такой контроль на саму базу данных. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 06:23 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
Ввод, удаление и изменение данных идёт через интерфейс например форм и открывая форму в методе Load(или до запуска формы в процедуре), уже начинается открытие таблиц и построение relation, котрая и контролирует целостность...и модуль получается гибким, и ты можешь эту программу изменить контроль отослать по электронке любому заказчику, а базу данных отсылать это уже проблема... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 06:30 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
> Ввод, удаление и изменение данных идёт через интерфейс например форм > и открывая форму в методе Load(или до запуска формы в процедуре), уже > начинается открытие таблиц и построение relation, котрая и контролирует > целостность...и модуль получается гибким, и ты можешь эту программу > изменить контроль отослать по электронке любому заказчику, а базу данных > отсылать это уже проблема... Ты не отделяешь котлет и мух!!! Целостность данных и ссылочная целостность - это задача базы данных. Бизнес логика - это задача приложения. Отослать упакованный (pack, а затем rar) контейнер - не вижу никаких проблем!!! Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 07:04 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
> Отослать упакованный (pack, а затем rar) контейнер - не вижу никаких > проблем!!! Это раз. А второе - бизнес логика может меняться довольно таки часто, а вот логика отслеживания целостности данных - только при добавлении новой таблицы. (Ну или если сразу не сделал грамотно, то конечно.... ) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 07:06 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
процедура по проверке целостности данных одна ....а вот где она будет хранится в контейнере мемо поля(тригер), который постоянно ломается или в текстовом файле программы, который независим от контейнера это и есть мобильность и гибкость...ввода и проверки....которую можно применять над любыми совокупностями таблиц, а не зашитыми жёстко в контейнере только для данных таблиц контейнера... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 07:22 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
> процедура по проверке целостности данных одна ....а вот где она будет > хранится в контейнере мемо поля(тригер), который постоянно ломается или в > текстовом файле программы, который независим от контейнера это и есть > мобильность и гибкость...ввода и проверки....которую можно применять над > любыми совокупностями таблиц, а не зашитыми жёстко в контейнере только для > данных таблиц контейнера... Если программа маленькая - ну может быть и то с большой натяжкой!!!! Скажем, иногда приходится в базе ковыряться руками и попутно что-то менять. Будь процедура в отдельном файле - я бы про нее забвал. А так ХП отрабатывают автоматом и, в зависимости от того, под кем я работаю с таблицами (админ /не админ) какие-то вещи позволяет делать с предупреждениями, а критичные даже под админом запрещает. Самое прикольно. что с при работе с данными напрямую при наличии грамотных ХП - правил и тригерров, практически не возможно поломать данные, даже если по запарке сделал что-нить не то, естественно касатся только критичных вещей. Например у меня невозможно удалить показания счетчика, если на основании их уже выставлен счет абоненту. И хоть ты руками удаляй, хоть из программы - не важно. Отработают тригеры и привет! А с учетом того, что к этим же данным имеют доступ другие программные блоки - я бы запарился везде прописывать логику, реализованную на уровне контейнера базы данных. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 07:37 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=165&tid=1587989]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 288ms |

| 0 / 0 |
