Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как можно ускорить работы этого кода? / 18 сообщений из 18, страница 1 из 1
11.12.2009, 07:58
    #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
11.12.2009, 08:41
    #36360377
sss_ddd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно ускорить работы этого кода?
Вместо фильтров (set filter ....)
использовать Copy to .... for (условия)
и Brows ..... for (условия)
...
Рейтинг: 0 / 0
11.12.2009, 09:02
    #36360414
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно ускорить работы этого кода?
Спасибо, sss_ddd . Намного ускорилос, но всеравно дольго. Еще что-то можно делать для ускорение?
...
Рейтинг: 0 / 0
11.12.2009, 09:03
    #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
11.12.2009, 09:07
    #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
11.12.2009, 09:15
    #36360436
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно ускорить работы этого кода?
alextashkА вообще раз так много экслюзивных действий, может стоит полностью
перетянуть таблицы на локальную станцию, там их обработать и вернуть только
результат?

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

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

Учите SQL. Это не так сложно, а работы программисту убавляет значительно
...
Рейтинг: 0 / 0
11.12.2009, 09:48
    #36360494
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно ускорить работы этого кода?
Я нащел этуошибку и исправил. Сейчас вот здесь ошибка получается.
Syntax error.
Код: plaintext
insert into ab_qaz select * from c:\sh\muqav4
...
Рейтинг: 0 / 0
11.12.2009, 09:56
    #36360515
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно ускорить работы этого кода?
У меня VFP6. Может быть от этого?
...
Рейтинг: 0 / 0
11.12.2009, 10:12
    #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
11.12.2009, 10:54
    #36360673
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно ускорить работы этого кода?
В сообщении говорится, что количество и типы полей в двух выборках должны быть одинаковыми. Вы выбираете все поля из одной таблицы и из другой. Видимо, списки полей различаются.
...
Рейтинг: 0 / 0
11.12.2009, 15:59
    #36361733
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно ускорить работы этого кода?
Посмотрите пожалуйста, в чем моя ошибка?
...
Рейтинг: 0 / 0
12.12.2009, 12:53
    #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
12.12.2009, 15:51
    #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
12.12.2009, 16:05
    #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
12.12.2009, 16:33
    #36362917
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно ускорить работы этого кода?
Здесь MUQAV4.dbf премежутучная таблица, каторый берем из ab_qaz.dbf ( for a_kod=a_kod1) и потом суда добавляем записи из QZT.dbf (for fl1<>0)

Да, наверно сразу можно было и ab_qaz добавить
...
Рейтинг: 0 / 0
12.12.2009, 17:51
    #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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как можно ускорить работы этого кода? / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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