|
|
|
| Такая ситуация.
Есть mdb файл. Просто оболочка для MSSQL 2000. Я в MDB файле создал таблицу, прилинкованную к вьюшке на MSSQL. Но я не могу редактировать это таблицу в ACCESS.
Что нужно для этого сделать?
А почему же прилиновался к вьюшке? Потомучто когда я линкуюсь к таблице, то при апдейте вылетает сообщение, что запись была изменена. И не дает апдейтить. Это стало происходить после того, как я добавил в эту таблицу поле типа VARCHAR(50).
ВО вьюшке я просто делаю select * from table | |
|
| |
|
|
|
| ИМХО, вам надо в Аксе создать псевдоиндекс для уникального поля:
"CREATE UNIQUE INDEX ИмяИндекса ON ИмяВьюхи (ИмяПоля)" | |
|
| |
|
|
|
| При создании индекса выдает вот такую ошибку
Cannot create index on view 'ххх'. It does not have a unique clustered index.
ЧТо делать.
при попытке создать кластерный индекс ругается на то что есть поле типа ntext. думаю небезопасно просто поменять его тип на nvarchar. могут потерятся некоторые данные. я прав? | |
|
| |
|
|
|
| А вы указываете имя ключевого(уникального) поля?
Когда вы линкуете вьюху через меню, программа должна вам предлагать указать ключевое поле. Попробуйте повторить. | |
|
| |
|
|
|
| есть sql вьюха а линкование происходит в коде VB
Set MyTable = dbs.CreateTableDef("view_name") - имя создаваемого объекта в аксесе
'MyTable.Connect = "connection_string"
MyTable.Connect = cConn
MyTable.SourceTableName = "view_name" имя sql-ного датасорса
dbs.TableDefs.Append MyTable
dbs.TableDefs.Refresh
после такого когда у нас в объектах аксеса есть вьюха - копия sql-ной однако в ней как я уже
писал ранее нельзя применять изменения.
пробдему с типов решил. индекс создал. все равно вьюха в аксесе не позволяет применять изменения. но уже не просто не меняет а выдает ошибку. вот что по этой ошибке есть в справке
ODBC - обновление для присоединенной (связанной) таблицы <имя> не выполнено. (Ошибка 3157)
Попытка с помощью подключения ODBC обновить данные в базе данных ODBC; невозможно завершение этой операции обновления.
Возможные причины:
Обновление данных приводит к нарушению условий на значения.
База данных ODBC доступна только для чтения, или пользователь не имеет разрешения на обновление данных в этой базе данных. Измените условие «только для чтения» или обратитесь к администратору или владельцу базы данных для получения прав на создание таблиц.
База данных ODBC находится на сетевом диске, подключение к которому отсутствует. Проверьте, что сеть доступна, и повторите операцию.
может нет каких то прав? на sql на таблицу и на вьюху все права есть. а в аксесе может тоже надо какие то права гдето отдельно надо ставить? | |
|
| |
|
|
|
| срочно нужна помощь!
код создания sql вьюхи
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE VIEW dbo.viewName
With SCHEMABINDING
AS
SELECT tableName.fieldName1,
tableName.fieldName2,
..............................
FROM dbo.tableName
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
|
создается вьюха. на стороне сервера с ней можно прекрасно работать. далее при запуске аксес проекта выполняется скрипт по созданию определенных аксес таблиц.то есть для нашей sql вьюшки создается аналог - аксес вьюшка
Set MyTable = dbs.CreateTableDef("view_name") - имя создаваемого объекта в аксесе
'MyTable.Connect = "connection_string"
MyTable.Connect = cConn
MyTable.SourceTableName = "view_name" имя sql-ного датасорса
dbs.TableDefs.Append MyTable
dbs.TableDefs.Refresh
|
с этой вьюшкой уже работать нельзя. она не позволяет апдетить\удалять данные.
при создании на sql-вьюшку уникаьного индекса
create unique clustered index имяИндекса on имяВью (имяКолонки(первичный ключ в таблице на которую создан sql-вью))
|
ситуация меняется.
он уже как бы разрешает менять данные но не позволяет это сделать потому что "таблица ридонли". выдает следующую ошибку
ODBC--update on a linked table 'viewName' failed
[Microsoft][ODBC SQL Server Driver][SQL Server] UPDATE failed because the following SET options have incorrect settings: 'ARITHABORT'. (#1934)
что делать?! | |
|
| |
|
|
|
| проблема решена. оказалось дело было в том что у sql-таблицы а которую была построена sql-вьшка было 1но нулабл поле у которого не было задано default vaue(для нулабл полей его можно ) не задавать. объясните плз почему это вызывало данную ошибку! | |
|
| |