powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Сложная форма
41 сообщений из 41, показаны все 2 страниц
Сложная форма
    #38023705
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет,

Есть задачка создать форму с несколькими закладками для возможности редактирования различных параметров на каждой из закладок.
Необходимо, чтобы изменения на форме сохранялись в базу только при нажатии Save на форме, а не при редактировании полей/таблиц на форме. Чтение параметров в форму и сохранение параметров нужно реализовать через stored procedure.


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


Для считывания параметров в одной процедуре можно сделать несколько select-ов.
Для записи в таблицы использовать tvp со значением из каждого грида формы ?
...
Рейтинг: 0 / 0
Сложная форма
    #38023845
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,

в чём вопрос?
...
Рейтинг: 0 / 0
Сложная форма
    #38023878
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pation,

То решение которое я описал - оно правильное? Если ли более оптимальное решение?
...
Рейтинг: 0 / 0
Сложная форма
    #38023892
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,
Вы озвучили только задачу, решения не вижу, вы какой технологией пользуетесь, озвучьте название орм, объясните
принцип разбиения на табсы (статичный - только для одного типа ( в рукопашную), или автоматический по маркерам полей - универсальный - для всех типов, чьи поля помечены маркером)
...
Рейтинг: 0 / 0
Сложная форма
    #38023898
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,
ну и вопрос про валидацию (с двойным кордоном) присовокупляю
...
Рейтинг: 0 / 0
Сложная форма
    #38023914
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степиTestor1,
Вы озвучили только задачу, решения не вижу, вы какой технологией пользуетесь, озвучьте название орм, объясните
принцип разбиения на табсы (статичный - только для одного типа ( в рукопашную), или автоматический по маркерам полей - универсальный - для всех типов, чьи поля помечены маркером)

Я пока не знаком со всеми терминами

Использую с# asp.net devExpress последний

Работа с базой идет только через stored procedures (xpo - технология).

Табы на форме статичны.

Для примера:

Основная форма настройка одной из акций
На таб1 - список магазинов, которые могут участвовать в акции
На таб2 - список правил по начислению бонусов при выполнении плана продаж

схема с магазинами и бонусами - это простая схема приведенная для примера. реальная схема намного сложнее.

но хотя бы на этом примере можно пояснить как реализовать функционал загрузки данных и сохранения изменений с помощью сторед процедуры?
...
Рейтинг: 0 / 0
Сложная форма
    #38023945
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,
Похоже вы не туда запостили ((.
...
Рейтинг: 0 / 0
Сложная форма
    #38023951
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем тут процедура?..., две не связанные сущности, магазины и правила начисления, это все можно вытащить двумя запросами к двум таблицам ( магазины, и правила начисления)
...
Рейтинг: 0 / 0
Сложная форма
    #38023963
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степизачем тут процедура?..., две не связанные сущности, магазины и правила начисления, это все можно вытащить двумя запросами к двум таблицам ( магазины, и правила начисления)

из-за безопасности и производительности
все выборки и запросы на изменения делаю через процедуры
...
Рейтинг: 0 / 0
Сложная форма
    #38024020
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1Где-то в степизачем тут процедура?..., две не связанные сущности, магазины и правила начисления, это все можно вытащить двумя запросами к двум таблицам ( магазины, и правила начисления)

из-за безопасности и производительности
все выборки и запросы на изменения делаю через процедуры

ну а что, от select * from 'sssss' ,можно чем нибудь заразиться, и чем его производительность ниже процедуры?
...
Рейтинг: 0 / 0
Сложная форма
    #38024046
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,
Почитайте про технологию ADO.net, там можно выполнять парамеризированые запросы,
...
Рейтинг: 0 / 0
Сложная форма
    #38024167
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1, СУБД-то хоть какая? Oracle, SQL Server, etc.?
...
Рейтинг: 0 / 0
Сложная форма
    #38024173
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи, безопасность видимо в том, что есть только GRANT EXECUTE...
То есть рядовой пользователь не сможет выполнить DELETE FROM SomeTable, но сможет выполнить процедуру DeleteSomething с определёнными параметрами, которая только флаг активности записи сбросит, а физически ничего не удалит.
...
Рейтинг: 0 / 0
Сложная форма
    #38024195
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
я бы мог с эти согласиться ( хотя эта тема не влазит в эту ветку)
но автор
1. на выборку предлагает использовать хп, с множественным селестом.
2 не имеет не малейшего представления о ado и провайдерах.
3 орм для него загадка.
4 проецирование выборки в объект замапленого типа тем более.
5 валидация на сервере так и на клиенте вообще не озвучена
хотя про инъекции я думаю что он слышал.
судя по истории, он вообще не нетчик, и тем более не asp, если не мог озвучить используемую технологию ( формс, или еще что там бывает)
...
Рейтинг: 0 / 0
Сложная форма
    #38024204
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степино автор
1. на выборку предлагает использовать хп, с множественным селестом.А что тут такого?
...
Рейтинг: 0 / 0
Сложная форма
    #38024208
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
да ничего, я толерантный к мазохизму, можно еще азбукой морзе вытащить, зато дороп никто через параметр не исполнит..
...
Рейтинг: 0 / 0
Сложная форма
    #38024209
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи, а в чём мазахизм? :)
...
Рейтинг: 0 / 0
Сложная форма
    #38024211
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAмаз о хизм
...
Рейтинг: 0 / 0
Сложная форма
    #38024213
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати дроп никто не исполнит, если GRANT SELECT давать только на представления (VIEW) :)
...
Рейтинг: 0 / 0
Сложная форма
    #38024215
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1, но если хочется именно через хп и несколько select-ов, то читай про извлечение нескольких результирующих наборов при помощи NextResult тут .
...
Рейтинг: 0 / 0
Сложная форма
    #38024217
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAКстати дроп никто не исполнит, если GRANT SELECT давать только на представления (VIEW) :)Сам не понял, что сказал. Устал. Вообщем ссылкО выше :)
...
Рейтинг: 0 / 0
Сложная форма
    #38024219
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAГде-то в степи, а в чём мазахизм? :)
а вы спроекцируйте десять курсоров на десять не связанных сущностей, а вы пользуетесь датасетом?... а тот кто придет после вас
...
Рейтинг: 0 / 0
Сложная форма
    #38024226
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиskyANAГде-то в степи, а в чём мазахизм? :)
а вы спроекцируйте десять курсоров на десять не связанных сущностей, а вы пользуетесь датасетом?... а тот кто придет после васПри чём тут датасет? Читайте хоть в консоль :)
...
Рейтинг: 0 / 0
Сложная форма
    #38024231
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И почему сущности не связаны? У ТС для примера на входе какая-то акция, на выходе магазины и правила, соответсвующие акции.
В реальности, говорит, что всё сложнее. Так что не надо делать поспешные выводы :)
...
Рейтинг: 0 / 0
Сложная форма
    #38024238
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
ну если они связаны, почему он применяет "несколько select-ов." а не мои любимые джойны?
...
Рейтинг: 0 / 0
Сложная форма
    #38024326
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С точки зрения простоты - конечно проще на самой старичке писать нужный select/insert/update/delete, НО если честно я не до конца смог разобраться как ограничивать права пользователей на разные таблицы (на уровне столбцов и строк). Более менее понятно, когда таблиц мало и связок между таблицами мало, а вот когда их много, то возникает куча вопросов. С точки зрении использования процедур - я создаю одну процедуру на N действий с основной таблицей и/или связанной таблицей. В начале тела процедуры проверяю права пользователя на select/insert/update/delete. Я не утверждаю, что это самая правильная схема, но пока та, что мне понятна.

Если кто-то может на простом и понятном примере объяснить как организовать разграничение доступа на таблицы на уровне столбцов и строк, то буду очень благодарен.
...
Рейтинг: 0 / 0
Сложная форма
    #38024332
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи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
...
Рейтинг: 0 / 0
Сложная форма
    #38024871
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1С точки зрения простоты - конечно проще на самой старичке писать нужный select/insert/update/delete, НО если честно я не до конца смог разобраться как ограничивать права пользователей на разные таблицы (на уровне столбцов и строк). Более менее понятно, когда таблиц мало и связок между таблицами мало, а вот когда их много, то возникает куча вопросов. С точки зрении использования процедур - я создаю одну процедуру на N действий с основной таблицей и/или связанной таблицей. В начале тела процедуры проверяю права пользователя на select/insert/update/delete. Я не утверждаю, что это самая правильная схема, но пока та, что мне понятна.

Если кто-то может на простом и понятном примере объяснить как организовать разграничение доступа на таблицы на уровне столбцов и строк, то буду очень благодарен.Хм... А покажите кусок кода хранимой процедуры, что у Вас проверяет права пользователя на select/insert/update/delete, на уровне столбцов и строк.

P.S.: ссылку про NextResult посмотрели?
...
Рейтинг: 0 / 0
Сложная форма
    #38024905
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANATestor1С точки зрения простоты - конечно проще на самой старичке писать нужный select/insert/update/delete, НО если честно я не до конца смог разобраться как ограничивать права пользователей на разные таблицы (на уровне столбцов и строк). Более менее понятно, когда таблиц мало и связок между таблицами мало, а вот когда их много, то возникает куча вопросов. С точки зрении использования процедур - я создаю одну процедуру на N действий с основной таблицей и/или связанной таблицей. В начале тела процедуры проверяю права пользователя на select/insert/update/delete. Я не утверждаю, что это самая правильная схема, но пока та, что мне понятна.

Если кто-то может на простом и понятном примере объяснить как организовать разграничение доступа на таблицы на уровне столбцов и строк, то буду очень благодарен.Хм... А покажите кусок кода хранимой процедуры, что у Вас проверяет права пользователя на select/insert/update/delete, на уровне столбцов и строк.

P.S.: ссылку про NextResult посмотрели?

Пока не смотрел, но посмотрю. Скоро буду реализовывать эту часть. Знаю, что возможно получение результатов от нескольких запросов.

Куска на данный момент нет, скоро начну делать. Но уже понятно, что схема получиться сложной :( Приходиться изобретать велосипед, а не хочется :(. Время на проект ограниченно.
...
Рейтинг: 0 / 0
Сложная форма
    #38025375
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Testor1skyANAпропущено...
Хм... А покажите кусок кода хранимой процедуры, что у Вас проверяет права пользователя на select/insert/update/delete, на уровне столбцов и строк.

P.S.: ссылку про NextResult посмотрели?

Пока не смотрел, но посмотрю. Скоро буду реализовывать эту часть. Знаю, что возможно получение результатов от нескольких запросов.

Куска на данный момент нет, скоро начну делать. Но уже понятно, что схема получиться сложной :( Приходиться изобретать велосипед, а не хочется :(. Время на проект ограниченно.

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

Реализовал, но столкнулся с проблемой.

В процедуре три селекта select1, select2, select3.

NextResult - возвращает результаты запросов не в той последовательности в которой вызываются селекты. Почему? и как определить какой селект сработал?
...
Рейтинг: 0 / 0
Сложная форма
    #38028818
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1skyANATestor1, но если хочется именно через хп и несколько select-ов, то читай про извлечение нескольких результирующих наборов при помощи NextResult тут .

Реализовал, но столкнулся с проблемой.

В процедуре три селекта select1, select2, select3.

NextResult - возвращает результаты запросов не в той последовательности в которой вызываются селекты. Почему? и как определить какой селект сработал?Что значит не в той? А в какой? :)
...
Рейтинг: 0 / 0
Сложная форма
    #38028820
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1, код покажите.
...
Рейтинг: 0 / 0
Сложная форма
    #38029626
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANATestor1, код покажите.

Сорри был занят. Старый код удалил.

Напишу что делал. Сейчас же временно вызываю три процедуры. Нужно было срочно запустить функционал страницы :(

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
reader = slqCmd.ExecuteReader();

DataTable dtTable1 = new DataTable();
dtTable1.Load(reader); 
reader.NextResult

DataTable dtTable2 = new DataTable();
dtTable2.Load(reader); 
reader.NextResult

DataTable dtTable3 = new DataTable();
dtTable3.Load(reader); 
reader.NextResult





Код: sql
1.
2.
3.
SELECT * FROM table1;
SELECT * FROM table2;
SELECT * FROM table3;



В dtTable1 - попадали данные из table1.
В dtTable2 - попадали данные из table3.
В dtTable3 - попадали данные из table2.

Структура таблиц разная. С помощью Debugger-а отследил, что данные в DataTable загружаются не в той последовательности в которой объявлены селекты.
...
Рейтинг: 0 / 0
Сложная форма
    #38029973
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 .
...
Рейтинг: 0 / 0
Сложная форма
    #38029989
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, может Вам заполнять DataSet из адаптера данных DataAdapter , раз уж Вы пользуетесь DataTable? :)
Несколько результирующих наборов
Если объект DataAdapter обнаруживает несколько результирующих наборов, то создает несколько таблиц в DataSet . Таблицы получают добавочное имя по умолчанию TableN, для Table0 начинающееся с «Table». Если имя таблицы передается в качестве аргумента методу Fill , то таблицы получают по умолчанию имя TableNameN с последовательно увеличивающимся суффиксом, но начиная с «TableName», а не с TableName0.
...
Рейтинг: 0 / 0
Сложная форма
    #38030004
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,

Уже код адаптировал на DataSet.
Тесты с несколькими селектами проведу в пятницу. Сейчас запарка.

Спасибо за поддержку.
...
Рейтинг: 0 / 0
Сложная форма
    #38037075
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Testor1,

Почти все реализовал через dataset + tvp.
Всем спасибо
...
Рейтинг: 0 / 0
Сложная форма
    #38040439
Enomay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Testor1Где-то в степизачем тут процедура?..., две не связанные сущности, магазины и правила начисления, это все можно вытащить двумя запросами к двум таблицам ( магазины, и правила начисления)

из-за безопасности и производительности
все выборки и запросы на изменения делаю через процедуры

жуть какая :)
...
Рейтинг: 0 / 0
Сложная форма
    #38040947
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
EnomayTestor1пропущено...


из-за безопасности и производительности
все выборки и запросы на изменения делаю через процедуры

жуть какая :)

Ждем курсов MVC3 :)
...
Рейтинг: 0 / 0
Сложная форма
    #38041552
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1Ждем курсов MVC3 :)
Почему не MVC 4?
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Сложная форма
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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