Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Вот такой собсно вопрос. (я как-то раньше это делал, и вот забыл) Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 15:15 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Ты сам понял, что спросил? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 15:19 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Понял. Если тебе непонятно попробую объяснить. В ДБГриде (в наборе данных, который отображается в DBGrid, это чтобы Тигра не докапылся) есть поле, Юзер редактирует это поле и перед тем как значение сохранить надо проверить, чтобы оно было меньше того, которое пока што реально находится в базе в это й записи и в этом столбце. Так понятно? То есть мне надо узнать старое значение. Можно конечно сделать запрос в BeforPost, но нехоцца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 15:26 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
>которое пока што реально находится в базе в это й записи и в этом столбце. Если в базе то никак. А то ведь кто-нибудь может и изменить это значение, пока ты его редактируешь. Ты часом не с остатками воюешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 15:31 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Вот теперь более понятно. Свойство есть ОldValue у TField, если не ошибаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 15:45 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Но, действительно, как говорит pkarklin, пока ты любовался DBGrid-ом кто-то другой мог изменить эначение на сервере... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 15:51 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
To alexia >ОldValue у TField А если за время между открытием набора и пока ды дошел до поля в базе это значение изменилось? Такие проверки надо делать в базе в момент сохранения изменений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 15:52 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Не-не не в базе, это я попутал. Я имел ввиду в наборе данных. Ты часом не с остатками воюешь? Неа, но идея похожа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 15:56 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Тогда, как говорил alexia, сравнивай OldValue и NewValue. Но они только для режима кэшированных изменений. Я б вытащил еще одно поле и на BeforePost сравнивал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 16:05 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Спасибо, заработало. Код: plaintext 1. 2. 3. 4. А что значит тока для кэшированных изменений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 16:11 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Читаем в доке: Код: plaintext LockType у тебя наверно ltBatchOptimistic? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 16:13 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
itOptimistic ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 16:16 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Интересно А у тебя так как надо работает. Я не работал ни с BDE ни с ADO в режиме не кэшированных изменений. Посмотри, у тебя OldValue часом не NULL возвращает. И вот еще, что то не совпадает, то что ты написал в алгоритме: надо проверить, чтобы оно было меньше того, которое пока што реально находится в базе в это й записи и в этом столбце. И то как ты это проверяешь: Код: plaintext 1. Может так надо: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 16:38 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Да, спасибо, я уже исправил в алгоритме. В попыхах знак перепутал. Думал никто не заметит. А работает все правильно возвращает и старое и новое значение. Проверил. Все четко. Я не работал ни с BDE ни с ADO в режиме не кэшированных изменений. Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 16:41 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Не ну как почему. Чтоб я при каждом чихе (изменении записи и перемешении с нее) юзера постил все это в базу. Нет уж дудки. Открой форму документа, внеси вне нужные данные (причем в несколько datasetoв) и, подумав, нажми кнопочку сохранить. Вот тогда я все это в одной транзакции запостю на сервер. Клиент/серверные проги не пишут так как ты делаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 16:47 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
И мало того - данные сохраняют через хранимые процедуры на сервере ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 16:52 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Я так и думал. Но мне уже отступать некуда. Прога написана уже на 80%. И все-таки мне кацца есть случаи когда, полезно сразу постить. Например создал накладную, и пишешь в ней (в Гриде) товары. Причем юзер видит скока каждого товара есть на складе. Пока он эту таблицу заполняет, количество какого-нить товара на складе может уменьшиться. И в твоем вариатне повышается вероятность, что он пока вводит данные, они будут уже не корректны. А я вот после каждого изменения записи в накладной проверяю количество на складе и если хватает то постю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 16:55 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
2 Copper В таких случаях, когда с одной товарной позицией склада работает несколько пользователей вводиться механизм резервирования. Пока пользователь редактирует документ товар резервируется и все последующие выборки остатков учитывают это резервирование. Когда пользователь сохраняет документ то этот резерв или снимается с остатка или удалается, если пользователь отказался сохранять документ. Причем такой механизм должен быть расчитан на случай непредвиденного отвала коннекта пользователя, выполнявшего резервирование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 17:04 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
И чем же это отличается от моего варианта. Резервирование тоже придется постить после каждого изменения записи. Так зачем постить резервирование, а поом когда юзер захочет сохранить, то резервирование снимать и т.д. Проще сразу то делать. Мне так кацца. Но я не спорю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 17:15 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Если речь идет про один набор в гриде, то может быть и да. Но возьми, например, вновь созданный документ на клиенте. Там открыта куча наборов, шапка содержание, связи и многое еще чего. Надо занести кучу данных, прежде чем его сохранить. Причем никаких идентификаторов для заполнения связанных таблиу еще в базе нет. В данном случаи все изменения пользователь делает в кэше на клиенте, а механизм резервирования отслеживает только изменения доступных остатков. Когда пользователь закончит все свои операции, он сохранит изменения через хп, про которые говорил tygra. Которые, в свою очередь, сделают все необходимые проверки и изменения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 17:24 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Согласен. Но мне пока гораздо проще делать проверки после каждого изменения в каждом наборе данных, чем все сразу постить и предусмать вариант отката. Это требует большей квалификации. Я иду по пути чем проще тем лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 17:30 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
>чем все сразу постить и предусмать вариант отката Откат изменений выполняется одной командой ROOLBACK TRANSACTION. А вот изменение одной цифры юзером может повлечь цепную реакцию в сложной системе (например ERP). И естественно, что хп, которая в качестве параметра принимает ету цифру будет содержать кучу проверок, манипуляций с данными и вызовов других хп, которые в случаи выполнения всех бизнес-правил завершаются COMMITOм, или ROOLBACKом в противном случаи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 17:36 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Ну дык такие вещи с опытом приходят. В следующий раз так и буду делать. Я даже сохранил этот топик. Думаю пригодится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 17:40 |
|
||
|
Как запретить увеличивать число в столбце в DBGride (без обращения к серверу)?
|
|||
|---|---|---|---|
|
#18+
Удачи. Буду вопросы welкам. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 17:45 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=2053&tid=2118683]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
50ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 266ms |
| total: | 451ms |

| 0 / 0 |
