powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновление нескольких таблиц на сервере КурсорАдаптером
25 сообщений из 48, страница 1 из 2
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36808845
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый.
Пересмотрел все посты на форуме касательно КА, но так и не понял, какова должна быть технология обновления связанных таблиц на сервере. Если 1 КА = 1 таблица, то для такой операции, как, например, обновление табличной части документа и его шапки нужно последовательно создать два КА и обновить соответствующие таблицы на сервере по очереди?
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36809065
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Это одна из наиболее простых стратегий, если требуется иметь возможность сделать "не сохранение" всего введенного документа (т.е. вводили часа 2 один документ, а затем передумали сохранять)

Еще более простая стратегия - это редактирование за раз не более одной записи в одной таблице. Т.е. ввели запись шапки документа - сохранили, ввели одну строчку документа - сохранили и т.п. Но в этом случае нет возможности "не сохранения" всего документа. Только удаление.

Какую стратегию выбрать зависит от задачи и личных предпочтений программиста.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36809070
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Меня интересует вариант, когда пользователь редактирует и сохраняет одну запись в определённой таблице, а изменения в несколько других таблицах уже должны быть сделаны по заранее определённой логике. Как лучше поступить в таком случае?
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36809206
В этом случае лучше логику перенести на сервер. Пусть работают ХП и триггеры.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36809260
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fffffffffffffffffffff

Т.е. вообще отказаться от использования КА при такой постановке задачи и все операции проделывать с помощью ХП
или
с помощью КА внести изменения, сделанные пользователем, а уже затем выполнить ХП, которые модифицируют остальные таблицы?

Никогда не имел дела с клиент-серверной технологией, пытаюсь нащупать основные принципы построения приложения.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36809278
Ffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Принципиальной разницы нет.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36809418
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
swkx

Т.е. вообще отказаться от использования КА при такой постановке задачи и все операции проделывать с помощью ХП
или
с помощью КА внести изменения, сделанные пользователем, а уже затем выполнить ХП, которые модифицируют остальные таблицы?

Никогда не имел дела с клиент-серверной технологией, пытаюсь нащупать основные принципы построения приложения.
Да, наиболее полно приемущество технологии клиент-сервер вы получите если откажитель от КА и обработку перенесете на сервер. Тогда для клиента (клиентское приложение) ваша база будет представляться в виде "черного ящика" со своим API, реализованного через хранимые процедуры.
Достоинств у такого подхода к построению приложения множество, но есть и недостатки:
1. Придеться учить еще, как минимум, один языка ANSI-SQL (для MS SQL Server он называется Transact-SQL или T-SQL).
2. Про переносимость приложения на другие сервера баз данных придеться забыть - диалекты языка ANSI-SQL у разных серверов сильно отличаются.
С уважением, Алексей
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36809512
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-K[quot swkx]Да, наиболее полно приемущество технологии клиент-сервер вы получите если откажитель от КА и обработку перенесете на сервер.

лучше было промолчать

swkxМеня интересует вариант, когда пользователь редактирует и сохраняет одну запись в определённой таблице, а изменения в несколько других таблицах уже должны быть сделаны по заранее определённой логике. Как лучше поступить в таком случае?

применение КАД не запрещает разработку на стороне сервера
и использование ХП и триггеров.

источником для КАД могут быть ХП.
при опред. настройки будет работать и сохр-е рез-в в таблицу.
При сохранении изменений также могут быть задействованы триггеры.

swkx
с помощью КА внести изменения, сделанные пользователем, а уже затем выполнить ХП, которые модифицируют остальные таблицы?


да, если это требуется.


пример давать для ms sql 2005?
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36809748
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
swkxНикогда не имел дела с клиент-серверной технологией, пытаюсь нащупать основные принципы построения приложения.
Принцип очень похож на общение в форуме. Чем проще сообщение, тем выше вероятность, что тебя поймут правильно и ничего не перепутают. Ты не можешь "уточнить" свое сообщение интонацией, мимикой, да просто "пальцем показать". Поэтому обмен информацией с сервером должен быть макисмально простым и лаконичным.

Если же начинаешь "мудрить" и рассчитывать на то, что "это же очевидно", то высок риск, что что-то пойдет "не так". Для сервера нет "очевидных" вещей. Ему все придется "разжевывать" в сообщениях. Или же прописать некие "правила общения" в ХП.

swkx
Меня интересует вариант, когда пользователь редактирует и сохраняет одну запись в определённой таблице, а изменения в несколько других таблицах уже должны быть сделаны по заранее определённой логике. Как лучше поступить в таком случае?

Т.е. вообще отказаться от использования КА при такой постановке задачи и все операции проделывать с помощью ХП
или
с помощью КА внести изменения, сделанные пользователем, а уже затем выполнить ХП, которые модифицируют остальные таблицы?
На это нет однозначного ответа. Опять же, все зависит от постановки задачи и личных предпочтений программиста. Можно делать разными способами.

Самый простой (для программиста) вариант - это те модификации, которые должен делать пользователь делать через CursorAdapter, а весь "автоматизм" повесить на ХП, вызываемую в триггере на сервер. Ну, или вызвать ХП вручную по окончании модификации в CursorAdapter, хотя это и несколько сложнее.

Тут следует понять простую вещь. Обмен информацией с сервером по любому идет через прямые команды Select-SQL. Просто работа через прямые команды SQLExec() требует написания большого количества программного кода. CursorAdapter позволяет частично автоматизировать этот процесс. Уменьшить объем программного кода при выполнении некоторых "стандартных" операций.

Однако если требуется "пообщаться" с сервером вне "стандартных" операций, на которые рассчитан CursorAdapter, то попытка "притянуть за уши" CursorAdapter приведет не к у уменьшению, а к увеличению программного кода.

Другими словами, CursorAdapter - это инструмент. Средство, а не цель. Использовать его или нет зависит от задачи и личных предпочтений.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36810246
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМТут следует понять простую вещь. Обмен информацией с сервером по любому идет через прямые команды Select-SQL. Просто работа через прямые команды SQLExec() требует написания большого количества программного кода. CursorAdapter позволяет частично автоматизировать этот процесс. Уменьшить объем программного кода при выполнении некоторых "стандартных" операций.

теоретик не упомянул
трудозатраты при сопровождении.

КАД позволяет сократить трудозатраты при изм-и структуры.
исключить (нивелировать) ошибки, которые возникают при изм-и структуры таблиц.

ВладимирМ
Однако если требуется "пообщаться" с сервером вне "стандартных" операций, на которые рассчитан CursorAdapter, то попытка "притянуть за уши" CursorAdapter приведет не к у уменьшению, а к увеличению программного кода.

Другими словами, CursorAdapter - это инструмент. Средство, а не цель. Использовать его или нет зависит от задачи и личных предпочтений


за уши его тянут только теоретики.

автору топика еще раз вопрос:
есть пример для ms sql 2005. давать?
далее попробуем его "накрутить".
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36810340
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,

пример давать обязательно, если это не ODBC.ZIP, который я уже рассмотрел. Собственно, КА рассматривается как приоритетная технология, потому что в этом примере почти всё понятно, а простых примеров применения сквозных запросов не увидел. На сайте Алексея Климова слишком навороченная картина, обилие деталей не даёт уловить общий подход.

Всё-таки главное требование: изменения на сервере должны выполняться или во всех нужных таблицах, или не должны выполняться совсем.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36810400
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,

пример давать обязательно, если это не ODBC.ZIP, который я уже рассмотрел. Собственно, КА выбран пока как предпочтительный вариант, потому что в этом примере почти всё понятно, а простых примеров применения технологии сквозных запросов я не увидел. На сайте Алексея Климова слишком навороченная картина, обилие деталей не даёт уловить суть подхода.

Главное требование - изменения на сервере должны быть сделаны или во всех нужных мне таблицах, или не должны быть сделаны совсем.

Обилие кода ни в VFP, ни в SQL не пугает, я не сильно ограничен по времени, да и приложение простое.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36810464
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимоКАД позволяет сократить трудозатраты при изм-и структуры.
исключить (нивелировать) ошибки, которые возникают при изм-и структуры таблиц.

Только при наличии собственного FrameWork, который подобные изменения отслеживает. Автоматически, сам по себе, CursorAdapter никаких изменений структур не отслеживает и исключить (нивелировать) ошибки, связанные с изменением структур не способен. Хотя собственно написание подобного FrameWork требует очень существенных трудозатрат. Но! Это будет всего-лишь модификация CursorAdapter. В смысле автоматическое подстраивание под изменение структуры запросов к серверу.

Однако поскольку изменение структуры, как правило, делается не просто с целью добавить/удалить поле, но и с целью обеспечить некий функционал, на основе этих полей, то модификация CursorAdapter - это очень незначительная часть необходимых модификаций, которые потребуется выполнить в приложении.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36810849
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
swkxпрошелмимо,

пример давать обязательно, если это не ODBC.ZIP, который я уже рассмотрел. Собственно, КА выбран пока как предпочтительный вариант, потому что в этом примере почти всё понятно, а простых примеров применения технологии сквозных запросов я не увидел. На сайте Алексея Климова слишком навороченная картина, обилие деталей не даёт уловить суть подхода.

Главное требование - изменения на сервере должны быть сделаны или во всех нужных мне таблицах, или не должны быть сделаны совсем.

Обилие кода ни в VFP, ни в SQL не пугает, я не сильно ограничен по времени, да и приложение простое.


http://sql.ru/forum/actualthread.aspx?tid=665079&pg=2&hl=sql+2005
вот здесь каскад внизу

последнюю версию сейч. не положу - я на больш.удалении от исходников
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36810862
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМпрошелмимоКАД позволяет сократить трудозатраты при изм-и структуры.
исключить (нивелировать) ошибки, которые возникают при изм-и структуры таблиц.

Только при наличии собственного FrameWork, который подобные изменения отслеживает. Автоматически, сам по себе, CursorAdapter никаких изменений структур не отслеживает и исключить (нивелировать) ошибки, связанные с изменением структур не способен. Хотя собственно написание подобного FrameWork требует очень существенных трудозатрат. Но! Это будет всего-лишь модификация CursorAdapter. В смысле автоматическое подстраивание под изменение структуры запросов к серверу.

Однако поскольку изменение структуры, как правило, делается не просто с целью добавить/удалить поле, но и с целью обеспечить некий функционал, на основе этих полей, то модификация CursorAdapter - это очень незначительная часть необходимых модификаций, которые потребуется выполнить в приложении.

я покажу завтра тупо пример,
котор демонстрирует как курсорадаптер работает при изм.структуры таблиц
и снижает трудозатраты.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36811672
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,

спасибо за пример, глянул только одним глазом, но, похоже, это как раз мой случай. Буду разбираться.

Кстати, еще один важный для меня вопрос ко всем: чем вариант 1 лучше варианта 2?
вариант 1 - большая часть логики выполняется в ХП
вариант 2 - сервер только хранилище данных, вся логика в клиентском приложении
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36811796
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это вам в ветку "Сравнение СУБД". Там не мало копий сломано на эту тему.
В двух словах не скажешь.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36811970
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А причем тут сравнение?

Связка VFP-SQL не обсуждается, это вопрос решенный. Интересует только распределение функций между ними.
Мне кажется более простым вариант, когда вся разработка ведётся в среде фокса как более знакомой, а в SQL только создам таблицы.
Вот и хотелось бы узнать недостатки такого подхода перед общепризнанным правильным способом - всё что можно загнать в ХП.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36812027
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
swkxА причем тут сравнение?

Связка VFP-SQL не обсуждается, это вопрос решенный. Интересует только распределение функций между ними.
Мне кажется более простым вариант, когда вся разработка ведётся в среде фокса как более знакомой, а в SQL только создам таблицы.
Вот и хотелось бы узнать недостатки такого подхода перед общепризнанным правильным способом - всё что можно загнать в ХП.

кем признанным?

все загнать? это что?
приходилось видеть километры безумия в виде куржев
макро скл и безумное трясение серверов как и бесполезную
обработку больших объемов на клиентах.

о чем речь ведем.
о каком бизнесе ?

бывают различн.задачи:
1. сформировать отчет
2. посчитать ндс в строке детализации док-та
3. сформировать какие-то проводки
4. не дать "пропихнуть" расход если на складе нет товара в остатке.
5. не дать удалить документ(какую-то часть док-та ...) с определенным статусом
....

о какой логике речь?
даайте будем говорить о конкретных вещах, а то чейчас теоретики набегут
и начнут трепать нервы.

когда нужно перелопатить большие кучи и это нужно быстро - то делаем на сервере.
если у нас сложный бизнес и постоянно что-то "подкручиваем" и устраивает обр-ка
на клиенте, то также вариант ... - все зависит от объемов и того, что нужно сделать.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36812043
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
клиентская часть примера,
демонстрирующая
список документов с оным редактированием.

документы состоят из заголовочной части и детализаций.

все реализовано на курсорадаптерах.

в бд организован контроль целостности и аудит.

бекап бд
можно взять из прошлой ссылки (могу положить).

пример можно накрутить, к примеру создать хп проведения док-та - генерации бух.проводок
(аля-1це), которая будет зваться или в момент сохр-я или после оного,
либо по потребности.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36812159
Sea_Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
swkx,

Тут не может быть однозначного ответа, все зависит от ситуации. На одной чаще весов - сетевой трафик и степень загрузки сервера (они существенно больше во 2-м варианте), а на другой - усложнение разработки.
Когда размер таблиц порядка мегабайт, то разница в быстродействии особо не ощущается, но если размер таблиц переваливает за гигабайты - тогда только ХП могут обеспечить приемлемое быстродействие.
С моей точки зрения, ХП во многих случаях позволяют получить более эффективные и красивые решения, чем бизнес-классы на Фоксе. Но, мои попытки реализовать на T-SQL полный алгоритм расчета зарплаты пока не увенчались успехом. Приходится искать компромиссы, точнее - оптимум.
Кстати, между 1-м и 2-м вариантом реализации клиент серверной технологии возможен и третий - промежуточный - типа классической "трехзвенки". То есть на том же физическом сервере (или кластере), что и SQL-сервер, нужно создать промежуточное приложение, связанное с SQL-сервером по быстрому локальному протоколу (типа NAMED PIPE) и содержащее всю бизнес-логику, которую сложно реализовать в виде ХП. И уже с этим промежуточным "бизнес-сервером" должны по сети работать клиентские приложения. Такой вариант будет легко масштабируемым и не слишком усложнит разработку. Но его разработка реальна скорее на .NET, чем на Фоксе, там для этого больше возможностей.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36812188
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,

объемы небольшие, десятки док-ов в день, никаких проводок и проведений в духе 1С, это не бух.
Логика со всеми подробностями мне неизвестна, в общих чертах - создание докум-ов и отслеживание изменений, внесённых в документы разными пользователями. Разграничение прав пользователей на редактирование и просмотр документов. Документ состоит из табл. части и шапки.
Пользователи разбросаны по всему городу, база на хостинге.
Короче, самая простая и популярная задачка :))

За пример еще раз спасибо, буду разбираться. Появятся вопросы - задам.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36812196
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sea_Cat..... Но, мои попытки реализовать на T-SQL полный алгоритм расчета зарплаты пока не увенчались успехом.
А кто межает использовать SQLCLR и бизнес логику расчета зарплаты реализовать на C# (VB.NET) ?
С уважением, Алексей
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36812218
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-KSea_Cat..... Но, мои попытки реализовать на T-SQL полный алгоритм расчета зарплаты пока не увенчались успехом.
А кто межает использовать SQLCLR и бизнес логику расчета зарплаты реализовать на C# (VB.NET) ?
С уважением, Алексей

насколько усложнится разработка и сопровождение
при необходимости настройки под конкретные потребности?
к примеру есть реш-е, которое необходимо внедрять под различные
требования (у разных заказчиков).

к примеру необходим интерфейс быстрой перестройки
логики расчетов и т.д.
...
Рейтинг: 0 / 0
Обновление нескольких таблиц на сервере КурсорАдаптером
    #36812238
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sea_Cat,

спасибо: просто, аргументированно и понятно.

Трёхзвенка отпадает - она не для таких простых задач, как моя.
...
Рейтинг: 0 / 0
25 сообщений из 48, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновление нескольких таблиц на сервере КурсорАдаптером
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]