|
|
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
> процедура по проверке целостности данных одна ....а вот где она будет > хранится в контейнере мемо поля(тригер), который постоянно ломается Ни разу не ломался контейнер. А на случай поломки существуют backUp`ы - без которых никак не обойтись даже на супер пупер надежном железе! Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 07:39 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
2 Galyamov Rinat авторНи разу не ломался контейнер. ну это проблема отсутствия опыта (проблем очень много), иногда при опр-х шаманствах контейнер прекрасно валится в дизайнере скопируйте контейнер + таблицы куда - нибудь откроте контейнер и сдвинь очередность полей скопируйте назад контейнер - посмотрите результат измените очередность полей хотя-бы в одной таблице (открыв дизайнер) аналогично перепишите назад - посмотрите результат (вот так, и всегда находятся любители переписать файлы по верху) а теперь представьте, что у Вас 100 пользователей разбросаны по всей Мск и Вам необходимо сист-ки обновлять стр-ру таблиц. тогда и возникло решение хранения доп.словаря в спец. месте контейнера + создание процедуры проверки стр-ры и целостности таблиц и + создание интеллекта, который орал и объяснял .... любовь или не любовь вопрошавшего к БД - это также отсутствие опыта подобных разработок + отсутствия хороших примеров реализации + нет хороших учителей для начала необходимо поискать на просторах этого сайта или др. литературу по этой теме и почитать для чего это нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 09:25 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
вот пример, чтобы не быть голословным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 09:30 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
> автор > Ни разу не ломался контейнер. > > > ну это проблема отсутствия опыта Ну я бы не сказал. Проблема отсутствия плохого опыта - может и да. > скопируйте контейнер + таблицы куда - нибудь > откроте контейнер и сдвинь очередность полей > скопируйте назад контейнер - посмотрите результат А это все - действительно какое-то шаманство, направленное на целенаправленное уничтожения взаимосвязи контейнера и таблицы. С таким же успехом можно открыть таблицу, скажем, бокнотом. Записать пару символов и говорить, что dbf - это плохо, потому что постоянно падает. > (вот так, и всегда находятся любители переписать файлы по верху) Еще раз - alter table и нет проблем. > а теперь представьте, что у Вас 100 пользователей разбросаны > по всей Мск и Вам необходимо сист-ки обновлять стр-ру таблиц. И еще раз: Еще раз - alter table и нет проблем. :) Давайте отнесем этот вопрос к разделу религиозных. Т.к. при наличии прямого доступа к файлам dbf их не спасут никакие тригерры. А логику на уровне данных все же правильнее отследить неосредственно средствами самой базы. Сейчас потихоньку переползаю на MSSQL. Вот бы я и сейчас использовал ваши подходы - всю логику по целостности данных зашивал в клиента... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 09:59 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
автор Записать пару символов и говорить, что dbf - это плохо еще раз попытаюсь существуют ситуации (особенно при наличии большого числа пользователей - копий софта), когда Вы точно не сможете предугадать даже не стр-ру таблиц (она будет идентична, но будут местами изменена очередность полей - по различным причинам) вот в этих ситуациях Вы не сможете просто копировать контейнер далее, альтер табле и так далее Вам не помогут если Вам необходимо проехать 2 часа к клиету, а это для Мск к прим. время проезда от Бутова в Митино поэтому Ваше высказывание авторНи разу не ломался контейнер. для меня ложное и это Ваше мнение, основанное на Вашем опыте. мой опыт мне подсказывает, что развалить БД - это очень просто, и открывать ее в редакторах и удалять байты не нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 10:14 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
Я думаю, где появляется трафик, следовательно надо уже применять клиент-сервер, и для этого надо брать продукты по уровню выше VFP, а VFP использовать как клиент....но очень много средних фирм, где и руководитель, бух, юрист и программист всё в одном лице...ну и что там городить Клиент -сервер и базыданных...я думаю FoxBase III+фирмы Astonte Tate и получил массове применение, потому что не было академических теорий нормализации, концептуальной модели, целостности данных и даже чтоб работать в этих СУБД, не надо было читать мемуары Дейта... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 10:25 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
> вот в этих ситуациях Вы не сможете просто копировать контейнер Еще раз говорю. что копировать совершенно не обязательно!!!! > далее, > альтер табле и так далее Вам не помогут если Вам необходимо > проехать 2 часа к клиету А раскажите ка мне, для чего вы к нему собираетесь ехать? Alter table спокойно выполняется и в коде. > поэтому Ваше высказывание > автор > Ни разу не ломался контейнер. > для меня ложное и это Ваше мнение, основанное > на Вашем опыте. Точно. Именно на моем опыте. Именно так и делаю. Alter table, т.к. подменивать рабочие базы - это дурь. Данные в каждой копии свои. Разве что у вас есть один на всех статичный справочник... Если надо передать изменения в справочнике - тоже append insert update delete как раз для этого и существуют. Один раз прописали импорт / экспорт и контейнер рушиться не будет > мой опыт мне подсказывает, > что развалить БД - это очень просто, > и открывать ее в редакторах и удалять байты не нужно достаточно просто подложить ей свинью в виде "ЧУЖОЙ" для нее таблицы с таким же названием файла!!! Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 11:00 |
|
||
|
Убрать связь с базой данных
|
|||
|---|---|---|---|
|
#18+
давайте прекратим разговор извините беседа не получается когда Вы столкнетесь с поддержкой 50-ти пользователей, Вы поймете в чем проблема на вопрос как отвязать табличку не открывая этой таблички и не имея того контейнера, где лежала эта табличка ответ был дан вкусности применения контейнера вопрошающий поймет если начнет работать с вкусностями фокспро, которые как раз и требуют этот контейнер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 11:08 |
|
||
|
|

start [/forum/topic.php?all=1&fid=41&tid=1587989]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 328ms |

| 0 / 0 |
