Primary Keys в базе данных Access
От: _ICE_ Украина  
Дата: 11.09.06 13:06
Оценка:
Каким образом можно получить список полей, имеющих Primary Key для базы данных Accessa. Проблема в том, что не могу получить доступ к таблице MSysObjects, сообщает что нет прав на доступ. Возможно есть какой-нибудь другой способ, или подскажите как получить доступ на чтение к МСисОбжектс (програмно).
Re: Primary Keys в базе данных Access
От: Бенедикт  
Дата: 11.09.06 13:39
Оценка:
Здравствуйте, _ICE_, Вы писали:

_IC>Каким образом можно получить список полей, имеющих Primary Key для базы данных Accessa. Проблема в том, что не могу получить доступ к таблице MSysObjects, сообщает что нет прав на доступ. Возможно есть какой-нибудь другой способ, или подскажите как получить доступ на чтение к МСисОбжектс (програмно).


Непонятно, зачем рисковать с версионно-зависимой системной таблицей, когда есть DAO с Indexes, есть ADO с Connection.OpenSchema(adSchemaPrimaryKeys, ...). Не ищем лёгких путей?
Кстати, не поля имеют Primary Key, а Primary Key имеет поля.
Re[2]: Primary Keys в базе данных Access
От: _ICE_ Украина  
Дата: 11.09.06 13:56
Оценка:
Здравствуйте, Бенедикт, Вы писали:

Не ищем лёгких путей?

Да, похоже что так оно и есть. Я програмить под Access начал на прошлой неделе, хотя в общем уже программирую больше 10 лет. Я уже кстати сам нашел решение через OleDB:

DataTable mySchema = myAccessConn.GetSchema("indexes");

Выдает очень развернутую картину всех индексов БД, в том числе и все ключи и органичения. А термины DAO, ADO для меня пока еще туманны, как в рекламе: ты мне мясо давай!
Re[3]: Primary Keys в базе данных Access
От: Бенедикт  
Дата: 11.09.06 14:54
Оценка:
Здравствуйте, _ICE_, Вы писали:

_IC>Здравствуйте, Бенедикт, Вы писали:


_IC>Не ищем лёгких путей?


_IC>Да, похоже что так оно и есть. Я програмить под Access начал на прошлой неделе, хотя в общем уже программирую больше 10 лет. Я уже кстати сам нашел решение через OleDB:


_IC>DataTable mySchema = myAccessConn.GetSchema("indexes");


_IC>Выдает очень развернутую картину всех индексов БД, в том числе и все ключи и органичения. А термины DAO, ADO для меня пока еще туманны, как в рекламе: ты мне мясо давай!


OleDB
"мясо", как оно бы выглядело в Access-е с использованием ADO (OLE DB):
Public Sub OpenSchemaX()
 'http://support.microsoft.com/kb/186246/

 Dim cn As ADODB.Connection
 Dim rsSchema As ADODB.Recordset
 Dim fld As ADODB.Field
 Dim rCriteria As Variant
 
 Set cn = CurrentProject.Connection 'либо

 'Pass in the table name to retrieve index info. The other
 'array parameters may be defined as follows:
 'PK_TABLE_CATALOG (first parameter)
 'PK_TABLE_SCHEMA  (second)
 'PK_TABLE_NAME    (third)
 rCriteria = Array(Empty, Empty, "MyTable")
 
 Set rsSchema = cn.OpenSchema(adSchemaPrimaryKeys, rCriteria)
 
 While Not rsSchema.EOF
       Debug.Print "==================================================="
 
    For Each fld In rsSchema.Fields
       Debug.Print fld.Name
       Debug.Print fld.Value
       Debug.Print "------------------------------------------------"
    Next
    rsSchema.MoveNext
 Wend
 
 rsSchema.Close
 Set rsSchema = Nothing
 cn.Close
 Set cn = Nothing
 Set fld = Nothing
End Sub
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.