|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
День добрый. Пересмотрел все посты на форуме касательно КА, но так и не понял, какова должна быть технология обновления связанных таблиц на сервере. Если 1 КА = 1 таблица, то для такой операции, как, например, обновление табличной части документа и его шапки нужно последовательно создать два КА и обновить соответствующие таблицы на сервере по очереди? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2010, 17:40 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
Да. Это одна из наиболее простых стратегий, если требуется иметь возможность сделать "не сохранение" всего введенного документа (т.е. вводили часа 2 один документ, а затем передумали сохранять) Еще более простая стратегия - это редактирование за раз не более одной записи в одной таблице. Т.е. ввели запись шапки документа - сохранили, ввели одну строчку документа - сохранили и т.п. Но в этом случае нет возможности "не сохранения" всего документа. Только удаление. Какую стратегию выбрать зависит от задачи и личных предпочтений программиста. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2010, 19:35 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
Меня интересует вариант, когда пользователь редактирует и сохраняет одну запись в определённой таблице, а изменения в несколько других таблицах уже должны быть сделаны по заранее определённой логике. Как лучше поступить в таком случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2010, 19:39 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
В этом случае лучше логику перенести на сервер. Пусть работают ХП и триггеры. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2010, 21:39 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
Fffffffffffffffffffff Т.е. вообще отказаться от использования КА при такой постановке задачи и все операции проделывать с помощью ХП или с помощью КА внести изменения, сделанные пользователем, а уже затем выполнить ХП, которые модифицируют остальные таблицы? Никогда не имел дела с клиент-серверной технологией, пытаюсь нащупать основные принципы построения приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2010, 22:47 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
Принципиальной разницы нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2010, 23:06 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
swkx Т.е. вообще отказаться от использования КА при такой постановке задачи и все операции проделывать с помощью ХП или с помощью КА внести изменения, сделанные пользователем, а уже затем выполнить ХП, которые модифицируют остальные таблицы? Никогда не имел дела с клиент-серверной технологией, пытаюсь нащупать основные принципы построения приложения. Да, наиболее полно приемущество технологии клиент-сервер вы получите если откажитель от КА и обработку перенесете на сервер. Тогда для клиента (клиентское приложение) ваша база будет представляться в виде "черного ящика" со своим API, реализованного через хранимые процедуры. Достоинств у такого подхода к построению приложения множество, но есть и недостатки: 1. Придеться учить еще, как минимум, один языка ANSI-SQL (для MS SQL Server он называется Transact-SQL или T-SQL). 2. Про переносимость приложения на другие сервера баз данных придеться забыть - диалекты языка ANSI-SQL у разных серверов сильно отличаются. С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 07:35 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
Aleksey-K[quot swkx]Да, наиболее полно приемущество технологии клиент-сервер вы получите если откажитель от КА и обработку перенесете на сервер. лучше было промолчать swkxМеня интересует вариант, когда пользователь редактирует и сохраняет одну запись в определённой таблице, а изменения в несколько других таблицах уже должны быть сделаны по заранее определённой логике. Как лучше поступить в таком случае? применение КАД не запрещает разработку на стороне сервера и использование ХП и триггеров. источником для КАД могут быть ХП. при опред. настройки будет работать и сохр-е рез-в в таблицу. При сохранении изменений также могут быть задействованы триггеры. swkx с помощью КА внести изменения, сделанные пользователем, а уже затем выполнить ХП, которые модифицируют остальные таблицы? да, если это требуется. пример давать для ms sql 2005? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 09:19 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
swkxНикогда не имел дела с клиент-серверной технологией, пытаюсь нащупать основные принципы построения приложения. Принцип очень похож на общение в форуме. Чем проще сообщение, тем выше вероятность, что тебя поймут правильно и ничего не перепутают. Ты не можешь "уточнить" свое сообщение интонацией, мимикой, да просто "пальцем показать". Поэтому обмен информацией с сервером должен быть макисмально простым и лаконичным. Если же начинаешь "мудрить" и рассчитывать на то, что "это же очевидно", то высок риск, что что-то пойдет "не так". Для сервера нет "очевидных" вещей. Ему все придется "разжевывать" в сообщениях. Или же прописать некие "правила общения" в ХП. swkx Меня интересует вариант, когда пользователь редактирует и сохраняет одну запись в определённой таблице, а изменения в несколько других таблицах уже должны быть сделаны по заранее определённой логике. Как лучше поступить в таком случае? Т.е. вообще отказаться от использования КА при такой постановке задачи и все операции проделывать с помощью ХП или с помощью КА внести изменения, сделанные пользователем, а уже затем выполнить ХП, которые модифицируют остальные таблицы? На это нет однозначного ответа. Опять же, все зависит от постановки задачи и личных предпочтений программиста. Можно делать разными способами. Самый простой (для программиста) вариант - это те модификации, которые должен делать пользователь делать через CursorAdapter, а весь "автоматизм" повесить на ХП, вызываемую в триггере на сервер. Ну, или вызвать ХП вручную по окончании модификации в CursorAdapter, хотя это и несколько сложнее. Тут следует понять простую вещь. Обмен информацией с сервером по любому идет через прямые команды Select-SQL. Просто работа через прямые команды SQLExec() требует написания большого количества программного кода. CursorAdapter позволяет частично автоматизировать этот процесс. Уменьшить объем программного кода при выполнении некоторых "стандартных" операций. Однако если требуется "пообщаться" с сервером вне "стандартных" операций, на которые рассчитан CursorAdapter, то попытка "притянуть за уши" CursorAdapter приведет не к у уменьшению, а к увеличению программного кода. Другими словами, CursorAdapter - это инструмент. Средство, а не цель. Использовать его или нет зависит от задачи и личных предпочтений. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 10:51 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
ВладимирМТут следует понять простую вещь. Обмен информацией с сервером по любому идет через прямые команды Select-SQL. Просто работа через прямые команды SQLExec() требует написания большого количества программного кода. CursorAdapter позволяет частично автоматизировать этот процесс. Уменьшить объем программного кода при выполнении некоторых "стандартных" операций. теоретик не упомянул трудозатраты при сопровождении. КАД позволяет сократить трудозатраты при изм-и структуры. исключить (нивелировать) ошибки, которые возникают при изм-и структуры таблиц. ВладимирМ Однако если требуется "пообщаться" с сервером вне "стандартных" операций, на которые рассчитан CursorAdapter, то попытка "притянуть за уши" CursorAdapter приведет не к у уменьшению, а к увеличению программного кода. Другими словами, CursorAdapter - это инструмент. Средство, а не цель. Использовать его или нет зависит от задачи и личных предпочтений за уши его тянут только теоретики. автору топика еще раз вопрос: есть пример для ms sql 2005. давать? далее попробуем его "накрутить". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 13:01 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
прошелмимо, пример давать обязательно, если это не ODBC.ZIP, который я уже рассмотрел. Собственно, КА рассматривается как приоритетная технология, потому что в этом примере почти всё понятно, а простых примеров применения сквозных запросов не увидел. На сайте Алексея Климова слишком навороченная картина, обилие деталей не даёт уловить общий подход. Всё-таки главное требование: изменения на сервере должны выполняться или во всех нужных таблицах, или не должны выполняться совсем. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 13:23 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
прошелмимо, пример давать обязательно, если это не ODBC.ZIP, который я уже рассмотрел. Собственно, КА выбран пока как предпочтительный вариант, потому что в этом примере почти всё понятно, а простых примеров применения технологии сквозных запросов я не увидел. На сайте Алексея Климова слишком навороченная картина, обилие деталей не даёт уловить суть подхода. Главное требование - изменения на сервере должны быть сделаны или во всех нужных мне таблицах, или не должны быть сделаны совсем. Обилие кода ни в VFP, ни в SQL не пугает, я не сильно ограничен по времени, да и приложение простое. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 13:41 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
прошелмимоКАД позволяет сократить трудозатраты при изм-и структуры. исключить (нивелировать) ошибки, которые возникают при изм-и структуры таблиц. Только при наличии собственного FrameWork, который подобные изменения отслеживает. Автоматически, сам по себе, CursorAdapter никаких изменений структур не отслеживает и исключить (нивелировать) ошибки, связанные с изменением структур не способен. Хотя собственно написание подобного FrameWork требует очень существенных трудозатрат. Но! Это будет всего-лишь модификация CursorAdapter. В смысле автоматическое подстраивание под изменение структуры запросов к серверу. Однако поскольку изменение структуры, как правило, делается не просто с целью добавить/удалить поле, но и с целью обеспечить некий функционал, на основе этих полей, то модификация CursorAdapter - это очень незначительная часть необходимых модификаций, которые потребуется выполнить в приложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 14:00 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
swkxпрошелмимо, пример давать обязательно, если это не ODBC.ZIP, который я уже рассмотрел. Собственно, КА выбран пока как предпочтительный вариант, потому что в этом примере почти всё понятно, а простых примеров применения технологии сквозных запросов я не увидел. На сайте Алексея Климова слишком навороченная картина, обилие деталей не даёт уловить суть подхода. Главное требование - изменения на сервере должны быть сделаны или во всех нужных мне таблицах, или не должны быть сделаны совсем. Обилие кода ни в VFP, ни в SQL не пугает, я не сильно ограничен по времени, да и приложение простое. http://sql.ru/forum/actualthread.aspx?tid=665079&pg=2&hl=sql+2005 вот здесь каскад внизу последнюю версию сейч. не положу - я на больш.удалении от исходников ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 15:34 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
ВладимирМпрошелмимоКАД позволяет сократить трудозатраты при изм-и структуры. исключить (нивелировать) ошибки, которые возникают при изм-и структуры таблиц. Только при наличии собственного FrameWork, который подобные изменения отслеживает. Автоматически, сам по себе, CursorAdapter никаких изменений структур не отслеживает и исключить (нивелировать) ошибки, связанные с изменением структур не способен. Хотя собственно написание подобного FrameWork требует очень существенных трудозатрат. Но! Это будет всего-лишь модификация CursorAdapter. В смысле автоматическое подстраивание под изменение структуры запросов к серверу. Однако поскольку изменение структуры, как правило, делается не просто с целью добавить/удалить поле, но и с целью обеспечить некий функционал, на основе этих полей, то модификация CursorAdapter - это очень незначительная часть необходимых модификаций, которые потребуется выполнить в приложении. я покажу завтра тупо пример, котор демонстрирует как курсорадаптер работает при изм.структуры таблиц и снижает трудозатраты. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 15:36 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
прошелмимо, спасибо за пример, глянул только одним глазом, но, похоже, это как раз мой случай. Буду разбираться. Кстати, еще один важный для меня вопрос ко всем: чем вариант 1 лучше варианта 2? вариант 1 - большая часть логики выполняется в ХП вариант 2 - сервер только хранилище данных, вся логика в клиентском приложении ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 21:17 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
Это вам в ветку "Сравнение СУБД". Там не мало копий сломано на эту тему. В двух словах не скажешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 23:12 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
А причем тут сравнение? Связка VFP-SQL не обсуждается, это вопрос решенный. Интересует только распределение функций между ними. Мне кажется более простым вариант, когда вся разработка ведётся в среде фокса как более знакомой, а в SQL только создам таблицы. Вот и хотелось бы узнать недостатки такого подхода перед общепризнанным правильным способом - всё что можно загнать в ХП. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2010, 08:11 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
swkxА причем тут сравнение? Связка VFP-SQL не обсуждается, это вопрос решенный. Интересует только распределение функций между ними. Мне кажется более простым вариант, когда вся разработка ведётся в среде фокса как более знакомой, а в SQL только создам таблицы. Вот и хотелось бы узнать недостатки такого подхода перед общепризнанным правильным способом - всё что можно загнать в ХП. кем признанным? все загнать? это что? приходилось видеть километры безумия в виде куржев макро скл и безумное трясение серверов как и бесполезную обработку больших объемов на клиентах. о чем речь ведем. о каком бизнесе ? бывают различн.задачи: 1. сформировать отчет 2. посчитать ндс в строке детализации док-та 3. сформировать какие-то проводки 4. не дать "пропихнуть" расход если на складе нет товара в остатке. 5. не дать удалить документ(какую-то часть док-та ...) с определенным статусом .... о какой логике речь? даайте будем говорить о конкретных вещах, а то чейчас теоретики набегут и начнут трепать нервы. когда нужно перелопатить большие кучи и это нужно быстро - то делаем на сервере. если у нас сложный бизнес и постоянно что-то "подкручиваем" и устраивает обр-ка на клиенте, то также вариант ... - все зависит от объемов и того, что нужно сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2010, 09:17 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
клиентская часть примера, демонстрирующая список документов с оным редактированием. документы состоят из заголовочной части и детализаций. все реализовано на курсорадаптерах. в бд организован контроль целостности и аудит. бекап бд можно взять из прошлой ссылки (могу положить). пример можно накрутить, к примеру создать хп проведения док-та - генерации бух.проводок (аля-1це), которая будет зваться или в момент сохр-я или после оного, либо по потребности. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2010, 09:24 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
swkx, Тут не может быть однозначного ответа, все зависит от ситуации. На одной чаще весов - сетевой трафик и степень загрузки сервера (они существенно больше во 2-м варианте), а на другой - усложнение разработки. Когда размер таблиц порядка мегабайт, то разница в быстродействии особо не ощущается, но если размер таблиц переваливает за гигабайты - тогда только ХП могут обеспечить приемлемое быстродействие. С моей точки зрения, ХП во многих случаях позволяют получить более эффективные и красивые решения, чем бизнес-классы на Фоксе. Но, мои попытки реализовать на T-SQL полный алгоритм расчета зарплаты пока не увенчались успехом. Приходится искать компромиссы, точнее - оптимум. Кстати, между 1-м и 2-м вариантом реализации клиент серверной технологии возможен и третий - промежуточный - типа классической "трехзвенки". То есть на том же физическом сервере (или кластере), что и SQL-сервер, нужно создать промежуточное приложение, связанное с SQL-сервером по быстрому локальному протоколу (типа NAMED PIPE) и содержащее всю бизнес-логику, которую сложно реализовать в виде ХП. И уже с этим промежуточным "бизнес-сервером" должны по сети работать клиентские приложения. Такой вариант будет легко масштабируемым и не слишком усложнит разработку. Но его разработка реальна скорее на .NET, чем на Фоксе, там для этого больше возможностей. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2010, 10:13 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
прошелмимо, объемы небольшие, десятки док-ов в день, никаких проводок и проведений в духе 1С, это не бух. Логика со всеми подробностями мне неизвестна, в общих чертах - создание докум-ов и отслеживание изменений, внесённых в документы разными пользователями. Разграничение прав пользователей на редактирование и просмотр документов. Документ состоит из табл. части и шапки. Пользователи разбросаны по всему городу, база на хостинге. Короче, самая простая и популярная задачка :)) За пример еще раз спасибо, буду разбираться. Появятся вопросы - задам. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2010, 10:21 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
Sea_Cat..... Но, мои попытки реализовать на T-SQL полный алгоритм расчета зарплаты пока не увенчались успехом. А кто межает использовать SQLCLR и бизнес логику расчета зарплаты реализовать на C# (VB.NET) ? С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2010, 10:24 |
|
Обновление нескольких таблиц на сервере КурсорАдаптером
|
|||
---|---|---|---|
#18+
Aleksey-KSea_Cat..... Но, мои попытки реализовать на T-SQL полный алгоритм расчета зарплаты пока не увенчались успехом. А кто межает использовать SQLCLR и бизнес логику расчета зарплаты реализовать на C# (VB.NET) ? С уважением, Алексей насколько усложнится разработка и сопровождение при необходимости настройки под конкретные потребности? к примеру есть реш-е, которое необходимо внедрять под различные требования (у разных заказчиков). к примеру необходим интерфейс быстрой перестройки логики расчетов и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2010, 10:30 |
|
|
start [/forum/topic.php?fid=41&fpage=89&tid=1584945]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
103ms |
get tp. blocked users: |
2ms |
others: | 338ms |
total: | 517ms |
0 / 0 |