Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Всем привет, Есть задачка создать форму с несколькими закладками для возможности редактирования различных параметров на каждой из закладок. Необходимо, чтобы изменения на форме сохранялись в базу только при нажатии Save на форме, а не при редактировании полей/таблиц на форме. Чтение параметров в форму и сохранение параметров нужно реализовать через stored procedure. Как это правильно реализовать? Нужно также учесть, что если другой пользователь успел раньше внести изменения, то текущий пользователь должен получить сообщение об ошибке при попытке сохранить настройки. Для считывания параметров в одной процедуре можно сделать несколько select-ов. Для записи в таблицы использовать tvp со значением из каждого грида формы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 17:00 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Testor1, в чём вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 18:19 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
pation, То решение которое я описал - оно правильное? Если ли более оптимальное решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 18:48 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Testor1, Вы озвучили только задачу, решения не вижу, вы какой технологией пользуетесь, озвучьте название орм, объясните принцип разбиения на табсы (статичный - только для одного типа ( в рукопашную), или автоматический по маркерам полей - универсальный - для всех типов, чьи поля помечены маркером) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 19:01 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, ну и вопрос про валидацию (с двойным кордоном) присовокупляю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 19:14 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Где-то в степиTestor1, Вы озвучили только задачу, решения не вижу, вы какой технологией пользуетесь, озвучьте название орм, объясните принцип разбиения на табсы (статичный - только для одного типа ( в рукопашную), или автоматический по маркерам полей - универсальный - для всех типов, чьи поля помечены маркером) Я пока не знаком со всеми терминами Использую с# asp.net devExpress последний Работа с базой идет только через stored procedures (xpo - технология). Табы на форме статичны. Для примера: Основная форма настройка одной из акций На таб1 - список магазинов, которые могут участвовать в акции На таб2 - список правил по начислению бонусов при выполнении плана продаж схема с магазинами и бонусами - это простая схема приведенная для примера. реальная схема намного сложнее. но хотя бы на этом примере можно пояснить как реализовать функционал загрузки данных и сохранения изменений с помощью сторед процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 19:27 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Testor1, Похоже вы не туда запостили ((. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 19:59 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
зачем тут процедура?..., две не связанные сущности, магазины и правила начисления, это все можно вытащить двумя запросами к двум таблицам ( магазины, и правила начисления) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 20:05 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Где-то в степизачем тут процедура?..., две не связанные сущности, магазины и правила начисления, это все можно вытащить двумя запросами к двум таблицам ( магазины, и правила начисления) из-за безопасности и производительности все выборки и запросы на изменения делаю через процедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 20:14 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Testor1Где-то в степизачем тут процедура?..., две не связанные сущности, магазины и правила начисления, это все можно вытащить двумя запросами к двум таблицам ( магазины, и правила начисления) из-за безопасности и производительности все выборки и запросы на изменения делаю через процедуры ну а что, от select * from 'sssss' ,можно чем нибудь заразиться, и чем его производительность ниже процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 20:48 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Testor1, Почитайте про технологию ADO.net, там можно выполнять парамеризированые запросы, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 21:05 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Testor1, СУБД-то хоть какая? Oracle, SQL Server, etc.? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 00:05 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, безопасность видимо в том, что есть только GRANT EXECUTE... То есть рядовой пользователь не сможет выполнить DELETE FROM SomeTable, но сможет выполнить процедуру DeleteSomething с определёнными параметрами, которая только флаг активности записи сбросит, а физически ничего не удалит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 00:11 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
skyANA, я бы мог с эти согласиться ( хотя эта тема не влазит в эту ветку) но автор 1. на выборку предлагает использовать хп, с множественным селестом. 2 не имеет не малейшего представления о ado и провайдерах. 3 орм для него загадка. 4 проецирование выборки в объект замапленого типа тем более. 5 валидация на сервере так и на клиенте вообще не озвучена хотя про инъекции я думаю что он слышал. судя по истории, он вообще не нетчик, и тем более не asp, если не мог озвучить используемую технологию ( формс, или еще что там бывает) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 00:43 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Где-то в степино автор 1. на выборку предлагает использовать хп, с множественным селестом.А что тут такого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 00:53 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
skyANA, да ничего, я толерантный к мазохизму, можно еще азбукой морзе вытащить, зато дороп никто через параметр не исполнит.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 00:58 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, а в чём мазахизм? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 00:59 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Кстати дроп никто не исполнит, если GRANT SELECT давать только на представления (VIEW) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 01:03 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Testor1, но если хочется именно через хп и несколько select-ов, то читай про извлечение нескольких результирующих наборов при помощи NextResult тут . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 01:04 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
skyANAКстати дроп никто не исполнит, если GRANT SELECT давать только на представления (VIEW) :)Сам не понял, что сказал. Устал. Вообщем ссылкО выше :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 01:06 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
skyANAГде-то в степи, а в чём мазахизм? :) а вы спроекцируйте десять курсоров на десять не связанных сущностей, а вы пользуетесь датасетом?... а тот кто придет после вас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 01:10 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Где-то в степиskyANAГде-то в степи, а в чём мазахизм? :) а вы спроекцируйте десять курсоров на десять не связанных сущностей, а вы пользуетесь датасетом?... а тот кто придет после васПри чём тут датасет? Читайте хоть в консоль :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 01:21 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
И почему сущности не связаны? У ТС для примера на входе какая-то акция, на выходе магазины и правила, соответсвующие акции. В реальности, говорит, что всё сложнее. Так что не надо делать поспешные выводы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 01:32 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
skyANA, ну если они связаны, почему он применяет "несколько select-ов." а не мои любимые джойны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 01:46 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
С точки зрения простоты - конечно проще на самой старичке писать нужный select/insert/update/delete, НО если честно я не до конца смог разобраться как ограничивать права пользователей на разные таблицы (на уровне столбцов и строк). Более менее понятно, когда таблиц мало и связок между таблицами мало, а вот когда их много, то возникает куча вопросов. С точки зрении использования процедур - я создаю одну процедуру на N действий с основной таблицей и/или связанной таблицей. В начале тела процедуры проверяю права пользователя на select/insert/update/delete. Я не утверждаю, что это самая правильная схема, но пока та, что мне понятна. Если кто-то может на простом и понятном примере объяснить как организовать разграничение доступа на таблицы на уровне столбцов и строк, то буду очень благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 10:37 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Где-то в степиskyANA, ну если они связаны, почему он применяет "несколько select-ов." а не мои любимые джойны? на форму нужно грузить данные для акции из трех страниц и редактировать данные в трех таблица таблицы для примера aktsia id int IDENTITY(1,1) NOT NULL name nvarchar(50) NOT NULL data_starta date datat_zavershenia date aktsia_magazini id int IDENTITY(1,1) NOT NULL aktsia_id INT magazin_id INT aktsia_yslovia id int IDENTITY(1,1) OT NULL aktsia_id INT kolichestvo_prodaj_za_mesiats INT bonus INT Я планирую пройти курсы по MVC, но скорее всего это будет не раньше начала следующего года, а пока использую накопленные знания и опыт. Не всегда бывает время на нормальное самообучение. Поэтому и вынужден обращаться за советами к специалистам. Что касается stored procedures и orm - есть куча споров на этот счет и каждая из сторон видит свои плюсы в выбранном подходе. http://www.developmentalmadness.com/archive/2009/06/23/data-access-stored-procedures-vs-orm-ad.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 10:55 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Testor1С точки зрения простоты - конечно проще на самой старичке писать нужный select/insert/update/delete, НО если честно я не до конца смог разобраться как ограничивать права пользователей на разные таблицы (на уровне столбцов и строк). Более менее понятно, когда таблиц мало и связок между таблицами мало, а вот когда их много, то возникает куча вопросов. С точки зрении использования процедур - я создаю одну процедуру на N действий с основной таблицей и/или связанной таблицей. В начале тела процедуры проверяю права пользователя на select/insert/update/delete. Я не утверждаю, что это самая правильная схема, но пока та, что мне понятна. Если кто-то может на простом и понятном примере объяснить как организовать разграничение доступа на таблицы на уровне столбцов и строк, то буду очень благодарен.Хм... А покажите кусок кода хранимой процедуры, что у Вас проверяет права пользователя на select/insert/update/delete, на уровне столбцов и строк. P.S.: ссылку про NextResult посмотрели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2012, 10:18 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
skyANATestor1С точки зрения простоты - конечно проще на самой старичке писать нужный select/insert/update/delete, НО если честно я не до конца смог разобраться как ограничивать права пользователей на разные таблицы (на уровне столбцов и строк). Более менее понятно, когда таблиц мало и связок между таблицами мало, а вот когда их много, то возникает куча вопросов. С точки зрении использования процедур - я создаю одну процедуру на N действий с основной таблицей и/или связанной таблицей. В начале тела процедуры проверяю права пользователя на select/insert/update/delete. Я не утверждаю, что это самая правильная схема, но пока та, что мне понятна. Если кто-то может на простом и понятном примере объяснить как организовать разграничение доступа на таблицы на уровне столбцов и строк, то буду очень благодарен.Хм... А покажите кусок кода хранимой процедуры, что у Вас проверяет права пользователя на select/insert/update/delete, на уровне столбцов и строк. P.S.: ссылку про NextResult посмотрели? Пока не смотрел, но посмотрю. Скоро буду реализовывать эту часть. Знаю, что возможно получение результатов от нескольких запросов. Куска на данный момент нет, скоро начну делать. Но уже понятно, что схема получиться сложной :( Приходиться изобретать велосипед, а не хочется :(. Время на проект ограниченно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2012, 11:47 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Testor1skyANAпропущено... Хм... А покажите кусок кода хранимой процедуры, что у Вас проверяет права пользователя на select/insert/update/delete, на уровне столбцов и строк. P.S.: ссылку про NextResult посмотрели? Пока не смотрел, но посмотрю. Скоро буду реализовывать эту часть. Знаю, что возможно получение результатов от нескольких запросов. Куска на данный момент нет, скоро начну делать. Но уже понятно, что схема получиться сложной :( Приходиться изобретать велосипед, а не хочется :(. Время на проект ограниченно. Ограничение на уровне строк - не абсолютно на все таблицы. К примеру определенным группам пользователей разрешить/запретить доступ на просмотр/редактирование данных для региона/города/района и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2012, 08:33 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
skyANATestor1, но если хочется именно через хп и несколько select-ов, то читай про извлечение нескольких результирующих наборов при помощи NextResult тут . Реализовал, но столкнулся с проблемой. В процедуре три селекта select1, select2, select3. NextResult - возвращает результаты запросов не в той последовательности в которой вызываются селекты. Почему? и как определить какой селект сработал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2012, 15:20 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Testor1skyANATestor1, но если хочется именно через хп и несколько select-ов, то читай про извлечение нескольких результирующих наборов при помощи NextResult тут . Реализовал, но столкнулся с проблемой. В процедуре три селекта select1, select2, select3. NextResult - возвращает результаты запросов не в той последовательности в которой вызываются селекты. Почему? и как определить какой селект сработал?Что значит не в той? А в какой? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2012, 15:28 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Testor1, код покажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2012, 15:29 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
skyANATestor1, код покажите. Сорри был занят. Старый код удалил. Напишу что делал. Сейчас же временно вызываю три процедуры. Нужно было срочно запустить функционал страницы :( Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: sql 1. 2. 3. В dtTable1 - попадали данные из table1. В dtTable2 - попадали данные из table3. В dtTable3 - попадали данные из table2. Структура таблиц разная. С помощью Debugger-а отследил, что данные в DataTable загружаются не в той последовательности в которой объявлены селекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 08:31 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
DataTable.Load Method (IDataReader) Remarks The Load method consumes the first result set from the loaded IDataReader, and after successful completion, sets the reader's position to the next result set, if any . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 12:13 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Кстати, может Вам заполнять DataSet из адаптера данных DataAdapter , раз уж Вы пользуетесь DataTable? :) Несколько результирующих наборов Если объект DataAdapter обнаруживает несколько результирующих наборов, то создает несколько таблиц в DataSet . Таблицы получают добавочное имя по умолчанию TableN, для Table0 начинающееся с «Table». Если имя таблицы передается в качестве аргумента методу Fill , то таблицы получают по умолчанию имя TableNameN с последовательно увеличивающимся суффиксом, но начиная с «TableName», а не с TableName0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 12:19 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
skyANA, Уже код адаптировал на DataSet. Тесты с несколькими селектами проведу в пятницу. Сейчас запарка. Спасибо за поддержку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 12:25 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Testor1, Почти все реализовал через dataset + tvp. Всем спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2012, 22:00 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
Testor1Где-то в степизачем тут процедура?..., две не связанные сущности, магазины и правила начисления, это все можно вытащить двумя запросами к двум таблицам ( магазины, и правила начисления) из-за безопасности и производительности все выборки и запросы на изменения делаю через процедуры жуть какая :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 19:52 |
|
||
|
Сложная форма
|
|||
|---|---|---|---|
|
#18+
EnomayTestor1пропущено... из-за безопасности и производительности все выборки и запросы на изменения делаю через процедуры жуть какая :) Ждем курсов MVC3 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2012, 09:53 |
|
||
|
|

start [/forum/topic.php?all=1&fid=18&tid=1359046]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
92ms |
get tp. blocked users: |
2ms |
| others: | 213ms |
| total: | 399ms |

| 0 / 0 |
