powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SELECT с N по M записей
18 сообщений из 18, страница 1 из 1
SELECT с N по M записей
    #37191592
mishaark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ли возможность реализовать подобную выборку. Хочу сделать постраничный вывод.

Спасибо.
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37191598
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. Можно только только извращаться с SELECT top M ... where что-то > чего-то последнее на пред.странице

Подобное только в MySQL есть.
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37192086
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishaark, если без SELECT, то можно воспользоваться Фоксовыми циклами (SCAN..., FOR..., DO...), выгружая по М записей, начиная с номера N, во временный курсор. Остальное - в Хелпе.
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37192218
mishaark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
igorbik,

То есть в каждом цикле скана делать инсерт в курсор?

А Do зачем вы там привели?
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37192253
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishaarkА Do зачем вы там привели?

Код: plaintext
1.
2.
DO WHILE .T.  && Begins loop
   IF EOF( )
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37192286
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishaarkв каждом цикле скана делать инсерт в курсор?
можно и в таблицу на диске, но это медленнее
mishaarkА Do зачем? все эти команды взаимозаменяемы практически, только в разных случаях удобнее разные команды. Help рулит.
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37192439
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: mishaark


Тормоза придумали трусыЭто вывод данных в ексель. Если на лист не помещается, вываливается в несколько файлов,
а потом собирается в один. Здесь код который вываливает данные :)
Код: 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.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
Wait ("Формирование локального курсора") Window 
Nowa
* Проверяем количество записей и если их больше, чем строк в екселе делаем разбивку на несколько листов,
* из которых склеим одну
Local nCountFiles As Long, nStart As Long, nEnd As Long
nCountFiles = Ceiling(m_proverka /  65535 ) && Вычисляем количество файлов
Dimension arrCountRow[nCountFiles]
*  If nCountFiles >  1  Then
Create Cursor curFiles(sPath m) && Курсор с путями и именами файлов
nStart =  1 
nEnd   =  65534 
For i =  1  To nCountFiles
 m_file_export= m_path_user+Sys( 2015 )+".xls"
 Select curFiles
 Append Blank
 Replace curFiles.sPath With m_file_export
 Select(m_alias)
 Go Top
 m_str = "Формирование локального курсора " + Alltrim(Str(i)) + " из " + Alltrim(Str(nCountFiles))
 Wait (m_str) Window Nowa
 col_count = Thisform.grid1.ColumnCount
 s = ""
 For j= 1  To col_count
  s1= (Thisform.grid1.Columns(j).ControlSource)&&получаем источник(поле) из курсора
  Do Case
*    Case Type(s1)==[D]&&если тип данных data
*     s = s + "Dtoc(" + (Thisform.grid1.Columns(j).ControlSource) + ") as " + 
Getwordnum(Alltrim((Thisform.grid1.Columns(j).ControlSource)),  2 , ".") + ", "&&получаем источник(поле) из курсора
  Case Type(s1)==[T]&&если тип данных datetime
   s = s + "Ttoc(" + (Thisform.grid1.Columns(j).ControlSource) + ") as " + 
Getwordnum(Alltrim((Thisform.grid1.Columns(j).ControlSource)),  2 , ".") + ", "&&получаем источник(поле) из курсора
  Case Type(s1)==[L]&&если тип данных logical
   s = s + "iif(&s1, 'Да', 'Нет') as " + s1 + ", "
  Otherwise
   s = s + (Thisform.grid1.Columns(j).ControlSource) + ", "&&получаем источник(поле) из курсора
  Endcase
 Endfor
 s = Substr(s,  1 , Len(s) -  2 )
 sSelect = "Select " + s + " From " + m_alias + " where Recno() >= nStart And Recno() < nEnd Into Cursor " + m_alias + 
"_1"
 &sSelect

* Получаем список полей, для импорта
 Select(m_alias+"_1")
 Afields(arrF)
 s = ""
 For j= 1  To col_count
  s = s + arrF(j,  1 ) + ", "
 Endfor
 s = Substr(s,  1 , Len(s) -  2 )


 m_str = "Вывод в Excel " + Alltrim(Str(i)) + " из " + Alltrim(Str(nCountFiles))
 Wait (m_str) Window Nowa
 Export To (m_file_export) Type Xl5 Fields &s

 arrCountRow(i) = Reccount()
 Use In Select(m_alias+"_1")
 nStart = nEnd +  1 
 nEnd   = nEnd +  65534 
Next i


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37195429
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igorbikможно и в таблицу на диске, но это медленнее
А почему медленнее? Физически курсор - это та же таблица на диске.
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37195508
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37195689
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И?
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37195702
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dag,

"Cursor live in memory and sometime VFP may create a temp file on disk with the information"
Вопрос в том, при каких условиях он сбрасывается на диск. Недавно тут было обсуждение, да вот найти что-то не могу.
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37195719
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir, вот здесь:

http://fox.wikis.com/wc.dll?Wiki~SqlCursor

написано:
The temporary table may or may not exist on disk. If there is enough memory available for the table, it will be completely stored in RAM.
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37195842
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возьмите любую таблицу и сделайте выборку в курсор
Код: plaintext
1.
select * from AnyTable into cursor myCursor where .f.
?dbf('myCursor')
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37197497
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Dag
> Возьмите любую таблицу и сделайте выборку в курсор
> select * from AnyTable into cursor myCursor where .f.
> ?dbf('myCursor')


С другой стороны, может именно команда получения DBF-файла курсора и заставляет сбрасывать курсор в файл на диске. Мне
кажется тут нужно смотреть файловым монитором, на предмет создания нового файла и изучения его содержимого.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37197582
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос> Автор: Dag
> Возьмите любую таблицу и сделайте выборку в курсор
> select * from AnyTable into cursor myCursor where .f.
> ?dbf('myCursor')


С другой стороны, может именно команда получения DBF-файла курсора и заставляет сбрасывать курсор в файл на диске. Мне
кажется тут нужно смотреть файловым монитором, на предмет создания нового файла и изучения его содержимого.
Функция DBF() возвращает имя файла зарезервированное фоксом для кэширования курсора, реально этого файла нет - если памяти хватает для хранения курсора:
Код: plaintext
?file(dbf('myCursor'))
У меня показывает .F.
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37197919
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК. Принято.
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37197930
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
SELECT * FROM MyTable WHERE stroka>=N AND stroka<=M INTO CURSOR MyCursor
* Вывод/печать из курсора.
* Увеличение значений N и М, возврат к началу цикла пока М не превысит макс.значения.
...
Рейтинг: 0 / 0
SELECT с N по M записей
    #37197936
PP762
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Студенты "Лайк" )) Я просто хренею.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SELECT с N по M записей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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