powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как можно ускорить работы программы?
25 сообщений из 50, страница 2 из 2
как можно ускорить работы программы?
    #33754457
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fuad11select Recno() as Row, mod(Recno(), 10) as Low, int(Recno() / 10) as High from
t1 order by 2, 3 having Low != 0 and mod(High, 30) = 0 and High < 150

В этом коде как можно продолжит программы, чтобы остальные нужные записи тоже можно было получить?
10
310
910
610
1210
…..
Очень срочно нужен помогите, пожалуйста,
Я же уже написал как 10 и прочее получить. Вот твои три таблицы:
Код: plaintext
1.
2.
3.
select Recno() as Row, mod(Recno(),  300 ) as Low, int(Recno() /  300 ) as High from test order by  2 ,  3  having Low !=  0  and High <  5 
select Recno() as Row, mod((Recno() -  100 ),  300 ) as Low, int(Recno() /  300 ) as High from test order by  2 ,  3  having Low !=  0  and High <  5 
select Recno() as Row, mod((Recno() -  200 ),  300 ) as Low, int(Recno() /  300 ) as High from test order by  2 ,  3  having Low !=  0  and High <  5 
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33754666
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только опять повторы получается, например,
1
301
....
и в 1-м таблице и в 3-м таблице встречается.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33756345
rashidnuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для ускорения выборки следует все поля по которым идет фильтрация предварительно проиндексировать, но устанавливать на него set order to вовсе необязательно, ускорение будет в разы быстрее.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33759926
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я только выяснил, что у меня тоже повторы есть.
Чтобы повторы не было я должен в цикле

for i =1 to 100
k=i+300
j=i+600
s=i+900
y=i+1200

z=i+100
x=i+400
c=i+700
v=i+1000
u=i+1300


f=i+200
g=i+500
h=i+800
t=i+1100
o=i+1400
……..
endf

второй раз
for i =1501 to 100
,,,,,
endf
записать и т. д. или еще 1 (вложенный) for поставить?
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33759988
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaT, еще вопрос:
У меня в исходным таблице 1000000 записи, но запрос дает мне только
в каждом таблице 1495 записи. А все остальные записи как выбрать?
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33761086
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот мои 3 таблицы, который в каждом 500 (?!) записи и без повтора (исрользуя запросы DimaT):
select Recno() as Row, mod(Recno(), 300) as Low, int(Recno() / 300) as High from t1 order by 2, 3 having Low != 0 and High < 5 and low<=100

select Recno() as Row, mod(Recno(), 300) as Low, int(Recno() / 300) as High from t1 order by 2, 3 having Low != 0 and High < 5 and low>100 and low<=200

select Recno() as Row, mod(Recno(), 300) as Low, int(Recno() / 300) as High from t1 order by 2, 3 having Low != 0 and High < 5 and low>200 and low<=300

Меня сейчас интересует остальные записи (в исходным таблице больще 1000000 записи) как получат?
Помогите, пожалуйста, а то у меня ни как не получатся.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33762277
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или я так обяснияю что ни кто не понимаеть меня, или не хочет помочь мне.
Я так думаю что, это не очень трудная задяча для программистов ( я всего 3 месяц работаю с foxpro)
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33762289
Проходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или я так обяснияю что ни кто не понимаеть меня
Боюсь, что именно так. По крайней мере я ничего не понял из того, что же тебе нужно.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33762441
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробую объяснить.
Есть исходная таблица (T1.DBF- записи больше 1000000), здесь поле N -номер записи (recno()).
Хочу получать конечную таблицу (CAP.DBF)
Использую программы CAP.PRG. Получаю 3 таблицы, потом обяденияю эти 3 таблицы с помощи запроса. Получается CAP.DBF.
Здесь поле N_A,N_B,N_C - тоже самый N в таблице T1.dbf.
ВОПРОС:
1.Программа (CAP.PRG) очень долго работает, хочу ускорить работы программы.
2.Если продолжить программы (i>100) в T1.DBF повторы получается.
Здесь повторы не должно быть.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33762552
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fuad11Или я так обяснияю что ни кто не понимаеть меня, или не хочет помочь мне.
Я так думаю что, это не очень трудная задяча для программистов ( я всего 3 месяц работаю с foxpro)
Вообще-то, я уже объяснил (и не только я), но реакция оказалась неадекватная. Вместо того, чтобы попытаться понять как именно работает приведенный пример кода либо вообще никакой реакции не следует, либо следует заявления, что код работает неправильно.

Задача действительно не сложная, но кто ее должен решать? Если это нужно Вам, то Вы и решайте. Здесь Вам дали несколько возможных вариантов решения. Доводить их "до ума" - это уже исключительно Ваша задача. Никто за Вас ее решать не будет.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33762710
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМПравда, здесь предполагается, что количество записей в основной таблице кратно 300. Т.е. если в ней, например, всего 400 записей, то по 5 записей с шагом 300 никак не получится.

Да ,несколько варианты предлогали.
VladimirM, в Вашем варианте вот это проблемы я ни как не мог решать, у меня
записи меняется, сегодня 1200000 может быть, завтра 1333333 и т. д.
Вариант Dima T:
Очень быстро работает, но здесь тоже не могу получать записи recno()>1500,
тоесть повторы получается.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33765765
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что эта функция делаеть: !=
Я в help ничего не нащел об этом?
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33765788
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fuad11Что эта функция делаеть: !=
Я в help ничего не нашел об этом?
В ANSI она заменяется на <> (не равно)
С уважением, Алексей.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33766086
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fuad11... Меня сейчас интересует остальные записи (в исходным таблице больще 1000000 записи) как получат?
Помогите, пожалуйста, а то у меня ни как не получатся.

1. Про проверку орфографии в word`е я уже тебе говорил.
2. Никто похоже не в состоянии понять смысл того, чем ты занимаешься. Сложно давать советы непонимая какого результата хочет достичь человек.
Ты тут просишь помочь тебе решить какую-то задачу, и не удосуживаешься описать полностью, то чем ты занимаешься.
Ты сам для себя решил, что ты все моменты решения твоей задачи знаешь, кроме построение этого хитрого списка. Если обратил внимание на другие посты, то люди задавая вопрос, описывают что делают, что сделали и что не получается. Вполне реально что тебе предложат другое решение всей проблемы без использования твоего хитрого алгоритма сортировки записей.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33766251
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaT, я не хорошо знаю русский язык, поетому не сильно ругайте меня за это.
Моя задача только в том что, построить этого хитрого списка. А потом буду получать report из
этой базы. В каждом странице reporta должна 15 запись поместиться: 5 строка и 3 столбец .

1-я страница отчета:
1 101 201
301 401 501
601 701 801
901 1001 1101
1201 1301 1401

2-я страница отчета:
2 102 202
302 402 502
602 702 802
902 1002 1102
1202 1302 1402


Потом 1-й 100 страницы этого отчета положить друг на друга и будить резать бумаги и на 1-м стопке получим подрядные номера:
1, 2, 3,……100
101,102,103,…..200
201, 202, 203 ,….300
301,302,303,…….400
401, 402, 403, ….. 500
……………………….
1401, 1402, 1403, ….1500


Вот мой результать, который я хочут достичь .
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33766622
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fuad11я не хорошо знаю русский язык, поетому не сильно ругайте меня за это.


fuad11А потом буду получать report из
этой базы. В каждом странице reporta должна 15 запись поместиться: 5 строка и 3 столбец .


А чем тебя не устраивает стандартное разбиение отчета на столбцы фоксом?
В отчете меню File -> Page Setup
Ставишь columns: 3
spacing - расстояние между колонками

Это то что тебе надо?
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33766644
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже не это. Не дочитал до конца. :(
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33766678
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стандартное разбиение отчета - это не то, что мне надо.
Потому что у меня исходная таблица вот по такому порядку идет (по recno())
1
2
3
4
5
...
...
1000000

А в reporte мне нужен по такому порядку:

1-я страница отчета:
1 , 101, 201
301, 401, 501
601, 701, 801
901, 1001, 1101
1201, 1301, 1401

2-я страница отчета:
2, 102, 202
302, 402, 502
602, 702, 802
902, 1002, 1102
1202, 1302, 1402

Поетому, хочу сначало переобразовать таблицы в удобные формы для отчета.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33766699
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fuad11Потом 1-й 100 страницы этого отчета положить друг на друга и будить резать бумаги и на 1-м стопке получим подрядные номера:
1, 2, 3,……100
101,102,103,…..200
201, 202, 203 ,….300
301,302,303,…….400
401, 402, 403, ….. 500
……………………….
1401, 1402, 1403, ….1500


Вот мой результать, который я хочут достичь .


Но в таком случае у тебя заранее задано: 15 элементов на листе и 100 листов.
всего 1500 будет вырезано 15 стопок по 100 листов.
1501 в твою схему не укладывается, т.к. он должен быть 16 элементом (стопкой) а у тебя их 15 на лист входит.
Как я понял, перед разрезанием 100 листов отделяется и режется? Потом следующие 100?
А не проще из большой таблицы снача взять 1500 записей, напечатать отчет, потом следующие 1500 и т.д.?
Хотя и это можно обсчитать.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33766768
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T
Но в таком случае у тебя заранее задано: 15 элементов на листе и 100 листов.
всего 1500 будет вырезано 15 стопок по 100 листов.
1501 в твою схему не укладывается, т.к. он должен быть 16 элементом (стопкой) а у тебя их 15 на лист входит.
Как я понял, перед разрезанием 100 листов отделяется и режется? Потом следующие 100?

DimaT, да, именнно так.


1501 в мою схему не укладывается, эти будеть уже 16-я стопка
Еще 15 стопок от 1501 до 3000 и т. д.
Вот именно эта часть не могу понять как делать.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33766893
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По месту расположения номер записи вычисляется следующим образом:
Номер записи = ((Стопка * 5 + Строка) * 3 + Столбец) * 100 + Лист + 1
Где Стопка, Строка, Столбец, Лист нумеруются от 0
+ 1 потому что записи в таблице нумеруются с 1

Обратным способом все разбираем и сортируем:
Код: plaintext
1.
select recno() as nRecNo, mod(recno() -  1 ,  100 ) as nList, mod(int((recno() -  1 ) /  100 ),  3 ) as nStolb, mod(int((recno() -  1 ) /  100  /  3 ),  5 ) as nStroka, int((recno() -  1 ) /  100  /  3  /  5 ) as nStopka from test order by  5 ,  2 ,  3 ,  4 
Результат можно вывести из одной таблицы в отчет с 3 колонками
если же надо 3 таблицы то добавь having nStolb = 0 для 1-го столбца, 1 для 2-го и 2 для 3-го
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33766913
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, Dima, сейчас буду посмотреть.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33766939
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima , у меня результат этого запроса пустую таблицу дают, или я что-то не так делаю.
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33766944
fuad11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извените, я чего-то перепутал
...
Рейтинг: 0 / 0
как можно ускорить работы программы?
    #33766970
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fuad11Dima , у меня результат этого запроса пустую таблицу дают, или я что-то не так делаю.

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


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