powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Медленная работа программы
12 сообщений из 12, страница 1 из 1
Медленная работа программы
    #33423958
Denver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня все. У меня такая проблема:очень медленно работает прога. Но это происходит, если к базе данных(которая хранится на сервере) подключаются несколько пользователей. Программа написана на 5 фоксе. с чем это может быть связано?
...
Рейтинг: 0 / 0
Медленная работа программы
    #33424046
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала посмотри http://sql.ru/forum/actualthread.aspx?tid=238776, возникнут вопросы задавай.
...
Рейтинг: 0 / 0
Медленная работа программы
    #33424070
Denver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
public rec
public G_open
G_open = 1
sele abonent
set filt to
set order to id_abon
seek(G_num_abon)
rec = recno()
G_num_telef=abonent.ph_number
G_fam=rtrim(ltrim(abonent.familia))
G_name=rtrim(ltrim(abonent.name))
G_otc=ltrim(rtrim(abonent.otchestvo))
G_city = abonent.city
G_street=rtrim(ltrim(abonent.street))
G_home = alltrim(abonent.home)
G_kvart = alltrim(abonent.kvart)
G_data_ust=abonent.begin_phone
G_data_snyat = abonent.end_phone
G_id_tarif = id_tarifs
G_usl8 = usluga8
G_usl9 = usluga9
G_new_ab = abon_new
G_del_ab = abon_del
G_to_plat = to_plat
G_bron = bron
G_name_dvo = alltrim(dvo)
if abonent.abon_del = .t.
thisform.label23.visible = .t.
thisform.image1.visible = .t.
thisform.command10.enabled = .f.
thisform.command11.enabled = .t.
else
thisform.label23.visible = .f.
thisform.image1.visible = .f.
thisform.command11.enabled = .f.
thisform.command10.enabled = .t.
endi


sele tarif_saldo
locate for id_tarifs = G_id_tarif
if found()
G_tarif_name = name
endi

sele saldo
locate for G_num_abon = id_abon
if found()
G_sa_all = sa_all
G_dolg_ab = dolg_ab_plat
G_dolg_to = dolg_to
G_dolg_peni = dolg_peni
G_nach_ab = nach_ab_plat
G_nach_to = nach_to
G_nach_dvo = nach_dvo
G_dolg_dvo = dolg_dvo
endi

sele peni
locate for G_num_abon = id_abon
if found()
G_peni_month = sum_peni
endi


alldvo = G_name_dvo
n_d = ''
if G_name_dvo <> ''
kolvo = occurs('^',alldvo) + (occurs('^',alldvo)-1)
dimension masdvo(kolvo)

for i=1 to kolvo
masdvo = substr(alldvo,i,1)
endf

for i=1 to kolvo
vid_dvo = masdvo
sele dvo
locate for id_dvo = val(vid_dvo)
if found()
n_d = rtrim(ltrim(n_d)) + rtrim(ltrim(name_dvo))
G_name_dvo1 = n_d
endi
endf
else
G_name_dvo1 = n_d
endi

sele edit_tarifs
set filt to id_abon = G_num_abon
sele korrect
*requery()
set filt to id_abon = G_num_abon
sele kvit_view
*requery()
set filt to id_abon = G_num_abon


thisform.Grid1.refresh
thisform.Grid2.refresh
thisform.Grid3.refresh
thisform.Grid1.setfocus
thisform.Grid2.setfocus
thisform.Grid3.setfocus

*****
thisform.text2.value = G_fam + ' ' + G_name + ' ' + G_otc
thisform.text5.value = G_street + ' ' + G_home + ' ' + G_kvart
thisform.text15.value = G_dolg_ab
thisform.text16.value = G_dolg_to
thisform.text17.value = G_dolg_peni
thisform.text18.value = G_dolg_dvo
thisform.text10.value = G_nach_ab
thisform.text11.value = G_nach_to
thisform.text12.value = G_peni_month
thisform.text9.value = G_nach_dvo
thisform.text13.value = G_dolg_ab + G_dolg_to
thisform.text14.value = G_sa_all
Thisform.text1.value = G_num_telef
Thisform.Text3.value = G_name_dvo1
*****

Здесь приведен текст проги, при инициализации формы. Так вот если подключен один пользователь то все работает быстро, но если несколько то эта самая форма открывается порядка 5-8 секунд! Хотя всего-то насвего необходимо выбрать данные из нескольких таблиц и заполнить ими поля
...
Рейтинг: 0 / 0
Медленная работа программы
    #33424091
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наводящие вопросы.

1 Зачем устанавливать ордер, если используешь ф-ию SEEK(), там есть 2-ой и 3-ий параметр

Код: plaintext
1.
set order to id_abon
seek(G_num_abon)
2. А есть ли индекс по id_tarifs, если нет создать, если есть использовать SEEK()

Код: plaintext
1.
sele tarif_saldo
locate for id_tarifs = G_id_tarif
то же для

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
sele saldo 
locate for G_num_abon = id_abon

sele peni 
locate for G_num_abon = id_abon

for i= 1  to kolvo
vid_dvo = masdvo
sele dvo
locate for id_dvo = val(vid_dvo)

И вот это совсем не годится

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
sele edit_tarifs
set filt to id_abon = G_num_abon 
sele korrect
*requery()
set filt to id_abon = G_num_abon
sele kvit_view
*requery()
set filt to id_abon = G_num_abon
...
Рейтинг: 0 / 0
Медленная работа программы
    #33424097
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какой размер у вас таблиц saldo и tarif_saldo, dvo?
Если большой (особенно dvo), то для начала создайте индексы в таблицах и замените LOCATE на SEEK

С уважением, Алексей
...
Рейтинг: 0 / 0
Медленная работа программы
    #33424136
Denver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksey-KА какой размер у вас таблиц saldo и tarif_saldo, dvo?
Если большой (особенно dvo), то для начала создайте индексы в таблицах и замените LOCATE на SEEK

С уважением, Алексей

В Saldo около 12000 записей, tarif_saldo 34 записи dvo 1 запись
...
Рейтинг: 0 / 0
Медленная работа программы
    #33424151
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В каком месте формы стоит приведенный код?
С уважением, Алексей
...
Рейтинг: 0 / 0
Медленная работа программы
    #33424172
Denver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
приведенный код навешен на form.init
...
Рейтинг: 0 / 0
Медленная работа программы
    #33424180
Denver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulWist

sele edit_tarifs
set filt to id_abon = G_num_abon
sele korrect
*requery()
set filt to id_abon = G_num_abon
sele kvit_view
*requery()
set filt to id_abon = G_num_abon

А что с этим не так?

Мне в гриде необходимо отобразить данные конкретно по "этому" абоненту, поэтому я применяю фильтрацию
...
Рейтинг: 0 / 0
Медленная работа программы
    #33424202
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фильтр под гридом - это не тормоз, а "смерть" приложению. Лучше сделать View, и вызывать Requery(), что вообщем-то и пытались сделать, причем View должен быть оптимизмрован иначе выигрыша не получится.
...
Рейтинг: 0 / 0
Медленная работа программы
    #33424353
Denver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulWistФильтр под гридом - это не тормоз, а "смерть" приложению. Лучше сделать View, и вызывать Requery(), что вообщем-то и пытались сделать, причем View должен быть оптимизмрован иначе выигрыша не получится.

Я новичок в этом деле. Что значит оптимизировать? Где про это можно почитать?
Заранее спасибо
...
Рейтинг: 0 / 0
Медленная работа программы
    #33426567
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В хелпе набираешь Rushmore и начинаешь читать по ссылкам, например Using Rushmore Query Optimization to Speed Data Access
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Медленная работа программы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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