powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / И сново курсоры
10 сообщений из 10, страница 1 из 1
И сново курсоры
    #36616571
Raddy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня есть 2 курсора (mynewcur и cur2), разные по параметрам
нужно добавить в курсор cur2 поля naimen, kod, по текущему коду
вопрос: если нам нужно добавить запись в конец курсора cur2, не перезаписываю то, что в нем уже имеется, как это реализовать?

Код: plaintext
1.
2.
3.
4.
5.
LOCAL dStart
dStart = ThisForm.Text16.Value

SELECT DISTINCT naimen, kod FROM mynewcur;
WHERE mynewcur.kod = dStart;
ORDER BY mynewcur.naimen INTO cursor cur2
...
Рейтинг: 0 / 0
И сново курсоры
    #36616579
Raddy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
SELECT DISTINCT naimen, kod FROM mynewcur;
WHERE mynewcur.kod = dStart;
UNION naimen, kod FROM shopcur;
ORDER BY mynewcur.naimen INTO cursor shopcur

не работает(
...
Рейтинг: 0 / 0
И сново курсоры
    #36616582
SindoMeon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raddy,

если в обоих курсорах есть одинаковые поля (идентификаторы), то примерно так:
Код: plaintext
1.
2.
3.
4.
5.
select c.naimen, c.kod, c2.* ;
  from mynewcur c, cur2 c2 ;
  where c.something = c2.something ;
    and c.kod = dStart ;
  order by c.naimen into cursor cur2
а если нет, то получим декартово произведение
...
Рейтинг: 0 / 0
И сново курсоры
    #36616591
Raddy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
CREATE CURSOR c1 (kod c( 6 ), naimen c( 40 ), ...);
...

CREATE CURSOR c2 (kod c( 6 ), naimen c( 40 ), ...);


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
LOCAL dStart
dStart = ThisForm.Text16.Value

select c1.naimen, c1.kod, c2.naimen, c2.kod ;
  from c1, c2 ;
  where c1.kod = c2.kod ;
    and c1.kod = dStart ;
  order by c1.naimen into cursor c2

нужно по соответствующему коду, добавлять 2 записи(naimen и kod) из курсора с1 в c2
...
Рейтинг: 0 / 0
И сново курсоры
    #36616592
Raddy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SindoMeon
получил декартово произведение
...
Рейтинг: 0 / 0
И сново курсоры
    #36616594
SindoMeon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raddy
Код: plaintext
1.
2.
3.
CREATE CURSOR c1 (kod c( 6 ), naimen c( 40 ), ...);
...

CREATE CURSOR c2 (kod c( 6 ), naimen c( 40 ), ...);


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
LOCAL dStart
dStart = ThisForm.Text16.Value

select c1.naimen, c1.kod, c2.naimen, c2.kod ;
  from c1, c2 ;
  where c1.kod = c2.kod ;
    and c1.kod = dStart ;
  order by c1.naimen into cursor c2

нужно по соответствующему коду, добавлять 2 записи(naimen и kod) из курсора с1 в c2
а вот за одинаковые названия полей Fox может по рукам надавать. Как их такого курсора селекты делать будем, а?
...
Рейтинг: 0 / 0
И сново курсоры
    #36616605
SindoMeon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raddy SindoMeon
получил декартово произведение
если подразумевается такое:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE CURSOR c1 (kod c( 6 ), naimen c( 10 ))
INSERT INTO c1 VALUES ('135', 'first_1')
INSERT INTO c1 VALUES ('135', 'first')
CREATE CURSOR c2 (kod c( 6 ), naimen c( 10 ))
INSERT INTO c2 VALUES ('135', 'second')
SELECT c1.kod as c1_kod, c1.naimen as c1_naimen, c2.kod as c2_kod, c2.naimen as c2_naimen ;
FROM c1, c2 ;
WHERE c1.kod = c2.kod ;
INTO CURSOR c2
то это не декартово произведение, а нормальный результат запроса: количество строк будет равно максимуму из строк С1 и С2, удовлетворяющих условиям выборки
...
Рейтинг: 0 / 0
И сново курсоры
    #36616631
SindoMeon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SindoMeonRaddy SindoMeon
получил декартово произведение
если подразумевается такое:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE CURSOR c1 (kod c( 6 ), naimen c( 10 ))
INSERT INTO c1 VALUES ('135', 'first_1')
INSERT INTO c1 VALUES ('135', 'first')
CREATE CURSOR c2 (kod c( 6 ), naimen c( 10 ))
INSERT INTO c2 VALUES ('135', 'second')
SELECT c1.kod as c1_kod, c1.naimen as c1_naimen, c2.kod as c2_kod, c2.naimen as c2_naimen ;
FROM c1, c2 ;
WHERE c1.kod = c2.kod ;
INTO CURSOR c2
то это не декартово произведение, а нормальный результат запроса: количество строк будет равно максимуму из строк С1 и С2, удовлетворяющих условиям выборки
вру. побольше строк - и действительно, произведение вырисовывается. Значит надо побольше связок и условий на выборку наложить. Причём на оба курсора.
...
Рейтинг: 0 / 0
И сново курсоры
    #36616878
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raddy,

INSERT INTO ... SELECT ...
...
Рейтинг: 0 / 0
И сново курсоры
    #36617131
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirRaddy,

INSERT INTO ... SELECT ...

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


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