Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FoxPro, Помогите разобраться с кодом 
:(
    Опции темы
Korney
Дата 23.1.2004, 20:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











OK Ничего обидного я не обнаружил.

По первому коду.
1.Я возможно что-то напортачил. и код действительно не сложный
2.Раскажите, как можно перекладывать на сервер код в котором используется несколько таблиц, которые при исполнении этого кода полностью перезаписываются, в них изменяются одно-два поля (часто на поля этой-же таблицы) и все это в режиме эксклюзивного использования. Возможно какие-то из них используются в других прогах. (Тогда мой код однозначно не корректный)
3.Я пытался объяснить, что реально изменяются несколько полей. Судя по последнему оператору код лежит в отдельном PRG-файле и переодически запускается на выполнение, как отдельная прога
4. В коде не используется оператор SELECT - SQL. Не известно сколько полей в исходных таблицах (файлы m310p_t.dbf и m20000.dbf), но их данные копируются, удаляются и добавляются ВСЕ БЕЗ ИСКЛЮЧЕНИЯ и многократно, т.е. при работе с сервером такого рода реализация его просто "убъет" (я так думаю)

По второму коду
Используется три таблицы: m310p m20310 PPP
Последняя - результирующая
Приблизительно этот код делает следующее. В цикле в первой таблице (m310p) ищется запись у которой aaa не равно '*'. Если таковая найдена, то переменной KUDA присваиваем значение поля obkd и в m20310 ищем в поле obkd это значение (KUDA). Если НЕ найден, то мы в m310p "однозначно" нахом запись для которой aaa=' ' и obkd=KUDA, и в этой записи меняем поле aaa1 на '-' при условии, что первый символ поля obchd равен '1' или '2' или ('7' и начиная с 4-го символа девять '0'). Если НАШЛИ то для всех записей таблицы m20310 у которых obkd=KUDA и aaa=m310p.aaa (предварительно была установлена связь между m20310 и m310p по не полному ключу aaa+obkd) в результирующую таблицу PPP добавляется по пустой записи и части полей присваиваются значения (см. несколько подряд идущих команд REPL), а в таблице m310p полю aaa1 присваивается '+'. Так разделавшись с этими записями мы разрываем связь между таблицами, закрываем и снова открываем m310p и присваиваем полю aaa значение '*' для всех записей удовлетворяющих условию : первый символ obchd='0' или >'2' (т.е. любой ASCII-код начиная с '3') или поле aaa1='+' или '-'. Затем для всех записей полю urov присваиваем значение поля kkk1. Если в таблицу PPP попала хотябы одна запись, то мы эти записи добавляем к таблице m310p. Заменяем для всех записей поле nomz на физический номер записи, а поле prim_uzel на obkd для aaa#'*' и первый символ obkd='1' и начиная с 4-го символа девять '0'. После этого мы удаляем индес таблицы m310p и строим его снова. Затем очищаем таблицу PPP и повторяем цикл.
Это конечно очень приблизительное описание и возможно я где-то ошибся.

Как это сконвертить на SQL. Я думаю никак. Говорите это большой завод? Этот код начали писать лет 20 назад (используются операторы которые даже в досовском фоксе были оставлены для совместимости), а это скорее всего означает, что у тех, кто этими программами пользуется есть постановка задачи. Она наверняка устаревшая и не совсем соответствует реализации, но из нее можно почерпнуть какую-то информацию по поводу входных и выходных данных. Далее входные таблицы при необходимости конвертить в БД, которая будет использоваться в вашей проге. Но по собственному опыту знаю, что если там есть данные которые пользуют другие отделы, а вы переписываете не все предприятие целиком, а только часть - тогда можно просто вешаться. "У нас есть программы которые замечательно работают и нас устраивают!!!" (на тех же данных в DOS) и т.д
  Вверх
Paradox
Дата 24.1.2004, 07:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



Цитата
, но из нее можно почерпнуть какую-то информацию по поводу входных и выходных данных. Далее входные таблицы при необходимости конвертить в БД, которая будет использоваться в вашей проге.

именно это и делается
Цитата
вы переписываете не все предприятие целиком, а только часть

именно все от бухгалтерии и планового отдела до отдела кадров


--------------------
---
PM MAIL WWW   Вверх
Vit
Дата 3.11.2004, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Перенесено из баз данных


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Foxpro/Clipper/Dbase"
MoLeX

Запрещается!

1. Публиковать ссылки для чисто рекламных целей.

2. Оффтопить, флеймить, говорить не культурно.

Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему.

Задавайте вопросы правильно - как спросите, так вам и ответят.

Разрешено!

Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил.

Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы.

P.S. Размещение рекламы будет строго наказываться!



Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MoLeX

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Foxpro/Clipper/Dbase | Следующая тема »


 




[ Время генерации скрипта: 0.0429 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.