Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Имя таблицы как параметр запроса


Страницы:   1 2 3 4

StriderMan ©   (2006-08-02 20:19:00) 

Нужно написать хранимую процедуру, которая будет работать сразу для нескольких таблиц.

Можно ли как-то передать в запрос имя таблицы?


StriderMan   (2006-08-04 15:44:00) [21]


> stud ©   (04.08.06 15:34) [56]
> так если поле код уникальное, что прописано на сервере,
> в чем проблема что туда будет вводить пользователь? сервер
> в любом случае дубль не пропустит. и зачем тут предварительные
> селекты?
> а связь по этому коду совсем не нужна, только по внутреннему
> скрытому от пользователя ид.

Связей по нему и нет. А конкретная проблема при изменении кода описана тут [26], [28].


Sergey13   (2006-08-04 15:41:00) [22]

Читаю-читаю, и все больше мне задача кажется странной. Кому нафиг нужны коды, которые меняются местами?!!! Сегодня карандаш 13-й, линейка 15-я. Завтра наоборот. Зачем? Или таки я не понял смысла сего.


stud   (2006-08-04 15:34:00) [23]

StriderMan ©   (04.08.06 12:07) [53]
Так я и говорю об этом. Разумеется в таблицах есть поле ID которое пользователю недоступно, также как в 1С. Но я говорю о поле код, которое в том же 1С уникально, и доступно пользователю.

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


jiny   (2006-08-04 14:01:00) [24]

У меня это все прекрасно работает, пользователей приучил что ID - это уникальный идентификатор, который генерит сервер, и который ни в коем разе нельзя поменять никому, даже мне, также есть поле ID_doc, где также генериться сервером какой-нить номер накладной и которое пользователь может поменять(причем id сделки фиксируется мелким шрифтом на наряде на укомплектацию и на самой накладной, и никому это не мешает), причем чтобы не было путанницы, пользователи всегда ориентируются по номеру сделки (ID), даже если номер накл.изменен


paul_k   (2006-08-04 12:32:00) [25]

> [51] Babay ©   (04.08.06 10:51)

низя.... Безопасность так построена.


StriderMan   (2006-08-04 12:07:00) [26]


> sniknik ©   (03.08.06 19:48) [43]
> > задачи товароучета сложно решать без возможности изменения
> идентификатора товара (кода, артикула, штрих-кода).
> хм...
> позвольте поинтересоваться, а вы с 1С знакомы?
> если знакомы то должны знать, в 1С поле идентифицирующее
> запись, не только поменять, посмотреть нельзя... а то что
> вы видите, и меняете, оно вторично... (потому и можно)

Так я и говорю об этом. Разумеется в таблицах есть поле ID которое пользователю недоступно, также как в 1С. Но я говорю о поле код, которое в том же 1С уникально, и доступно пользователю.


ANB   (2006-08-04 12:03:00) [27]


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

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

Решение простое - для связок и ПК использовать искуственные ключи, которые генерятся автоматически и пользователь не может их менять (вопрос просмотра - дискуссионный), а внешние коды можно забивать в отдельные поля. И пусть пользователь делает с ними, что хочет. Главное, контролировать их с точки зрения бизнес-логики (например запрет дублей).


Babay   (2006-08-04 10:51:00) [28]

ТО paul_k ©  
В MS SQL есть такая штука как представление, пользователю даем права на селект из представления и делаем это в процедуре, а в представление пихаем что нужно и как нужно....
Если я все правильно понял это должно тебя спасти....


paul_k   (2006-08-04 09:41:00) [29]

> [48] Anatoly Podgoretsky ©   (03.08.06 22:33)

Большое спасибо.Попробовал. и так попробовал и сяк попробовал и наперекосяк... :)))
А смысл перестановки, если в разруливании доступа дело?
предвиху вопрос задача мол идиотская, и нафиг тебе это не нужно
задача получить отчет о рыночной стоимости активов
есть тип актива (валюта, ЦБ, драгметалы, недвижимость)
соответственно есть "котировки" активов лежат в разных таблицах ибо это абсолютно разные сущности
соответсвенно можно писать кучу условий по разным типам активов. Что при добавлении нового типа активов ведет к переписыванию отчета.
А можно добавить настройку вида  [тип актива], [имя таблицы котировок] [имя поля котировки]. И тогда придобавлении нового актива достаточно добавить запись в эту настройку и все.
Но у простого смертноко пользователя правов на запрос не может быть. Политики безопасности, мать их
И что делать? механихм динамического формирования запроса есть а как его применить то?


Petr V. Abramov   (2006-08-03 23:49:00) [30]

> Anatoly Podgoretsky ©   (03.08.06 22:33) [48]
 разница даже мне видна :)))


Anatoly Podgoretsky   (2006-08-03 22:33:00) [31]

paul_k ©   (03.08.06 21:50) [46]
Попробуй так
declare @t_name varchar(30)
declare @sql varchar(40)
set @t_name = 'authors'
set @sql = 'select * from '+@t_name
exec (@sql)


Petr V. Abramov   (2006-08-03 22:13:00) [32]

> и как с этим правильно жить и работать?
 я mssql не знаю, но что ты не в ту ветку вопрос задал - уверен :))))


paul_k   (2006-08-03 21:50:00) [33]

а будет вот что
SELECT permission denied on object 'authors', database 'pubs', owner 'dbo'.

и как с этим правильно жить и работать? права на прямой запрос дать нельзя. все данные выбирать положено только через процедуры


paul_k   (2006-08-03 21:43:00) [34]

Уважаемые господа. просвятите пожалуйста что будет в результате исполнения следующего кода на MsSql сервере и как с этим боротся.
у паблика прав на селект из таблийц нету. есть только на выполнение процедур
есть процедура с кодом
...
declare @t_name varchar(30)
set @t_name = 'authors'
exec ('select * from '+@t_name)
....
будет ли она работать под пабликом, у которого нет прав на выборку данных из таблицы authors?


Petr V. Abramov   (2006-08-03 19:56:00) [35]

> Dok   (03.08.06 19:34) [42]
> почему пользователь его вообще меняет?
 потому что в общем случае он его вводит и может ошибиться. Системы кодировки могут быть достаточно хитрыми. К примеру, чаще всего выписываемый товар должен иметь короткий и простой код, типа 111, а другие - подлинне.


sniknik   (2006-08-03 19:48:00) [36]

> задачи товароучета сложно решать без возможности изменения идентификатора товара (кода, артикула, штрих-кода).
хм...
позвольте поинтересоваться, а вы с 1С знакомы?
если знакомы то должны знать, в 1С поле идентифицирующее запись, не только поменять, посмотреть нельзя... а то что вы видите, и меняете, оно вторично... (потому и можно)


Dok   (2006-08-03 19:34:00) [37]


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

почему нужно уменьшать код?
почему пользователь его вообще меняет?


Petr V. Abramov   (2006-08-03 19:34:00) [38]

> 1. узнаем, есть ли запись со значением поля, которое нам надо выставить в текущей записи.
 А в это время висит транзакция, которая запись с таким значением только что вставила. Т.к. сия транзакция еще не завершена, узнаем, что записи нет.
2. Начинаем действовать исходя из этого. Пока действуем, нехорошая транзакция коммитится.
3. Сильно удивляемся.

 Если кто подумает,что это "маловероятно" - законы Мерфи имеют приоритет над законами больших чисел. Electronically tested, как пишут на презрвативах.


StriderMan   (2006-08-03 19:15:00) [39]


> И нехрен пользователю их менять

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


Ega23   (2006-08-03 18:48:00) [40]


> вы с 1С знакомы?


Нет.


> это поле называет КОД. Это код элемента в справочнике. Некий
> уникальный идентификатор, ПОНЯТНЫЙ и доступный пользователю.
>  


Я такие поля сам генерю. И нехрен пользователю их менять.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо