Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: НЕ могу редактировать прилинкованную таблицу!!!
 
 автор: ramon   (27.05.2008 в 17:15)   личное сообщение
 
 

Такая ситуация.
Есть mdb файл. Просто оболочка для MSSQL 2000. Я в MDB файле создал таблицу, прилинкованную к вьюшке на MSSQL. Но я не могу редактировать это таблицу в ACCESS.
Что нужно для этого сделать?

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

ВО вьюшке я просто делаю select * from table

  Ответить  
 
 автор: Анатолий (Киев)   (27.05.2008 в 17:35)   личное сообщение
 
 

ИМХО, вам надо в Аксе создать псевдоиндекс для уникального поля:
"CREATE UNIQUE INDEX ИмяИндекса ON ИмяВьюхи (ИмяПоля)"

  Ответить  
 
 автор: Ramon   (28.05.2008 в 09:34)   личное сообщение
 
 

При создании индекса выдает вот такую ошибку
Cannot create index on view 'ххх'. It does not have a unique clustered index.
ЧТо делать.
при попытке создать кластерный индекс ругается на то что есть поле типа ntext. думаю небезопасно просто поменять его тип на nvarchar. могут потерятся некоторые данные. я прав?

  Ответить  
 
 автор: Анатолий (Киев)   (28.05.2008 в 10:31)   личное сообщение
 
 

А вы указываете имя ключевого(уникального) поля?
Когда вы линкуете вьюху через меню, программа должна вам предлагать указать ключевое поле. Попробуйте повторить.

  Ответить  
 
 автор: Ramon   (28.05.2008 в 11:01)   личное сообщение
 
 

есть 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 на таблицу и на вьюху все права есть. а в аксесе может тоже надо какие то права гдето отдельно надо ставить?

  Ответить  
 
 автор: Ramon   (28.05.2008 в 14:12)   личное сообщение
 
 

срочно нужна помощь!
код создания 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)

что делать?!

  Ответить  
 
 автор: Ramon   (28.05.2008 в 19:09)   личное сообщение
 
 

проблема решена. оказалось дело было в том что у sql-таблицы а которую была построена sql-вьшка было 1но нулабл поле у которого не было задано default vaue(для нулабл полей его можно ) не задавать. объясните плз почему это вызывало данную ошибку!

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList