|
|
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
Подскажите существует ли способ оптимизации функции update (), она каждый раз "пробегает" все строки (например 10000 и более) в DataWindow в поиске изменённой строки, когда точно известно (программисту) какая строка обновилась и она одна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2026, 11:08 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
osxl [игнорируется] Спасибо за ответ (долой перфекционизм!). Спокойней стало от того что её нет, но был бы у меня студент дал бы ему задание написать такую функцию update(row) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2026, 06:50 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
Это наводит на мысль, что update () работает как-то иначе чем последовательных перебор строк в поиске обновленных строк в DataWindow, например есть "внутренний" массив содержащий номера обновленных и новых строк -:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2026, 09:37 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
Soft54 [игнорируется] Излишний перфекционизм вреден. Но если вам нравиться шагать вперед держа флаг перфекционизма высоко поднятым, это ваше право. Я от этого избавился. Студент тут не нужен, нужно всего лишь понимание того, что и как работает в PB DW, и за 10-15 минут вы спокойно можете наваять такую функцию. Имхо, зачем изобретать по новой велосипед, который уже есть и прекрасно едет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2026, 22:44 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
Это наводит на мысль, что update () работает как-то иначе чем последовательных перебор строк в поиске обновленных строк в DataWindow, например есть "внутренний" массив содержащий номера обновленных и новых строк -:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2026, 23:01 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
osxl#40142788[/ Благодарю за ответ, но не согласен с тем, что аналогичную update () функцию можно написать за 20 минут. Про то, что каждая строка и каждый столбец в DataWindow обладает статусом (status flag), который может принимать значения NotModified!, DataModified!, New!, NewModified! , мне известно -:) и они доступны разработчику ПО. ... |
|||
|
:
Изменено: 23.02.2026, 07:25 - Soft54
Нравится:
Не нравится:
|
|||
| 23.02.2026, 07:20 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
Благодарю за ответ, но не согласен с тем, что аналогичную update () функцию можно написать за 20 минут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2026, 08:35 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
osxl [игнорируется] , что Вы думаете по поводу того, что если DataWindow получает из БД более 100 строк для работы (правки и т п.) то можно утверждать что взаимодействие с БД в данном случае спроектировано неправильно для повседневной работы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2026, 09:06 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
что Вы думаете по поводу того, что если DataWindow получает из БД более 100 строк для работы (правки и т п.) то можно утверждать что взаимодействие с БД в данном случае спроектировано неправильно для повседневной работы? ... |
|||
|
:
Изменено: 23.02.2026, 10:24 - Garya
Нравится:
Не нравится:
|
|||
| 23.02.2026, 10:23 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
что Вы думаете по поводу того, что если DataWindow получает из БД более 100 строк для работы (правки и т п.) то можно утверждать что взаимодействие с БД в данном случае спроектировано неправильно для повседневной работы? Надо тогда сократить текст и показать только то что изменено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2026, 10:25 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
Надо тогда сократить текст и показать только то что изменено. ____ Вспомнилось... Случилась у меня в стародавние времена (год примерно 1998-99) история с одной дамой, которая хорошо себя зарекомендовала перед руководством тем, что выполняемую ранее вручную работу систематизировала с помощью таблиц Excel. Таблицы постепенно разрослись до невообразимых размеров, стали тормозить, были сложности многопользовательского доступа к данным... И передо мною поставили задачу всё это автоматизировать каким-то иным способом, для чего я должен был взаимодействовать с ней как с главным заказчиком. Она привыкла работать в Excel, используя функционал автофильтров, и требовала от меня, по сути, реализовать один-в-один такой же функционал при доступе к SQL-серверу. Я пытался её убедить в том, что выводить тысячи строк из базы данных на экран - это плохая идея, что при работе с SQL-сервером всё будет работать ещё медленнее, чем в Excel, но это была весьма харизматичная дама ничего не хотела слушать. Наши пикировки дошли до уровня высшего руководства. Высшее руководство не стало разбираться и потребовало от меня, чтобы я просто тупо выполнял все капризы этой дамы. Ок, сказал я, выполню. Пару месяцев работы программиста и нате, получите. - Почему всё так медленно? В Excel и то быстрее! - Разве я вас об этом не предупреждал? Вы получили то, чего хотели. - Но в таком режиме работать же невозможно!... После очередных разборов полётов у высшего руководства теперь уже ей было приказано внимательно слушать, что уже я ей говорю. На этот раз она сделала над собой усилие и, наконец, призналась в том, что ни она сама, и ни один из её сотрудников не читает содержимое отфильтрованных строк таблицы, а смотрит лишь на их количество. А смотреть на содержимое строк начинает, когда их число путём последовательного наложения дополнительных условий фильтации не уменьшится примерно до 10-20. Я реализовал вычисление на сервере числа строк по сложным комбинациям фильтров и вывод на экран юзверю числа строк, а не самих строк, а сами строки выводились отдельной строкой "Показать". Всё стало работать быстро и все оказались довольны. ... |
|||
|
:
Изменено: 23.02.2026, 11:45 - Garya
Нравится:
Не нравится:
|
|||
| 23.02.2026, 11:42 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
что Вы думаете по поводу того, что если DataWindow получает из БД более 100 строк для работы (правки и т п.) то можно утверждать что взаимодействие с БД в данном случае спроектировано неправильно для повседневной работы? В первую очередь нужно смотреть на область автоматизации и задачу... Все зависит от области применения. И вот думаю, с чего вы решили что при обновлении механизм dw перебирает все строки в поисках измененных? Если Вам было известно о флагах/состоянии строк/столбцов DW? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2026, 12:01 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
Soft54 [игнорируется] Добавлю. Имхо: Получить 100, 200, 1000+ из БД - не проблема. Отдать все на редактирование - плохая идея. Превращать DW в аналог Excel - плохая идея. Редактировать нужную строку в другом окне - хорошая идея. У нас к примеру диапазон документов за три дня превышает 1000 записей. Что оптимальнее выбрать 1000 строк и использовать фильтры в DW не отсылая каждый раз SQL запрос на сервер, или при смене фильтра который включает несколько параметров, делать новую выборку? Тут решать вам, как разработчику. Везде есть свои плюсы и минусы. На дворе уже не 99, компьютеры давно подняли свою производительность. Выбор средства и технологии реализации - ваш выбор... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2026, 13:18 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
Да, думаю что для этого есть механизм, который хранит флаги не рядом с строками, а в виде массива изменений, как вы и предположили позже. Еще мне стало скучно, ради интереса реализовал предложенный вами метод update по номеру строки. Время обновления datastore c одной строкой, равен по времени обновлению datawindow с 360тыс строк. В пределах погрешности. Так же между 6-8 мс. Так что овчинка выделки не стоит. ... |
|||
|
:
Изменено: 23.02.2026, 13:39 - osxl
Нравится:
Не нравится:
|
|||
| 23.02.2026, 13:36 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
osxl [игнорируется] Спасибо за участие, Ваши эксперименты с dw подтверждают наши с вами умозаключения )) И ещё, раз так, то нет смысла в вызове функции modifiedcount () перед вызовам функции update (), с другой стороны и вреда тоже нет в смысле производительности, она даст мгновенный ответ "заглянув под капот"? ... |
|||
|
:
Изменено: 23.02.2026, 14:09 - Soft54
Нравится:
Не нравится:
|
|||
| 23.02.2026, 13:55 |
|
||
|
Функция dw_1.update ()
|
|||
|---|---|---|---|
|
#18+
И ещё, раз так, то нет смысла в вызове функции modifiedcount () перед вызовам функции update (), с другой стороны и вреда тоже нет в смысле производительности, она даст мгновенный ответ "заглянув под капот"? Использование данной функции зависит от подхода к редактированию и вводу данных, если DW в виде Grid, еще и оптовый подход, т.е. изменение нескольких строк за раз, а потом сохранение всех изменений разом, тогда есть смысл вызывать modifiedcount() перед закрытием. Но если было удаление, modifiedcount() не включит удаленные строки, требуется вызывать еще и deletedcount(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2026, 19:32 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=40142803&tid=2187353]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
63ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 394ms |

| 0 / 0 |
