Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Как запретить изменение данных в Grid  [new]
Alexxz187
Member

Откуда:
Сообщений: 13
Добрый вечер.
В общем проблема в следующем: при добавлении новой записи в грид'е на 3 (вроде еще в 5, 8, 13, 14) строке происходит волшебство и данные во всем гриде изменяются (в столбцах где идет расчет). Причем добавляя 4 строку данные возвращаются в нормальный вид. Для заполнения грида берется 2 таблицы. Данные выбираются из этих таблиц корректно. Проверял wait'ом после каждой строки.
Подскажите пожалуйста в каком направлении копать. Возможно ли сделать так, чтоб после добавления новой строки предыдущая блокировалась для изменений?
22 окт 13, 21:31    [15017374]     Ответить | Цитировать Сообщить модератору
 Re: Как запретить изменение данных в Grid  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1547
Alexxz187
Подскажите пожалуйста в каком направлении копать. Возможно ли сделать так, чтоб после добавления новой строки предыдущая блокировалась для изменений?
Чудес не бывает и фокс ничего такого сам не делает. То есть ищите ошибку в своем коде.
22 окт 13, 21:40    [15017408]     Ответить | Цитировать Сообщить модератору
 Re: Как запретить изменение данных в Grid  [new]
Alexxz187
Member

Откуда:
Сообщений: 13
Sergey Sizov,

If !Used('Tmp_pl') Or !Used('Tmp_ml')
Return
Endif

lnNz=0
lnKz=0
Select Tmp_ml
If eof()
Go Top
Endif
lnNz=Recno('Tmp_ml')
Count All To lnKz
If lnKz=0
Return
Endif


Scan All
lnG_r = (Tmp_ml.g_s + Tmp_ml.g_zv + Tmp_ml.g_zt - Tmp_ml.g_rt) - Tmp_ml.g_f
lnG_rn = (Tmp_ml.w_h * tmp_pl.n_hh) + (Tmp_ml.w_p * tmp_pl.n_p00 / 100) + (Tmp_ml.w_v * tmp_pl.n_v00)
lnG_o = lnG_rn - lnG_r
Replace g_r WITH lnG_r, g_rn With lnG_rn, g_o With lnG_o In Tmp_ml
Endscan

Select Tmp_ml
Go Top
Sum g_zv, g_zt, g_r, g_rn, g_o, w_h, w_p, w_v All To sG_zv, sG_zt, sG_r, sG_rn, sG_o, sW_h, sW_p, sW_v
Replace g_v With sG_zv+sG_zt, ;
g_r With sG_r, ;
g_o With sG_o, ;
w_h With sW_h, ;
w_p With sW_p, ;
w_v With sW_v In tmp_pl


Go lnNz
Thisform.Refresh

подозреваю где то здесь
22 окт 13, 22:33    [15017557]     Ответить | Цитировать Сообщить модератору
 Re: Как запретить изменение данных в Grid  [new]
IgorNG
Member

Откуда: Москва
Сообщений: 956
Alexxz187
Sergey Sizov,

If !Used('Tmp_pl') Or !Used('Tmp_ml')
Return
Endif

lnNz=0
lnKz=0
Select Tmp_ml
If eof()
Go Top
Endif
lnNz=Recno('Tmp_ml')
Count All To lnKz
If lnKz=0
Return
Endif


Scan All
lnG_r = (Tmp_ml.g_s + Tmp_ml.g_zv + Tmp_ml.g_zt - Tmp_ml.g_rt) - Tmp_ml.g_f
lnG_rn = (Tmp_ml.w_h * tmp_pl.n_hh) + (Tmp_ml.w_p * tmp_pl.n_p00 / 100) + (Tmp_ml.w_v * tmp_pl.n_v00)
lnG_o = lnG_rn - lnG_r
Replace g_r WITH lnG_r, g_rn With lnG_rn, g_o With lnG_o In Tmp_ml
Endscan

Select Tmp_ml
Go Top
Sum g_zv, g_zt, g_r, g_rn, g_o, w_h, w_p, w_v All To sG_zv, sG_zt, sG_r, sG_rn, sG_o, sW_h, sW_p, sW_v
Replace g_v With sG_zv+sG_zt, ;
g_r With sG_r, ;
g_o With sG_o, ;
w_h With sW_h, ;
w_p With sW_p, ;
w_v With sW_v In tmp_pl


Go lnNz
Thisform.Refresh

подозреваю где то здесь


В первом посте написано "при добавлении НОВОЙ записи". В этом коде нет добавления новой записи, а только редактирование.
23 окт 13, 11:29    [15019223]     Ответить | Цитировать Сообщить модератору
 Re: Как запретить изменение данных в Grid  [new]
Alexxz187
Member

Откуда:
Сообщений: 13
IgorNG,

Все верно при добавлении новой записи.
Проблема была решена следующим способом:

GO lnNz

*Scan All
lnG_r = (Tmp_ml.g_s + Tmp_ml.g_zv + Tmp_ml.g_zt - Tmp_ml.g_rt) - Tmp_ml.g_f
lnG_rn = (Tmp_ml.w_h * tmp_pl.n_hh) + (Tmp_ml.w_p * tmp_pl.n_p00 / 100) + (Tmp_ml.w_v * tmp_pl.n_v00)
lnG_o = lnG_rn - lnG_r
Replace g_r WITH lnG_r, g_rn With lnG_rn, g_o With lnG_o In Tmp_ml
*Endscan


Все работает, но теперь непонятно почему при пересчете изменялись данные.
24 окт 13, 08:46    [15024042]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить