Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Сканирование и замена значения в курсоре  [new]
andrepont
Member

Откуда:
Сообщений: 41
Здравствуйте. Имеется вот такое выражение
SELECT primen.*, n_plan_Izd.id_izd as Plan FROM primen INTO CURSOR TMP_primen Readwrite
SELECT TMP_primen
SCAN
SELECT n_plan_Izd
LOCATE FOR TMP_primen.id_izd = n_plan_Izd.id_izd
IF FOUND()
  replace TMP_primen.Plan WITH n_plan_Izd.&lcMonthPlan*TMP_primen.kol 
ENDIF
endscan

т.е. создаю курсор TMP_primen далее необходимо этот курсор просканировать и если значение поля TMP_primen.id_izd в курсоре и таблице n_plan_Izd.id_izd совпадут тогда поле Plan перезаписываем на результат выражения n_plan_Izd.&lcMonthPlan*TMP_primen.kol. Проблема в том что в результате выполнения в курсоре остается только одна строка (первая). В чем дело? Заранее спасибо.
30 сен 18, 15:15    [21690396]     Ответить | Цитировать Сообщить модератору
 Re: Сканирование и замена значения в курсоре  [new]
Dima T
Member

Откуда:
Сообщений: 13673
Это не так делается, почитай про язык SQL.

SELECT primen.*, n_plan_Izd.&lcMonthPlan*primen.kol as Plan;
            FROM primen left join n_plan_Izd on primen.id_izd = n_plan_Izd.id_izd;
            INTO CURSOR TMP_primen Readwrite
30 сен 18, 15:41    [21690404]     Ответить | Цитировать Сообщить модератору
 Re: Сканирование и замена значения в курсоре  [new]
Dima T
Member

Откуда:
Сообщений: 13673
andrepont
Проблема в том что в результате выполнения в курсоре остается только одна строка (первая).

Должно остаться столько строк, сколько в таблице primen
30 сен 18, 15:42    [21690405]     Ответить | Цитировать Сообщить модератору
 Re: Сканирование и замена значения в курсоре  [new]
andrepont
Member

Откуда:
Сообщений: 41
Dima T спасибо за помощь работает.
есть еще один вопрос имеется таблица detal и теперь уже вышеупомянутый курсор TMP_primen содержащий данные о плановом количестве.
Необходимо создать еще один курсор на основе таблицы detal и в нем напротив detal.id_det вывести сумму по полю plan из курсора TMP_primen для каждой детали. Пример:

таблица detal
id_det shifr_det
1 aaa
1 bbb

курсор TMP_primen
id_det id_izd Plan
1 3 10
2 1 9
1 4 12
2 5 3
2 8 1

в результате суммирования
курсор TMP_KNIGA
id_det shifr_det Plan
1 aaa 22
1 bbb 13
30 сен 18, 20:55    [21690564]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить