powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Построчное перемещение в курсоре
12 сообщений из 12, страница 1 из 1
Построчное перемещение в курсоре
    #36272037
K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
K
Гость
Добрый день!
Задумка следующая
На основе запроса формируется курсор t с списком шифров узлов и изделий в которые входит конкретный крепеж.
Далее если курсор t имеет записи, то необходимо пройтись по всем записям (интерисуют только узлы) с целью выяснить в какие они входят изделия. Узел от изделия отличаеться наличием ".000".
Если я в коде убираю цикл по строчкам курсора и проверку на наличие .000, а затем перевожу курсор на первую запись все работает. А если пишу приведенный код, то ошибки не выдает, но ничего и не выводит во втором гриде.
Имееться следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
SELECT hakb_izd.spezification as oboznach, izd_sod.quantity, izd_sod.note INTO CURSOR tmp_1 READWRITE FROM hakb_izd LEFT JOIN izd_sod ON (izd_sod.id_k_m = krep_mater.id_k_m) AND (krep_mater.type = "Ñòàíäàðòíûå_èçäåëèÿ") AND (izd_sod.id_sb_d= " ") WHERE hakb_izd.id_izd = izd_sod.id_izd
SELECT hakb_det.oboznach, sborka_soder.quantity, sborka_soder.note INTO CURSOR tmpp_1 READWRITE FROM hakb_det LEFT JOIN sborka_soder ON (sborka_soder.id_k_m = krep_mater.id_k_m) AND (krep_mater.type = "Ñòàíäàðòíûå_èçäåëèÿ")  WHERE hakb_det.id_sb_d = sborka_soder.id_sb_d
SELECT DISTINCT oboznach,quantity,note FROM tmp_1 UNION select DISTINCT oboznach,quantity,note FROM tmpp_1 INTO CURSOR t
thisform.Pageframe1.Page2.Grid1.recordsource = "t"

thisform.Pageframe1.Page2.Grid1.column1.ControlSource = "oboznach"
thisform.Pageframe1.Page2.Grid1.column2.ControlSource = "quantity"
thisform.Pageframe1.Page2.Grid1.column3.ControlSource = "note"
thisform.Pageframe1.Page2.Grid1.Column1.Width =  102 
thisform.Pageframe1.Page2.Grid1.Column2.Width =  68 
thisform.Pageframe1.Page2.Grid1.Column3.Width =  178 
nreccount = RECCOUNT()
IF nreccount> 0 
  FOR i= 1  TO nreccount
  GO i
    IF ATC('.000',oboznach)= 0 
    EXIT
    ELSE
     SELECT DISTINCT hakb_izd.spezification as oboznach, izd_sod.quantity, izd_sod.note INTO CURSOR sss READWRITE FROM hakb_izd INNER JOIN hakb_det ON hakb_det.oboznach=t.oboznach INNER JOIN izd_sod ON (izd_sod.id_sb_d = hakb_det.id_sb_d) AND (izd_sod.id_vh_sb = " ")AND (izd_sod.id_k_m = " ")AND (izd_sod.id_p = " ") WHERE izd_sod.id_izd = hakb_izd.id_izd
     SELECT DISTINCT id_sb_d INTO CURSOR ss FROM hakb_det WHERE t.oboznach = hakb_det.oboznach
     SELECT DISTINCT id_sb_d, quantity, note INTO CURSOR s FROM sborka_soder WHERE ss.id_sb_d  = sborka_soder.id_vh_sb
     SELECT DISTINCT hakb_det.oboznach, s.quantity, s.note INTO CURSOR tmppp READWRITE FROM hakb_det INNER JOIN s ON s.id_sb_d = hakb_det.id_sb_d
     SELECT DISTINCT oboznach, quantity, note FROM sss UNION SELECT DISTINCT oboznach, quantity, note FROM tmppp INTO CURSOR ssss READWRITE 
    ENDIF
     
     SELECT * from ssss INTO CURSOR obch_t 
 ENDFOR
thisform.Pageframe1.Page2.Grid2.recordsource = "obch_t"
thisform.Pageframe1.Page2.Grid2.column1.ControlSource = "oboznach"
thisform.Pageframe1.Page2.Grid2.column2.ControlSource = "quantity"
thisform.Pageframe1.Page2.Grid2.column3.ControlSource = "note"
thisform.Pageframe1.Page2.Grid2.Column1.Width =  102 
thisform.Pageframe1.Page2.Grid2.Column2.Width =  68 
thisform.Pageframe1.Page2.Grid2.Column3.Width =  178 

ELSE
thisform.Pageframe1.Page2.Grid2.recordsource = " "
thisform.Pageframe1.Page2.Grid2.column1.ControlSource = " "
thisform.Pageframe1.Page2.Grid2.column2.ControlSource = " "
thisform.Pageframe1.Page2.Grid2.column3.ControlSource = " "
thisform.Pageframe1.Page2.Grid2.Column1.Width =  102 
thisform.Pageframe1.Page2.Grid2.Column2.Width =  68 
thisform.Pageframe1.Page2.Grid2.Column3.Width =  178 

ENDIF
...
Рейтинг: 0 / 0
Построчное перемещение в курсоре
    #36272120
АлексейО
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
после выполнения SELECT * from ssss INTO CURSOR obch_t
текущая область меняется и непонятно куда вас приведет go i
...
Рейтинг: 0 / 0
Построчное перемещение в курсоре
    #36272305
K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
K
Гость
И как же мне быть?
...
Рейтинг: 0 / 0
Построчное перемещение в курсоре
    #36272344
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переключаться на нужную таблицу перед GO i
...
Рейтинг: 0 / 0
Построчное перемещение в курсоре
    #36272353
K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
K
Гость
Dag, я написала select t, но от этого ничего не поменялось
...
Рейтинг: 0 / 0
Построчное перемещение в курсоре
    #36272451
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
IF _TALLY> 0 
  FOR i= 1  TO _TALLY
  GO i
    select t
*как только встретиться строка c полем oboznach без подстроки ".000" , то ститаем всю
*остальную выборку неверной
*Я правильно вас понял?  

    IF ATC('.000',oboznach)= 0 
    EXIT
    ELSE
     SELECT DISTINCT hakb_izd.spezification as oboznach, izd_sod.quantity, izd_sod.note INTO CURSOR sss READWRITE FROM hakb_izd INNER JOIN hakb_det ON hakb_det.oboznach=t.oboznach INNER JOIN izd_sod ON (izd_sod.id_sb_d = hakb_det.id_sb_d) AND (izd_sod.id_vh_sb = " ")AND (izd_sod.id_k_m = " ")AND (izd_sod.id_p = " ") WHERE izd_sod.id_izd = hakb_izd.id_izd
     SELECT DISTINCT id_sb_d INTO CURSOR ss FROM hakb_det WHERE t.oboznach = hakb_det.oboznach
     SELECT DISTINCT id_sb_d, quantity, note INTO CURSOR s FROM sborka_soder WHERE ss.id_sb_d  = sborka_soder.id_vh_sb
     SELECT DISTINCT hakb_det.oboznach, s.quantity, s.note INTO CURSOR tmppp READWRITE FROM hakb_det INNER JOIN s ON s.id_sb_d = hakb_det.id_sb_d
     SELECT DISTINCT oboznach, quantity, note FROM sss UNION SELECT DISTINCT oboznach, quantity, note FROM tmppp INTO CURSOR ssss READWRITE 
    ENDIF
     
     SELECT * from ssss INTO CURSOR obch_t 
 ENDFOR

...
Рейтинг: 0 / 0
Построчное перемещение в курсоре
    #36272520
K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
K
Гость
Dag,Наоборот, если в строке есть подстрока .000, то переходим на следующую строку, без выборки.
Сейча попробую применить Ваш код
...
Рейтинг: 0 / 0
Построчное перемещение в курсоре
    #36272555
K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
K
Гость
Dag, Все равно не работает, и я честно говоря не поняла почему select t стоит после go i
...
Рейтинг: 0 / 0
Построчное перемещение в курсоре
    #36272618
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Dag, Все равно не работает, и я честно говоря не поняла почему select t стоит после go i

Это потому, что я ошибся. конечно сначала select, затем go.

По-моему, команда EXIT лишняя, она прерывает сканирование курсора t.
...
Рейтинг: 0 / 0
Построчное перемещение в курсоре
    #36273481
K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
K
Гость
Все равно не работает:-(
Может кто-то сталквася с подобным.
...
Рейтинг: 0 / 0
Построчное перемещение в курсоре
    #36273920
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K,
EXIT нужно заменить на LOOP;
Цикл For/EndFor целесообразнее заменить на SCAN/ENDSCAN, он сам позаботится о восстановлении текущей рабочей области (т.е. "t");
Ну и... то ли я, старый дурак, чужой код читать разучился, то ли еще чего, но, ИМХО, obch_t пересоздается заново на каждом шаге цикла обработки записи курсора t, т.е. накопление записей, как таковое, отсутствует.
...
Рейтинг: 0 / 0
Построчное перемещение в курсоре
    #36273997
K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
K
Гость
GermanGM, я честно говоря тоже засомневалась в этом. Мне надо с накоплением. А за замену for я вас поняла, сейчас буду пробывать, спасибо за совет.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Построчное перемещение в курсоре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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