powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выборка из таблицы
17 сообщений из 17, страница 1 из 1
Выборка из таблицы
    #39060197
ghjdjlrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуте!
Впервые пишу код на фокспро. Надо в таблице оставить записи в разрезе полей lifnr и waers кроме строки с наибольшим значением поля bvtyp (число).
scan
lifnrTek=lifnr
do while lifnrTek= lifnr
waersTek=waers
bvtypTek= bvtyp
select count(*) from lfbk where lifnrTek=lifnr and waersTek=waers into rows_k_w
delete from lfbk where НомерТекущейСтрокиВРазрезеПолей_lifnr_и_waers<>rows_k_w
enddo
endscan
Посмотрите, пожалуйста, как определить НомерТекущейСтрокиВРазрезеПолей_lifnr_и_waers?
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39060219
ghjdjlrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 scan
  lifnrtek=lifnr
  do while lifnrtek=lifnr
    waerstek=zwaers
    bvtyptek=bvtyp
    select count(*) from lfbk ;
     where lifnrtek=lifnr and waerstek=zwaers ;
     into cursor rows_k_w
    * delete from lfbk where
    enddo &&выдает ошибку: lifnr не найден 
endscan
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39060236
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ghjdjlrf
Код: sql
1.
    enddo &&выдает ошибку: lifnr не найден 


если lifnr это поле таблицы, то надо ее указывать.
Код: sql
1.
  do while lifnrtek=mytable.lifnr

В остальное не вникал.
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39060292
ghjdjlrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо. Ошибка про lifnr пропала.

Скажите, пжл, верно ли записано кол-во строк в переменную ("cursor" обязательно использовать?):
Код: sql
1.
2.
3.
select count(*) from lfbk ;
     where lifnrtek=lifnr and waerstek=zwaers ;
     into cursor rows_k_w
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39060294
ghjdjlrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При выполнении почему-то произошло зацикливание.
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39060300
ghjdjlrfспасибо. Ошибка про lifnr пропала.

Скажите, пжл, верно ли записано кол-во строк в переменнуюВ какую переменную, если вывод делаете в курсор? ("cursor" обязательно использовать?)Овершенно необязательно. Можно массив (Array)? который можно и как переменную использовать:
Код: sql
1.
2.
3.
4.
select count(*) from lfbk ;
     where lifnrtek=lifnr and waerstek=zwaers ;
     into array rows_k_w
? rows_k_w
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39060303
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если надо просто посчитать количество строк удовлетворяющих условию, то можно сразу в переменную
Код: sql
1.
2.
3.
sele lfbk 
count for lifnrtek=lifnr and waerstek=zwaers to lnCnt
? lnCnt
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39060306
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ghjdjlrfПри выполнении почему-то произошло зацикливание.
ожидаемо. Цикл do не передвигает указатель на текущую запись. Замени на скан
Код: sql
1.
2.
scan while lifnrtek=lifnr
   ...
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39060352
ghjdjlrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 scan
   lifnrtek=lfbk.lifnr
   scan while lfbk.lifnr=lifnrtek
     waerstek=lfbk.zwaers
     bvtyptek=lfbk.bvtyp
     scan while lfbk.zwaers=waerstek
       count for lifnrtek=lfbk.lifnr and ;
        waerstek=lfbk.zwaers to n

     * delete from lfbk where
     endscan
     endscan
 endscan



Пока не получается находить количество строк в разрезе сочетаний lifnr и zwaers.
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39060367
ghjdjlrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выводит изформацию по первому значению поля lifnr, после повторного выполнения программы по последнему.
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39060411
ghjdjlrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый Scan должен пробегать все записи таблицы, вложенные записи по условию с переходом на следующую запись. Скажите, пжл, почему не работает код?
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39060415
ghjdjlrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Циклы нужны, чтобы удалить из файла dbf записи по lifnr и zwaers с максимальным значением поля bvtyp.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
*1
*  count for lifnrtek=lfbk.lifnr and ;
*   waerstek=lfbk.zwaers to n
*2
 select max(lfbk.bvtyp) as deltyp
 from lfbk
 where lifnrtek=lfbk.lifnr and ;
   waerstek=lfbk.zwaers
   group by lfbk.lifnr, lfbk.zwaers
  *delete deltyp from lfbk
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39060423
ghjdjlrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может быть проиндексировать записи нужно?
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39060991
ghjdjlrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удаляет почему-то все записи из тиблицы lfbk.dbf.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 select max(bvtyp) as deltyp, lifnr, zwaers ;
      from lfbk ;
        group by lfbk.lifnr, lfbk.zwaers ;
        into cursor result

 scan
   select lfbk
   delete for lifnr = result.lifnr and zwaers = result.zwaers
   select result
 endscan

 select lfbk
 pack
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39061014
SoftwareBoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ghjdjlrfНадо в таблице оставить записи в разрезе полей lifnr и zwaers кроме строки с наибольшим значением поля bvtyp (число)
Код: sql
1.
2.
SELECT lifnr, zwaers, MAX(bvtyp) as maxbvtyp FROM lfbk GROUP BY lifnr, zwaers INTO CURSOR maxlfbk
DELETE lfbk from maxlfbk where lfbk.lifnr=maxlfbk.lifnr AND lfbk.zwaers=maxlfbk.zwaers AND lfbk.bvtyp=maxlfbk.maxbvtyp
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39061050
ghjdjlrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SoftwareBoy, спасибо. Программе не нравится во 2-й строке какая-то фраза.
...
Рейтинг: 0 / 0
Выборка из таблицы
    #39061054
ghjdjlrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А результат работы такой же (невреный): несколько последних строк таблицы lfbk удаляет, а не те, что надо.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выборка из таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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