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

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

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

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

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

Код: plaintext
1.
2.
DO WHILE .T.  && Begins loop
   IF EOF( )
...
Рейтинг: 0 / 0
31.03.2011, 13:34
    #37192286
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT с N по M записей
mishaarkв каждом цикле скана делать инсерт в курсор?
можно и в таблицу на диске, но это медленнее
mishaarkА Do зачем? все эти команды взаимозаменяемы практически, только в разных случаях удобнее разные команды. Help рулит.
...
Рейтинг: 0 / 0
31.03.2011, 14:17
    #37192439
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT с N по M записей
> Автор: 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
02.04.2011, 05:56
    #37195429
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT с N по M записей
igorbikможно и в таблицу на диске, но это медленнее
А почему медленнее? Физически курсор - это та же таблица на диске.
...
Рейтинг: 0 / 0
02.04.2011, 10:39
    #37195508
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT с N по M записей
...
Рейтинг: 0 / 0
02.04.2011, 14:54
    #37195689
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT с N по M записей
И?
...
Рейтинг: 0 / 0
02.04.2011, 15:23
    #37195702
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT с N по M записей
Dag,

"Cursor live in memory and sometime VFP may create a temp file on disk with the information"
Вопрос в том, при каких условиях он сбрасывается на диск. Недавно тут было обсуждение, да вот найти что-то не могу.
...
Рейтинг: 0 / 0
02.04.2011, 15:56
    #37195719
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT с N по M записей
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
02.04.2011, 18:58
    #37195842
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT с N по M записей
Возьмите любую таблицу и сделайте выборку в курсор
Код: plaintext
1.
select * from AnyTable into cursor myCursor where .f.
?dbf('myCursor')
...
Рейтинг: 0 / 0
04.04.2011, 11:16
    #37197497
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT с N по M записей
> Автор: Dag
> Возьмите любую таблицу и сделайте выборку в курсор
> select * from AnyTable into cursor myCursor where .f.
> ?dbf('myCursor')


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

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


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


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