Каким образом можно получить список полей, имеющих Primary Key для базы данных Accessa. Проблема в том, что не могу получить доступ к таблице MSysObjects, сообщает что нет прав на доступ. Возможно есть какой-нибудь другой способ, или подскажите как получить доступ на чтение к МСисОбжектс (програмно).
Здравствуйте, Бенедикт, Вы писали:
Не ищем лёгких путей?
Да, похоже что так оно и есть. Я програмить под Access начал на прошлой неделе, хотя в общем уже программирую больше 10 лет. Я уже кстати сам нашел решение через OleDB:
DataTable mySchema = myAccessConn.GetSchema("indexes");
Выдает очень развернутую картину всех индексов БД, в том числе и все ключи и органичения. А термины DAO, ADO для меня пока еще туманны, как в рекламе: ты мне мясо давай!
Здравствуйте, _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