Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 MS SQL Server 2008 + MS Acces  [new]
Mr_RiddleR
Member

Откуда:
Сообщений: 11
Доброго времени суток, уважаемые дамы и господа.

Использую связку аксеса и сиквел сервера. Но суть вопроса не в этом и связки не касается в общем-то. А вопрос вот в чем:
Согласно мат. части, содержимое таблиц можно менять через представления, если представление использует данные исключительно из одной таблицы, НО по какой-то непонятной мне причине при подключении к БД через аксес, изменить представление попросту НЕЛЬЗЯ, пробовал для теста специально создать таблички, использующие соединения. То есть одна табличка получается соединением двух, и на основании этой таблички строится представление. Через аксес - тестовое представление свободно изменяется, записи добавляются - все нормально, а вот в когда применяю это на моей БД - шиш, Подскажите, пожалуйста, в чем может быть проблема? Делаю БД по телефонным номерам. Вся база нормализована, разбита, спроектирована, все как полагается. Если нужна схема - скину.
10 окт 13, 07:49    [14948300]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
aleks2
Guest
Mr_RiddleR
Согласно мат. части, содержимое таблиц можно менять через представления, если представление использует данные исключительно из одной таблицы

То есть одна табличка получается соединением двух, и на основании этой таблички строится представление.

Это утрениий бред штоле?

Вспоминая былое...

1. Шоб аксесс мог UPDATE-ить View из нескольких таблиц нужно чтобы View включало PK/UNIQUE поле из КАЖДОЙ таблицы представления. И использовало исключительно INNER JOIN.

2. Шоб аксесс мог INSERT-ить View из нескольких таблиц нужно чтобы выполнялся п.1 + указать Unique Table в свойствах формы аксесс.
10 окт 13, 08:01    [14948308]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
Mr_RiddleR
Member

Откуда:
Сообщений: 11
http://technet.microsoft.com/ru-ru/library/ms187956.aspx

Цитата:
Обновляемые представления
Можно изменять данные базовой таблицы через представление до тех пор, пока выполняются следующие условия:
Любые изменения, в том числе инструкции UPDATE, INSERT и DELETE, должны ссылаться на столбцы только одной базовой таблицы.
10 окт 13, 08:11    [14948327]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
aleks2
Guest
Mr_RiddleR
http://technet.microsoft.com/ru-ru/library/ms187956.aspx

Цитата:
Обновляемые представления
Можно изменять данные базовой таблицы через представление до тех пор, пока выполняются следующие условия:
Любые изменения, в том числе инструкции UPDATE, INSERT и DELETE, должны ссылаться на столбцы только одной базовой таблицы.


Теоретег-читатель? Ну, читай дальше.

А лучше - иди учись. Ибо ты цитируешь требования MS SQL к обновляемости VIEW.
А аксесс - это отдельная песня. У него свои представления о представлениях.
10 окт 13, 08:25    [14948342]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
qwerty112
Guest
Mr_RiddleR,

вьюха - прилинкованная в mdb/accdb ? или речь про adp проект Акцесса ?
10 окт 13, 08:32    [14948351]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
Mr_RiddleR
Member

Откуда:
Сообщений: 11
Итак, тогда по порядку.

Изначально был экселевский файлик, в котором хранилась инфа:
1) Собственно, сам номер выделенной линии;
2) Организация, которой предоставлен номер;
3) Подразделение, к которому номер относится;
4) Тип выделенной линии (цифра, аналог);
5) Количество доп линии по этому номеру.

Вся эта байда импортится в сиквел и кладется в табличку tel (см. скрин)

Далее эта табличка разбивается на словари: сами номера, организации, подразделения, типы линии. Также в БД предусмотрена табличка, ведущая лог всех переходов номеров (освобождение, смена владельца и т.д.).
На скрине есть табличка Action - это словарь возможных действий с номером (смена владельца, освобождение и т.д.), только самой таблички Num_log нету - но это не суть.
Все разбиваю на словари, все красиво. НО, создаю представление ака полная выборка из таблицы Busy_numbers. Задумка какая была -меняя данные в этом представлении надо чтоб БД меняла таблицу Busy_numbers. Но вот что-то нихурма не получается.

Спорить не буду, я нуб-нубом, но вот товарищи по типу aleks2 попросту бесят, ибо умничают не по теме, ничем в сути не помогая.
Юзается аксес проджект, товарищ кверти правильно заметил - это я упустил указать. И вот что-то мне подсказывает представления о представлениях сиквела поглавнее будут, нежели аксесовское понимание вьюзов, т.к. по логике вещей отрабатывает всю БД именно сиквел - а аксес в данном случае по сути всего лишь ГУИ.
Так что УБЕДИТЕЛЬНАЯ ПРОСЬБА, желающих поумничать и посамоутверждаться за счет незнающих, но желающих узнать, ИДИТЕ В ЛЕС!

К сообщению приложен файл. Размер - 74Kb
10 окт 13, 08:58    [14948415]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
Mr_RiddleR
Member

Откуда:
Сообщений: 11
И после изменений таблицы бизи_намбаз по идее должна срабатывать триггеры, которые будут уже при необходимости изменять данные в словарях и других таблицах. Главное - организовать изменения в бизи_намбаз
10 окт 13, 09:03    [14948429]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
aleks2
Guest
Mr_RiddleR
Спорить не буду, я нуб-нубом, но вот товарищи по типу aleks2 попросту бесят, ибо умничают не по теме, ничем в сути не помогая.


aleks2
Вспоминая былое...

1. Шоб аксесс мог UPDATE-ить View из нескольких таблиц нужно чтобы View включало PK/UNIQUE поле из КАЖДОЙ таблицы представления. И использовало исключительно INNER JOIN.

2. Шоб аксесс мог INSERT-ить View из нескольких таблиц нужно чтобы выполнялся п.1 + указать Unique Table в свойствах формы аксесс.


Ээээ, дарагой чукча-писатель, модераторы могут не восхититься.
Да и вопще, неспособность прочитать и понять - это твоя проблема.
10 окт 13, 09:04    [14948432]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
qwerty112
Guest
Mr_RiddleR,

у тебя на схеме есть таблицы без ПК,
если какая-нибудь из них используется во вью - то уже будет "не гуд"

код вью покажи
как пытаешся редактировать - программно или через интерфейс Акс-а ?
и в чём выражается "нередактируемость" ? ошибка или в интерфейсе Акс-а, "таблица" для вью с залоченной кнопкой перехода на новую запись ?
10 окт 13, 09:07    [14948452]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
Mr_RiddleR
Member

Откуда:
Сообщений: 11
qwerty112,
Да в том то и прикол весь, что вью:

CREATE VIEW it_doesn't_matter
AS
SELECT * FROM Busy_numbers

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

Напрямую в сиквеле поменять скриптом или едитом - не вопрос, и таблицу и вью, а вот именно в аксесе - залочена кнопка добавления новой записи, и изменения не отображаются, как в табличке, так и в представлении, хоть и под и главной учеткой коннект к БД через аксес. Сообщений и алертов нигде никаких не выводится. Но, если брать проверочные таблички небольшие с аналогичными по принципу условиями и создать результирующий вью - через аксес все хорошо меняется и добавляется во вью. Может тут где-то собака зарылась в связи с тем, что изначальная табличка tel раскладывалась по словарям скриптом, а не как в случае с тестовыми таблицами при помощи ручек?
10 окт 13, 09:37    [14948584]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
qwerty112
Guest
Mr_RiddleR
НО, создаю представление ака полная выборка из таблицы Busy_numbers. Задумка какая была -меняя данные в этом представлении надо чтоб БД меняла таблицу Busy_numbers.

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

в Аксе, всё решается значительно проще - форма на таб.Busy_numbers с полями подстановки на соотв.справочниках.

зы
и, касательно ПК таблиц - в силе.
10 окт 13, 09:39    [14948593]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
qwerty112
Guest
Mr_RiddleR
Напрямую в сиквеле поменять скриптом или едитом - не вопрос, и таблицу и вью, а вот именно в аксесе - залочена кнопка добавления новой записи, и изменения не отображаются, как в табличке, так и в представлении, хоть и под и главной учеткой коннект к БД через аксес.

это из-за того, что у таблицы нет ПК

а скриптом/запросом - и из Акцесса будет редактироваться
НО - не через ГУЙ
10 окт 13, 09:42    [14948602]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
aleks2
Guest
Mr_RiddleR
, я так понимаю, нету резона тут юзать ключ, ибо объем данных гонятся будет один и тот же.


Аксесс имеет иное мнение.
Все таблички БЕЗ PK или UNIQUE для Аксесс необновляемы.
10 окт 13, 09:43    [14948605]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
П-Л
Guest
Автор явно не описал, АДП у него или же МДБ. Сказанное ниже будет относиться к АДП.

Редактируемость в аксесе данных скл сервера зависит от многих факторов.

1. Как правильно заметили, в таблицах должен быть ПК. Вопрос редигиозной веры, могут ли использоваться несуррогатные ключи - я верую что нет.
2. При сборке запроса звезды или снежинки надо начинать с самой детальной таблицы, брать из нее все ПК и ФК. Через ФК джоинить таблицы справочников, из которых тоже забирать нужные поля (Причем ПК брать не нужно, он уже ест как ФК детальной таблицы).
3. Полученный запрос должен быть редактируемым в аксесе.

4. А дальше начинается засада с редактированием данных через форму, опирающуюся на запрос. Формат АДП был введен на связке А2000 + СКЛ2000. На связке А2003 + СКЛ2000 все тоже работало хорошо. На связке А2003 + СКЛ2005 ворзникают проблемы с редактированием многотабличных вью из-за чего приходится понижать уровень совместимости базы на сервере до 2000. Т.е. новыми возможностями т-скл пользоваться нельзя. А2007 + СКЛ2005/2008/(2012?) ведет себя так же. В А2010 возникла новая проблема - формы на многотабличных представлениях не позволяют добавлять новые записи, если таблицы-справочники, приджоиненные к таблице фактов, имеют ПК автосчетчики. По ней даже писали в микрософт, те посоветовали не использовать такие представления для форм или уйти с аксеса на студию.

Вопщем все идет как ожидаемо - микрософт похоронили адп и формально и фактически.
10 окт 13, 09:43    [14948606]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
aleks2
Guest
П-Л
Автор явно не описал, АДП у него или же МДБ.


Mr_RiddleR
Юзается аксес проджект
ИДИТЕ В ЛЕС!


ЗЫ. П-Л, ты грузишь тредстартера знаниями, до которых он просто не дорос.
10 окт 13, 09:46    [14948618]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
П-Л
Guest
Mr_RiddleR
1 и как бы, я так понимаю, нету резона тут юзать ключ, ибо объем данных гонятся будет один и тот же.

2 Может тут где-то собака зарылась в связи с тем, что изначальная табличка tel раскладывалась по словарям скриптом, а не как в случае с тестовыми таблицами при помощи ручек?

1 Я верую, что таблица без ПК не имеет права на существовании. И асксес тоже.
2 Способ создания и наполнения таблицы не имеет никакого значения.
10 окт 13, 09:47    [14948623]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
П-Л
Guest
Mr_RiddleR
Юзается аксес проджект, товарищ кверти правильно заметил - это я упустил указать. И вот что-то мне подсказывает представления о представлениях сиквела поглавнее будут, нежели аксесовское понимание вьюзов, т.к. по логике вещей отрабатывает всю БД именно сиквел - а аксес в данном случае по сути всего лишь ГУИ.


Формат файла какой ? Таблица прилинкованы или нет ?

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

Посмотрите общение аксеса с сервером профайлером - будет очень полезно.
10 окт 13, 09:54    [14948647]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
Mr_RiddleR
Member

Откуда:
Сообщений: 11
У меня получается связка сервака 2008 обычного, Т.е. НЕ Р2, + 2010 версия оффиса, именно АДП.
Но по прочитанному допираю, что фурычить не будет из-за новизны версий, тогда вопрос такого плана - существует ли автосчетчик в сиквеле НЕ айдентити (Если я правильно понял - это вырожденец новых версий, из-за чего и будет косипорить), полагаю, что и тут ожидает фэйл... Тогда бы попросту нашли умные дяди способ обхода этого косяка.... Откат версий в моем случае - не вариант, ибо лицухи на конторе только на 2008 сервак и оффис 2010.

qwerty112

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

ОКе, попробуемс навесить ПК в табличку бизи_намбаз - посмотрим что получится, и на крайняк выделю доп линии ака отдельную сущность и тоже посмотрим что будет.

Всем большое спасибо, напишу как прошло тестирование. И даже алексу2 спасибо =) Хоть и не сказал он самого главного, что на табличке ДОЛЖЕН БЫТЬ первичник САМОЙ таблички, а не соединяемых, коего в моем случае нет, ибо табличка - простое соединение других первичников.

Но в общем и целом я вижу такой вывод - научного интереса для мы все это, конечно, затестим, но в итоге, придется выкинуть АДП, и крутить эту бд куда-нибудь на АПАЧ или ИИС, либо писать ГУИ на каких-нибудь сях, тогда можно будет напрямую обращаться запросами, а не хитрозадыми вывертами.

Просто еще сложность данного действа в том, что организация распределенная, даже тут группа организаций - т.е. у меня, допустим на серваке лежит результирующая БД, другие организации, которым предоставляются номера находятся в разных местах по региону, и получается, нужно, чтобы каждый человек, отвечающий за ведение учета принадлежности номеров по своей организации мог изменять только номера непосредственно его организации. В принципе существуют еще свободные номера, но по пределам нумерации они заранее зарезервированы за определенной организацией. И тут уже по идее начинается проверка пользователя на пермишены. Сложновато в текст уложить всю специфику задания, но это мой первый проект такого масштаба, а с сиквелом я раньше дела толком не имел, только с MySQL.
И все же, неужели вердикт - в помойку всю эту байду с АДП и меняем платформу с сохранением ядра БД?
10 окт 13, 10:19    [14948768]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
aleks2
Guest
Mr_RiddleR
И даже алексу2 спасибо =) Хоть и не сказал он самого главного, что на табличке ДОЛЖЕН БЫТЬ первичник САМОЙ таблички, а не соединяемых, коего в моем случае нет, ибо табличка - простое соединение других первичников.


aleks2
1. Шоб аксесс мог UPDATE-ить View из нескольких таблиц нужно чтобы View включало PK/UNIQUE поле из КАЖДОЙ таблицы представления. И использовало исключительно INNER JOIN.



Чукча, всеж НЕ читатель.
10 окт 13, 10:23    [14948790]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
aleks2
Guest
Mr_RiddleR
И все же, неужели вердикт - в помойку всю эту байду с АДП и меняем платформу с сохранением ядра БД?


При таком подходе и таких знаниях ничо не спасет.
10 окт 13, 10:25    [14948801]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
Mr_RiddleR
Member

Откуда:
Сообщений: 11
aleks2
Mr_RiddleR
, я так понимаю, нету резона тут юзать ключ, ибо объем данных гонятся будет один и тот же.


Аксесс имеет иное мнение.
Все таблички БЕЗ PK или UNIQUE для Аксесс необновляемы.


Дык, тут ключ имелся ввиду от кол-ва доп линии, то есть на предмет чего просто выносить в отдельную сущность Доп Линии в которой АЙДИ, он же ПК будет равен собственно значению - то бишь количеству доп. линий. Мы с вами на каких-то разных языках разговариваем...
10 окт 13, 10:27    [14948821]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
qwerty112
Guest
Mr_RiddleR
qwerty112

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

я чёт, после этой фразы, подозреваю, что ты не знаешь, что ПК можно сделать составной, из нескольких полей таблицы ? так ?
необязательно вводить ещё одно поле для ПК - сделай его на комб.полей - {ID_num, ID_dep, Line_type_id}

зы
и оооочень плохая "практика", когда ПК и ФК - называются поразному
10 окт 13, 10:29    [14948835]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
Glory
Member

Откуда:
Сообщений: 104751
Mr_RiddleR
Дык, тут ключ имелся ввиду от кол-ва доп линии, то есть на предмет чего просто выносить в отдельную сущность Доп Линии в которой АЙДИ, он же ПК будет равен собственно значению - то бишь количеству доп. линий. Мы с вами на каких-то разных языках разговариваем...

PrimaryKey должен быть физическим, а не логическим
10 окт 13, 10:31    [14948853]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
Mr_RiddleR
Member

Откуда:
Сообщений: 11
qwerty112
Mr_RiddleR
qwerty112

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

я чёт, после этой фразы, подозреваю, что ты не знаешь, что ПК можно сделать составной, из нескольких полей таблицы ? так ?
необязательно вводить ещё одно поле для ПК - сделай его на комб.полей - {ID_num, ID_dep, Line_type_id}

зы
и оооочень плохая "практика", когда ПК и ФК - называются поразному


Хм... Спасибо, однако... Об этом я, честно говоря, даже и не подумал. Что существуют составные ключи, знать-то знаю, но вот на практике ни разу не применял. Спасибо за совет. Попробуем такой ход.

aleks2,

А если не пытаться разобраться и не задавать вопросы - знания и не появятся никогда, как будто вы вот родились и сразу за все законы физики, химии и математики в курсе были? Респект таким людям как qwerty112 и тем, кто не обламался объяснить что к чему, НЕ респект, когда говорят "ты тупой и тебе ничего не поможет". Так что будьте добры, сделайте соответствующие выводы. И ведите себя подобающе. Сами себе потом спасибо за это скажите.
10 окт 13, 10:44    [14948958]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 + MS Acces  [new]
Mr_RiddleR
Member

Откуда:
Сообщений: 11
Glory
Mr_RiddleR
Дык, тут ключ имелся ввиду от кол-ва доп линии, то есть на предмет чего просто выносить в отдельную сущность Доп Линии в которой АЙДИ, он же ПК будет равен собственно значению - то бишь количеству доп. линий. Мы с вами на каких-то разных языках разговариваем...

PrimaryKey должен быть физическим, а не логическим


Это как?
10 окт 13, 10:45    [14948971]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить