Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заполнение 1 курсора данными из других / 4 сообщений из 4, страница 1 из 1
14.01.2013, 06:59
    #38108729
Mihail3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение 1 курсора данными из других
Есть курсор Obcursor с полями

| kodnomenkl(char 20) | kolprih(decimal 18.3) | kolrash(decimal 18.3) |

в нем поле kodnomenkl(- код номенклатуры) заполнено, а др. поля kolprih и kolrash(количество прихода и расхода) заполнены просто нулями (0,000). А их нужно заполнить данными о количестве из других курсоров: Prihod и Rashod со структурой

| kodnomenkl(char 20) | kol(decimal 18.3) |

В нем поле kodnomenkl (- код номенклатуры), а kol (- количество)

как это реализовать?

пробовал

UPDATE Obcursor SET kolprih=(SELECT Prihod.kol from Prihod WHERE Obcursor.kodnomenkl = Prihod.kodnomenkl)

не получается
...
Рейтинг: 0 / 0
14.01.2013, 07:28
    #38108740
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение 1 курсора данными из других
Mihail3не получается"не получается" - работать у негров
а у вас - либо фокс ошибку выдал (тогда текст ошибки в студию), либо в "обкурсор" остаются нули (тогда так и пишите).

ЗЫ. Пример работающего апдейта:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE CURSOR qwe(a int,b int)
CREATE CURSOR asd(a int,b int)
INSERT INTO qwe values(1,0)
INSERT INTO qwe values(2,0)
INSERT INTO asd values(1,1)
INSERT INTO asd values(1,3)
INSERT INTO asd values(2,0)
INSERT INTO asd values(2,100500)
UPDATE qwe SET qwe.b=nvl(t0.b,0) from qwe left join (select a,SUM(b) b from asd group by a) as t0 on qwe.a=t0.a
SELECT  * FROM qwe
...
Рейтинг: 0 / 0
14.01.2013, 08:01
    #38108749
Mihail3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение 1 курсора данными из других
tanglir, Спасибо.

Ошибка в том что в созданном курсоре недопустимо значение .NULL. у поля куда заносятся данные..

Еще раз спасибо, анализ вашего кода дал результат)
...
Рейтинг: 0 / 0
14.01.2013, 14:57
    #38109332
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение 1 курсора данными из других
tanglirЗЫ. Пример работающего апдейта:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE CURSOR qwe(a int,b int)
CREATE CURSOR asd(a int,b int)
INSERT INTO qwe values(1,0)
INSERT INTO qwe values(2,0)
INSERT INTO asd values(1,1)
INSERT INTO asd values(1,3)
INSERT INTO asd values(2,0)
INSERT INTO asd values(2,100500)
UPDATE qwe SET qwe.b=nvl(t0.b,0) from qwe left join (select a,SUM(b) b from asd group by a) as t0 on qwe.a=t0.a
SELECT  * FROM qwe



В данном случае достаточно заменить LEFT на INNER и тогда nvl() - не понадобится. Будут обновлены только те записи, по которым есть сумма. У остальных - как был ноль, так ноль и останется.

Код: sql
1.
2.
3.
4.
UPDATE qwe ;
SET qwe.b=t0.b ;
from qwe ;
inner join (select a,SUM(b) b from asd group by a) as t0 on qwe.a=t0.a
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заполнение 1 курсора данными из других / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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