Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Обновление курора
|
|||
|---|---|---|---|
|
#18+
При добавлении записи в курсор, предыдущая запись исчезает, наверное это связано, с тем что курсор по умолчанию стоит в 3 буферизации, как перевести в 5 буферизацию, или это связано с др. причиной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2005, 12:07 |
|
||
|
Обновление курора
|
|||
|---|---|---|---|
|
#18+
Приведите код добавления записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2005, 12:43 |
|
||
|
Обновление курора
|
|||
|---|---|---|---|
|
#18+
Local _t,_I_s,_II_s,_III_s,_dr,_bal,_lind_kol,_lind_kol_ _t=Val(Alltrim(This.Parent.oName.Text)) _I_s=Val(Alltrim(This.Parent.oName1.Text)) _II_s=Val(Alltrim(This.Parent.oName2.Text)) _III_s=Val(Alltrim(This.Parent.oName3.Text)) _dr=Val(Alltrim(This.Parent.oName4.Text)) _bal=Val(Alltrim(This.Parent.oName5.Text)) If This.Parent.lRI Then Select "tcur_uch_kol" Go Bottom If Not Eof() Calculate Max(tcur_uch_kol.ind_kol) To _lind_kol_ _lind_kol_=_lind_kol_+1 Else _lind_kol_=1 Endif Insert Into tcur_uch_kol (T,I_s,II_s,III_s,dr,bal,ind_kol) Values (_t,_I_s,_II_s,_III_s,_dr,_bal,_lind_kol_) Else _lind_kol=tcur_uch_kol.lind_kol Update tcur_uch_kol Set tcur_uch_kol.T=_t,tcur_uch_kol.I_s=_I_s,tcur_uch_kol.II_s=_II_s,; tcur_uch_kol.III_s=_III_s,tcur_uch_kol.dr=_dr, tcur_uch_kol.bal=_bal Where tcur_uch_kol.ind_kol=_lind_kol Endif Thisform.oParent.allrecgrid() This.Parent.Release() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2005, 12:56 |
|
||
|
Обновление курора
|
|||
|---|---|---|---|
|
#18+
У тебя лишний оператор ELSE после команды INSERT. Ты что-то пропустил в своем примере. Но вообще-то, расчет MAX()+1 можно сократить до такого кода Код: plaintext 1. 2. Впрочем, если tcur_uch_kol - это курсор, то можно еще проще Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2005, 14:57 |
|
||
|
Обновление курора
|
|||
|---|---|---|---|
|
#18+
ВладимирМ, спасибо за пояснения, для меня оказались весьма познавательными, А оператор ELSE после команды INSERT - для режима редактирования ( в зависимости от значения This.Parent.lRI .t. или .f.) Но проблема все равно осталась. Забыл дополнить, что курсор формируется после этой команды SQLExec(Thisform.oSQL.nDescr,"{CALL procGetFullRow_uch_kol}","tCur_uch_kol") В него необходимо добавлять записи. В книге Базияна прочитал что курсор после такой функции является немодифицируемым. Написал даже такую строчку Select * From "tcur_uch_kol" Into Cursor "tcur_uch_kol" Readwrite NOFILTER результат тот же, как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2005, 12:02 |
|
||
|
Обновление курора
|
|||
|---|---|---|---|
|
#18+
@KenВладимирМ, спасибо за пояснения, для меня оказались весьма познавательными, А оператор ELSE после команды INSERT - для режима редактирования ( в зависимости от значения This.Parent.lRI .t. или .f.) Ты не понял, под словом "лишний" я подразумевал то, что у этого ELSE нет ни открывающего IF, ни закрывающего ENDIF. Синтаксическая ошибка. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. @Ken Забыл дополнить, что курсор формируется после этой команды SQLExec(Thisform.oSQL.nDescr,"{CALL procGetFullRow_uch_kol}","tCur_uch_kol") В него необходимо добавлять записи. В книге Базияна прочитал что курсор после такой функции является немодифицируемым. Такой курсор всегда модифицируемый. Переоткрывать его не надо. Правда, тут следует иметь в виду возможность совпадения имен и следить за текущей сессией данных. Если таблица (курсор) уже открыта, то в команде INSERT будет использоваться алиас рабочей области. Если же таблица еще НЕ открыта, то команда INSERT попытается найти файл DBF с таким именем и сделать вставку в него. Все это работает в пределах одной DataSession. Если у тебя происходит вызов в разных формах, которые имеют Private DataSession, то курсор, созданный в одной DataSession будет не видет в другой. Т.е. вполне возможно, что ты открыл 2 разных курсора с одним именем в разных DataSession и добавление ведется в разные курсоры. Буферизация здесь не при чем. Ищи копию курсора. Или команду переоткрытия (повторный SQLExec() уничтожает предыдущий курсор и создает новый с тем же именем) PS: Переключить режим буферизации можно так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2005, 17:02 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1594417]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
46ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 403ms |

| 0 / 0 |
