Поиск:

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


Эксперт
***


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

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



объясните пожалуйста примерно что делается в этом коде
2 Cashey особо уповаю на тебя, ты вроде в фоксе разбираешься хорохо
Код

*set status off
SET BELL OFF
SET EXCL ON
set date germ
set safe off
*set talk off
*set ESCA off
SET PRINT OFF
use m310p_t
copy to m31
use m31
repl all obkd with obkdpp
use ved excl
zap
appe from m31
close all
sele 1
*use c:\DISK_D\NSI\m20000 inde c:\DISK_D\NSI\m20000
use m20000 INDE M20000
*inde on obd to m20000
sele 2
use vedprp3 excl
zap
appe from VED
repl all obd with obkdpp
set rela To obd into a
go top
do whil .not.eof()
repl obdchk with a->obdch
skip
enddo
repl all obd with obchd
INDE ON SUBSTR(OBD,4,9)+SUBSTR(OBD,1,3)+OBKD TO VEDPRP
QUIT
*RETURN


Это сообщение отредактировал(а) Paradox - 22.1.2004, 08:05


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


Эксперт
***


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

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



Вот еще выручайте попадаю надо эти алгоритмы на SQL сконвертить
Код
set status off
set scor off
set talk off
set color to w/w
set safe off
clear
restore from bbb addi
set color to w/b
@ 8,18 to 15,52 clear
set color to gr+/b
@ 8,19 to 15,51 double
@ 10,24 say 'ИДЕТ РАЗУЗЛОВАHИЕ СБОРКИ'
@ 13,30 SAY KUKU
STORE KUKU TO DDD1
use M310P
DELE FILE PPP.DBF
COPY STRU TO PPP
APPE BLAN
REPL OBCHD WITH DDD1,OBKD WITH DDD1,KOCHK WITH 1,KO1 WITH 1,KO2 WITH 1,nzap with recno()
DELE FILE M310P.IDX
INDE ON aaa+OBKD+OBCHD+str(nzap) TO M310P
use
    SELE 3
    USE PPP
    zap
    sele 2
    USE M310P INDE M310P
    GO TOP
KKK=0
KUKU=0
NNN=1
kuda=obkd
DO WHIL .t.
LOCA FOR AAA#'*'
IF FOUND()
kuda=obkd
    SELE 1
    USE M20310 iNDE M20310
    GO TOP
    SET RELA TO aaa+OBKD INTO B
    seek kuda
    if .not.found()
    sele 2
    seek ' '+kuda
    if subs(obchd,1,1)='1'.or.subs(obchd,1,1)='2'.OR.SUBS(OBCHD,1,1)='7'.AND.SUBS(OBCHD,4,9)='000000000'
    repl aaa1 with '-'
    endif
    sele 1
    endif
    IF OBKD=B->OBKD.AND.aaa=B->AAA.and.obkd=kuda.and..not.eof()
    DO WHIL .NOT.EOF().and.obkd=kuda
******в m20310 всегда aaa=' '*******
    SELE 3
    APPE BLAN
    REPL KO1 WITH B->KOCHK,KOCHK WITH A->KOCHK,OBCHD WITH A->OBCHD,OBKD WITH A->OBKD
    repl obkdpp with obkd,obkd with obchd,ko2 with kochk,kochk with ko1*kochk
    repl prim_uzel with b->prim_uzel
    repl kkk1 with b->kkk1+1
    sele 2
    repl aaa1 with '+'
    SELE 1
    SKIP
    ENDDO
    endif
set rela to
SELE 2
use m310p
REPL ALL aaa WITH '*' FOR AAA#'*'.and.subs(obchd,1,1)='0'
REPL ALL aaa WITH '*' FOR AAA#'*'.and.subs(obchd,1,1)>'2'
* REPL ALL AAA WITH '*',UROV WITH KKK FOR AAA#'*'.and.aaa1='+'
* REPL ALL AAA WITH '*',UROV WITH KKK FOR AAA#'*'.and.aaa1='-'
REPL ALL AAA WITH '*' FOR AAA#'*'.and.aaa1='+'
REPL ALL AAA WITH '*' FOR AAA#'*'.and.aaa1='-'
REPL ALL UROV WITH KKK1
SELE 3
IF RECCO()>0
KUKU=1
ENDIF
DELE FILE PPP1.DBF
COPY TO PPP1
IF KUKU=1
SELE 2
APPE FROM PPP1
    repl all nzap with recno()
    REPL ALL PRIM_UZEL WITH OBKD FOR AAA#'*'.AND.SUBS(OBKD,1,1)='1'.AND.SUBS(OBKD,4,9)#'000000000'  &&& СО ВТОРОГО УРОВHЯ
    KKK=KKK+1
    DELE FILE M310P.IDX
    INDE ON aaa+OBKD+OBCHD+str(nzap) TO M310P
ENDIF
SELE 3
ZAP
SELE 2
USE M310P INDE M310P excl
LOOP
ELSE
EXIT
ENDIF
ENDDO
USE
CLOSE ALL
retu




Это сообщение отредактировал(а) Paradox - 22.1.2004, 09:30


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


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Код написан на каком-то старом диалекте Фокса, но постараюсь помочь

Код
*set status off   && закоментированный текст
SET BELL OFF                && отключение звуковых сигналов (в VisualFoxPro не используется)
SET EXCL ON                 && установка открывать таблицы в монопольном режиме (в VisualFoxPro не используется)
set date germ               && установка немецкого типы даты
set safe off                   && отключение сообщения при перезаписывании файла
*set talk off                  && закоментированный текст
*set ESCA off                && закоментированный текст
SET PRINT OFF              && уставновка отказа дублирования вывода дисплея на принтер (в VisualFoxPro не используется)
use m310p_t                 && открытие таблицы m310p_t
copy to m31                  && копирование в файл m31
use m31                        && открытие таблицы  m31
repl all obkd with obkdpp          && замена всех значений obd на значение obkdpp
use ved excl                  && открытие таблицы ved  в эксклюзивном режиме (глупо т.к. есть установка SET EXCL ON)
zap                                && очистка всего содержимого таблицы
appe from m31              && вставка значений из таблицы m31
close all                         && закрытие всех таблиц  
sele 1                           && выбор псевдонима 1
*use c:\DISK_D\NSI\m20000 inde c:\DISK_D\NSI\m20000     && закоментированный текст
use m20000 INDE M20000   && открытие таблицы с индексом
*inde on obd to m20000      && закоментированный текст
sele 2                           && выбор псевдонима 2
use vedprp3 excl                  && открытие таблицы в эксклюзивном режиме (глупо т.к. есть установка SET EXCL ON)
zap                                 && очистка всего содержимого таблицы  
appe from VED               && вставка значений из таблицы VED
repl all obd with obkdpp   && замена всех значений obd на значение obkdpp
set rela To obd into a       && установка связи по полю obd с псевдонимом a
go top                               && преход к первой записи
do whil .not.eof()              && цикл замены значений поля obdchk на a->obdch
repl obdchk with a->obdch   && в VisualFoxPro заменено на команду SCAN
skip
enddo
repl all obd with obchd      && замена всех значений obd на значение obchd
INDE ON SUBSTR(OBD,4,9)+SUBSTR(OBD,1,3)+OBKD TO VEDPRP   && установка сложного индекса для таблицы VEDPRP
QUIT      && Конец программы
*RETURN     && закоментированный текст


Кажется так smile.gif

Это сообщение отредактировал(а) Cashey - 22.1.2004, 10:32


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Paradox
Дата 22.1.2004, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Спасибо большое


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


Эксперт
***


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

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



Cashey
Код
set rela To obd into a       && установка связи по полю obd с псевдонимом a

а что подразумевается под этим псевдонимом?
Какая таблица ?


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


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



a здесь это первая область данных, которая используется на момент исполнения комманды. В твоем случае это таблица m20000
Да, связь установится по индексированному полю

Это сообщение отредактировал(а) Cashey - 22.1.2004, 15:07


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Cashey
Дата 22.1.2004, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



А что тебе нужно по второму коду? Там сплошные удаления таблиц и создание таблиц с тем же именнем, вероятно с той же структурой и набором данных. Лечение баз какое-то. Если будешь перекладывать его на VisualFoxPro имей ввиду, что код в высшей степени безграммотный.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Korney
Дата 22.1.2004, 22:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я не знаю размера таблиц, но судя по тому, как с ними обращаются, они не очень большие и либо учебные, либо никому не нужные.
Если не объяснять, что делает этот "код", то его можно заменить следующим и получить тотже результат быстрее.
Код

SET BELL OFF
SET EXCL ON          && все таблицы открываются эксклюзивно
set date germ        && формат вывода даты дд.мм.гггг
set safe off             && файлы будут перезаписываться без запроса на подтверждение
*set talk off            && если убрать звездочку - на экране не будут мелькать результаты работы
*set ESCA off
SET PRINT OFF
SELECT * FROM m310p_t INTO DBF vedprp3    && копируем из таблицы m310p_t в vedprp3
USE m20000 INDEX m20000 IN 0                   && открываем таблицу m20000 с одноим.индексом
SET RELATION TO obkdpp INTO m20000         && связываем такблицу vedprp3 c таблицей m20000
* и наконец заменяем значения интересующих нас полей таблицы vedprp3
* на значения других полей этой-же таблицы или таблицы m20000
REPLACE ALL obkd     WITH obkdpp,;
                     obd      WITH m20000.obdch,;
                     obdchk WITH obd
* далее идет генерация индекса для таблицы vedprp3.dbf (файл vedprp.idx)
INDE ON SUBSTR(OBD,4,9)+SUBSTR(OBD,1,3)+OBKD TO VEDPRP
QUIT          && выход в ОС
*RETURN    && если перенести звездочку на строку выше, то выход в среду FoxPro
                 && или к месту вызова этого кода (напр. после оператора DO thisCode.PRG)

Можно сделать одно замечание по поводу оператора SET RELA.... Я думаю, что должно работать корректно, но если вдруг поле obkdpp имеет большую длину нежели поле obd, то правильнее его записать SET RELATION TO LEFT(obkdpp, <длина поля OBD>)
Если что не так можно писать [email protected]
  Вверх
Cashey
Дата 22.1.2004, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Korney если уж решил похвастаться своими знаниями Фокса так уж пиши код правильный, твой вариант будет работать только при некоторых стечениях данных. те теряет универсальность


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Paradox
Дата 23.1.2004, 07:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата
Я не знаю размера таблиц, но судя по тому, как с ними обращаются, они не очень большие и либо учебные, либо никому не нужные.

Korney это таблицы БД одного из крупнейших заводов Новосибирска, просто они щас с досовского фокса переходят под винды и интербейз - этим переводм занимается наша фирма и в частоности я


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


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Paradox
А почему им не воспользоваться VisualFoxPro? Пареход будет, относительно, простой, работать будет под виндами, а работа с базами надежна. Если сеть маленькая, то можно и сетевую версию сделать.



--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
AntonSaburov
Дата 23.1.2004, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Цитата
Korney если уж решил похвастаться своими знаниями Фокса так уж пиши код правильный,

Модератор: На форуме запрещено переходить на личности. Если человек ошибся, то не стОит ему это указывать в грубой форме. Все мы не идеальны.
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 23.1.2004, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Korney
Администрация с огромным удовольствием выражает Вам свою благодарность за посещение нашего форума. Приглашаем Вас зарегистрироваться и стать нашим постоянным участником. Мы всегда рады новым лицам smile.gif

PM MAIL WWW ICQ   Вверх
Cashey
Дата 23.1.2004, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



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

Если все-таки я кого-то обидел приношу свои извенения, не хотел.
Korney участники форума также присоединяются к словам администрации, мы тоже рады новым аватарам smile.gif

Это сообщение отредактировал(а) Cashey - 23.1.2004, 11:01


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Paradox
Дата 23.1.2004, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата
А почему им не воспользоваться VisualFoxPro?

Потому что договор с нами а мы VisualFoxPro не занимаемся
мы ставим им свою систему, для этого все их базы надо перегнать под InterBase
Это является одной из моих задач - мне на нее два месяца
Доделаю и уволюсь - далеко мотаться приходится на работу (но это уже оффтоп пошел) smile.gif



--------------------
---
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Foxpro/Clipper/Dbase"
MoLeX

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

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

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

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

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

Разрешено!

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

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

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



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

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


 




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


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

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