powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста
6 сообщений из 6, страница 1 из 1
Подскажите пожалуйста
    #39268578
Olesia_Dav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, мне нужно сделать замену всех grp_sk=79 с кодом услуг 44084 и 44397 на 791 а всех grp_sk=79 с кодом услуг 44085 и 44086 на 792, делаю так

repL grp_sk with 791 for code_usl='44084' OR code_usl='44397' OR grp_sk=79
repL grp_sk with 792 for code_usl='44085' OR code_usl='44086' OR grp_sk=79

но загвоздка в том,что поле code_usl в текстовом формате и коды даны через запятую. Например в одной строке встречаются и 44084 и 44397 и 44085. (См. Файл) Как можно прописать чтобы поиск шел по строчно в этой колонке
...
Рейтинг: 0 / 0
Подскажите пожалуйста
    #39268646
Фотография descent52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
SCAN FOR LIKE('44397*', code_usl)
   ?  code_usl
ENDSCAN
...
Рейтинг: 0 / 0
Подскажите пожалуйста
    #39268659
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
repL grp_sk with 792 for (code_usl='44085' OR code_usl='44086') AND grp_sk=79 
...
Рейтинг: 0 / 0
Подскажите пожалуйста
    #39268665
Olesia_DavПодскажите пожалуйста, мне нужно сделать замену всех grp_sk=79 с кодом услуг 44084 и 44397 на 791 а всех grp_sk=79 с кодом услуг 44085 и 44086 на 792, делаю так

repL grp_sk with 791 for code_usl='44084' OR code_usl='44397' OR grp_sk=79
repL grp_sk with 792 for code_usl='44085' OR code_usl='44086' OR grp_sk=79

но загвоздка в том,что поле code_usl в текстовом формате и коды даны через запятую. Например в одной строке встречаются и 44084 и 44397 и 44085. (См. Файл) Как можно прописать чтобы поиск шел по строчно в этой колонке

за такое:
Например в одной строке встречаются и 44084 и 44397 и 44085
я бы руки архитектору оборвал...
здесь же и 44084 (код замены 791), 44085 (код замены 792)... А на какой код поменять будет правильно? Или "кто последний, тот и Папа Карло"?

Примерно такой код вырисовывается:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Scan for grp_sk = 79
if '44084' $ code_usl OR '44397' $ code_usl
  replace grp_sk with 791
else
  if '44085' $ code_usl OR '44086' $ code_usl
     replace grp_sk with 792
  endif
endif
endscan
...
Рейтинг: 0 / 0
Подскажите пожалуйста
    #39268683
Olesia_Dav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда сделается замена grp_sk только на 791, т.к. фокс про ищет по первому значению в строке, а на последующие внимания не обращает.
...
Рейтинг: 0 / 0
Подскажите пожалуйста
    #39268820
SoftwareBoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если новый код определяется первым значением, которое встретится в строке:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Scan for grp_sk = 79
 ln7911 = AT('44084',code_usl)
 ln7912 = AT('44397',code_usl)
 ln7921 = AT('44085',code_usl)
 ln7922 = AT('44086',code_usl)
 ln791 = IIF(ln7911>0 AND !BETWEEN(ln7912,1,ln7911-1),ln7911,ln7912)
 ln792 = IIF(ln7921>0 AND !BETWEEN(ln7922,1,ln7921-1),ln7921,ln7922)
 if ln791>0
  if ln792>0
   replace grp_sk with IIF(ln791<ln792,791,792)
  else
   replace grp_sk with 791
  endif
 else
  if ln792>0
   replace grp_sk with 792
  endif
 endif
endscan


Если, как предположил Станислав, определяется по последнему вхождению, то RAT вместо AT и поменять местами новые значения в IIF.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]