![]() |
|
![]() ![]() ![]() |
|
Татка |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
Здравствуйте. Есть две таблицы: Spravochnik.dbf и itog.dbf . Обе таблицы содержат реквизит номер цеха nz. Необходимо сравнить эти две таблицы по реквизиту "номер цеха" (nz) и в случае совпадения заменить реквизит код производства (kpr) массива Spravochnik.dbf реквизитом код производства (kpr) массива itog.dbf.
Подскажите, пожалуйста, как это можно сделать? |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 7 Всего: 130 |
Это сообщение отредактировал(а) Данкинг - 6.6.2012, 15:30 -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Reese |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.6.2009 Репутация: 1 Всего: 1 |
Relation давно уж надо на помойку выбросить
Можно update и по таблице сделать, но толь я не знаю как готовить, то ли он действительно такой медленный |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 7 Всего: 130 |
Хм. А апдейтить Spravochnik столько раз, сколько строк в ITOG - это, конечно, лучше? ![]() Добавлено через 4 минуты и 1 секунду Да и зачем писать программу, если связь на уровне СУБД устанавливается, т.е. её средствами? -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Reese |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.6.2009 Репутация: 1 Всего: 1 |
Сколько найдет. Если таких записей в Spravochnik нет, то и апдейтиться ничего не будет. Плюс моего решения - не зависит от индекса Фокс до сих пор поддерживает @say, но это не значит что этим нужно пользоваться Это сообщение отредактировал(а) Reese - 7.6.2012, 17:02 |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 7 Всего: 130 |
Но каждый раз будет проходит все записи целиком. Смысл? -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Reese |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.6.2009 Репутация: 1 Всего: 1 |
Такой же как и в
В вашем случае тоже обрабатываются все записи. Просто update понятнее т.к. такой код читать легче чем искать где и как устанавливали relation, и безопаснее, т.к. в случае сломанного индекса ваш пример во всей таблице Spravochnik поставит в поле kpr одно значение, а в моем - просто отработает медленнее. |
||||
|
|||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 7 Всего: 130 |
Не знаю именно самого механизма работы - может быть, там используется какой-то свой внутренний UPDATE. Я про то, что при связывании я делаю всё одной командой - REPLACE - и жду, пока она отработает. Да и в любом случае - зачем писать программу, если можно сделать одной строкой? Добавлено через 43 секунды Какого сломанного: я в подобных случаях обычно заново переиндексирую. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Reese |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.6.2009 Репутация: 1 Всего: 1 |
Какой же одной ? В одну строчку разница.
А если индекс сломался во время работы replace for ? Это сообщение отредактировал(а) Reese - 8.6.2012, 13:07 |
||||
|
|||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 7 Всего: 130 |
Нет, это просто я написал, как это сделать программно. Но самом фоксе же есть построитель выражений, в том числе и для установки связей. Я всегда его и использую. Это с чего вдруг? Вот ни разу подобного не было. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Reese |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.6.2009 Репутация: 1 Всего: 1 |
1. Этот построитель дал вам тот-же код 2. Использование визардов - зло
При сетевой работе (особенно если программа написана через всякие relation) - слетают регулярно. (Особенно если некоторые пользователи вместо кнопки отмена выдергивают вилку компа) Это сообщение отредактировал(а) Reese - 8.6.2012, 14:56 |
||||
|
|||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 7 Всего: 130 |
Правильно, но я же PRG не писал. Как правило - да, но не всегда и не везде.
При чём здесь это? А что будет, если прилетят зелёные человечки и унесут системник? -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Reese |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.6.2009 Репутация: 1 Всего: 1 |
Про выдергивание вилки я конечно несколько утрировал, но я часто встречался с тем что пользователи сбрасывают задачу или жмут reset когда уже нажали "сохранить" и вспомнили что-что-то забыли.
|
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 7 Всего: 130 |
Да при этом вообще таблица не сохранится, что бы с ней ни делали. Именно RELATION или индексы тут ни при чём. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Reese |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.6.2009 Репутация: 1 Всего: 1 |
Причем тут сохранение таблицы? Таблица уже есть. В нее записывают данные при помощи уже написанной программы, а написан процесс сохранения какого нибудь документа при помощи relation, append blank, и replace. База лежит на сетевом диске, работают два пользователя, и один из них сбрасывает задачу в момент записи данных. Вот тут обычно и происходит слом индексов. (обычно при попытке искать по такому индексу всегда возвращается первая запись). |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Foxpro/Clipper/Dbase" | |
|
Запрещается! 1. Публиковать ссылки для чисто рекламных целей. 2. Оффтопить, флеймить, говорить не культурно. Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему. Задавайте вопросы правильно - как спросите, так вам и ответят. Разрешено! Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил. Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы. P.S. Размещение рекламы будет строго наказываться! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MoLeX |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Foxpro/Clipper/Dbase | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |