powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как можно ускорить работы этого кода?
18 сообщений из 18, страница 1 из 1
Как можно ускорить работы этого кода?
    #36360320
Andres N.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такой код:

Код: 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.
61.
set defa to k:\
   sele  3 
   use ab_qaz 
   set inde to p1  
   GO TOP
   a_kod1= 0 
   a_ad1="                             "
   q_kod1= 0 
   q_ad1="                             "
   p_kod1= 0 
   q_qym1= 0 
   Q_SAY1= 0 
   I_KOD1= 0 
   @  33 , 60  SAY " KOD: " GET  a_kod1
   READ
   IF READ()= 12  .OR.READ()= 268 
       DEACTI WIND A3
       EXIT
   ENDIF   
     seek a_kod1
      deac wind a3
    if .not. found()
          @  20 , 5  SAY "net takoy "
          read
          DEACTI WIND A3
         GO TOP
         do imt
     endif
   STORE a_KOD TO a_kod1
   STORE a_ad TO  a_ad1
   STORE p_ad TO  p_ad1
   STORE I_KOD TO  I_KOD1
   store kim to kim1
   tarix22=tarix2
   store kim_kod1 to kim_kod
   STORE p_KOD TO p_kod1
   STORE p_ad TO  p_ad1
use c:\sh\muqav4 excl
dele all
pack
appe from  ab_qaz for a_kod=a_kod1
brow fiel sai,q_ad,a_kod,q_kod,p_kod
use qzt
repl all fl1 with  0 
set filt to kat#' '.or.q_is#' '
go top
brow fiel fl1,q_ad
set filt to fl1<> 0 
erase qzt1.dbf
copy to qzt1.dbf
set filt to
use  c:\sh\muqav4
appe from  qzt1
repl all sai with fl1 for a_kod= 0 
repl all a_kod with a_kod1,fl1 with sai
use ab_qaz
dele all for a_kod=a_kod1
appe from c:\sh\muqav4
repl all  i_kod with i_kod1,a_ad with a_ad1,p_kod with p_kod1,p_ad with p_ad1,kim with kim1,kim_kod1 with kim_kod, tarix2 with tarix22, sai with fl1 for a_kod=a_kod1
    clos all
    clea

Главная таблица (ab_qaz.dbf) находится в сети в другом комрьютера. Программа очень долго работает. Помогите пожалуйста, kак можно ускорить работы этого кода?
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36360377
sss_ddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вместо фильтров (set filter ....)
использовать Copy to .... for (условия)
и Brows ..... for (условия)
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36360414
Andres N.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, sss_ddd . Намного ускорилос, но всеравно дольго. Еще что-то можно делать для ускорение?
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36360416
Andres N.Есть такой код:...
Главная таблица (ab_qaz.dbf) находится в сети в другом комрьютера. Программа очень долго работает. Помогите пожалуйста, kак можно ускорить работы этого кода?
Если я правильно понял Ваш алгоритм, то этот кусок
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
use c:\sh\muqav4 excl
dele all
pack
appe from  ab_qaz for a_kod=a_kod1
brow fiel sai,q_ad,a_kod,q_kod,p_kod
use qzt
repl all fl1 with  0 
set filt to kat#' '.or.q_is#' '
go top
brow fiel fl1,q_ad
set filt to fl1<> 0 
erase qzt1.dbf
copy to qzt1.dbf
set filt to
use  c:\sh\muqav4
appe from  qzt1
repl all sai with fl1 for a_kod= 0 
repl all a_kod with a_kod1,fl1 with sai
use ab_qaz
dele all for a_kod=a_kod1
appe from c:\sh\muqav4
repl all  i_kod with i_kod1,a_ad with a_ad1,p_kod with p_kod1,p_ad with p_ad1,kim with kim1,kim_kod1 with kim_kod, tarix2 with tarix22, sai with fl1 for a_kod=a_kod1

вполне может быть заменен на (VFP 6 и выше):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select a.* from ab_qaz a where a.a_kod=a_kod1 into cursor firstcurs nofilter &&c:\sh\muqav4
select <fields of qzt>,  0  as fl1 from qzt where kat#' '.or.q_is#' ' into cursor tempcurs nofilter readwrite
go top
brow fiel fl1,q_ad
select * from tempcurs where fl1<> 0  into cursor secondcurs nofilter &&qzt1

select * from firstcurs ;
union all ;
select * from secondcurs ;
into dbf c:\sh\muqav4

select muqav4
repl all sai with fl1 for a_kod= 0 
repl all a_kod with a_kod1,fl1 with sai

delete from ab_qaz where a_kod=a_kod1
insert into ab_qaz select * from c:\sh\muqav4

use ab_qaz
repl all  i_kod with i_kod1,a_ad with a_ad1,p_kod with p_kod1,p_ad with p_ad1,kim with kim1,kim_kod1 with kim_kod, tarix2 with tarix22, sai with fl1 for a_kod=a_kod1
Вроде нигде не напутал... :-)
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36360421
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sss_ddd,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
set safety off
* dele all
* pack
zap
....
* erase qzt1.dbf
copy to qzt1.dbf
...

* dele all for a_kod=a_kod1
dele for a_kod=a_kod1
А вообще раз так много экслюзивных действий, может стоит полностью
перетянуть таблицы на локальную станцию, там их обработать и вернуть только
результат?
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36360436
Andres N.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alextashkА вообще раз так много экслюзивных действий, может стоит полностью
перетянуть таблицы на локальную станцию, там их обработать и вернуть только
результат?

Одновременно в этой таблице (ab_qaz) и другие работает.
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36360452
Andres N.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Станислав С...кий,
В этой строке получается ошибка:

Код: plaintext
1.
select <fields of qzt>,  0  as fl1 from qzt where kat#' '.or.q_is#' ' into cursor tempcurs nofilter readwrite

fields of qzt- это все поле из таблицы qzt?
Честно говоря я этот код не понял.
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36360462
Andres N.,
естественно, что ошибка.
Под <fields of qzt> я подразумевал перечисление всех полей таблицы QZT (ибо структуру ее я не знаю, а Вы знаете), кроме fl1, на которое в селекте значение задается явно.

автор
Честно говоря я этот код не понял.

Учите SQL. Это не так сложно, а работы программисту убавляет значительно
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36360494
Andres N.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я нащел этуошибку и исправил. Сейчас вот здесь ошибка получается.
Syntax error.
Код: plaintext
insert into ab_qaz select * from c:\sh\muqav4
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36360515
Andres N.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня VFP6. Может быть от этого?
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36360544
Andres N.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще вот здесь

Код: plaintext
1.
select * from firstcurs union all select * from secondcurs into dbf c:\sh\muqav4

такая ошибка получается:
SELECTs are not UNION compatible.
ПОМОГИТЕ ПОЖАЛУЙСТА.
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36360673
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В сообщении говорится, что количество и типы полей в двух выборках должны быть одинаковыми. Вы выбираете все поля из одной таблицы и из другой. Видимо, списки полей различаются.
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36361733
Andres N.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрите пожалуйста, в чем моя ошибка?
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36362775
Andres N.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программа не очень сложная, я очень много что ненужную команды написал.

Программа должна так работать:

1.Из AB_QAZ.DBF все записи удовлотворяющий условия (for a_kod=a_kod1) копировать (потом удалить) в MUQAV4.DBF

2.Потом показать из QZT.DBF 2 поле (FL1 и Q_AD) удовлотворяющий это условия: kat#' '.or.q_is#' '

3.Из QZT.DBF все записи удовлотворяющий это условия (FL1<>0) добавить MUQAV4.dbf

4. MUQAV4.dbf копировать в (appe from) в AB_QAZ.DBF.

Помогите пожалуйста.
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36362891
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andres N.,

Код: plaintext
1.
 1 .Из AB_QAZ.DBF все записи удовлотворяющий условия (for a_kod=a_kod1) копировать (потом удалить) в MUQAV4.DBF
зачем удалять, если потом в пункте 4 их же добавляем?

Код: plaintext
1.
 3 .Из QZT.DBF все записи удовлотворяющий это условия (FL1<> 0 ) добавить MUQAV4.dbf
Зачем добавлять, если можно сразу в добавить в AB_QAZ.DBF.

Итого 2 пункта можно сократить
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36362901
Andres N.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alextashkAndres N.,

Код: plaintext
1.
 1 .Из AB_QAZ.DBF все записи удовлотворяющий условия (for a_kod=a_kod1) копировать (потом удалить) в MUQAV4.DBF
зачем удалять, если потом в пункте 4 их же добавляем?


В пункт 4 добавляем уже вместо изменеными данными:

3.Из QZT.DBF все записи удовлотворяющий это условия (FL1<>0) добавить MUQAV4.dbf
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36362917
Andres N.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здесь MUQAV4.dbf премежутучная таблица, каторый берем из ab_qaz.dbf ( for a_kod=a_kod1) и потом суда добавляем записи из QZT.dbf (for fl1<>0)

Да, наверно сразу можно было и ab_qaz добавить
...
Рейтинг: 0 / 0
Как можно ускорить работы этого кода?
    #36362957
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andres N.,

SELECT * FROM ab_qaz WHERE a_kod=a_kod1 INTO CURSOR MUQAV4

SELECT Fl1, q_ad FROM qzt WHERE kat#' '.or.q_is#' ' INTO CURSOR list_a
SELECT list_a
BROWSE

После обработки muqav4
UPDATE ab_qaz SET ...................... FROM muqav4 WHERE .....
или
через scan .... endscan

INSERT INTO ab_qaz (*) SELECT * FROM QZT WHERE FL1<>0
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как можно ускорить работы этого кода?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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