Страница: 1 |
Страница: 1 |
Вопрос: Access: как достать свойство???
Добавлено: 03.09.04 15:52
Автор вопроса: Barulya
Народ, подскажите пожалуйста, как установить и получить значение свойства, которое задается вручную через "Файл/Свойство базы данных/Прочие". Мне необходимо получить значение свойства средствами программирования не из под оболочки Access.
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 03.09.04 17:26
В MS Access есть скрытые служебные таблицы. Возможно, необходимые
сведения там.
Номер ответа: 2
Автор ответа:
Oleg K
Вопросов: 15
Ответов: 72
Профиль | | #2
Добавлено: 03.09.04 22:54
Я недавно бился с похожей проблемой.
Меня интересовали свойства файла, которые через Explorer --> Свойства --> Сводка.
Это почти то, что тебе надо.
Средствами .NET - это не возможно.
Самое простое (возможно не самое удобное) средство, использование dsofile.dll. Из неудобств - эта dll = COM. Если это тебя не смущает, тогда глянь на ее функционал.
Почитай тут:
http://vbnet.ru/forum/show.aspx?id=49679
dsofile.dll умеет записывать в свойства файла пользовательские параметры и естественно считывать их. Но некоторые свойства ReadOnly.
Ну вобщем посмотри может это тебя выручит...
Номер ответа: 3
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #3
Добавлено: 05.09.04 17:48
А что конкретно тебя интересует
Номер ответа: 4
Автор ответа:
Barulya
Вопросов: 29
Ответов: 55
Профиль | | #4
Добавлено: 06.09.04 10:35
2 Oleg_K
Спасибо, задача у меня аналогична той, что была у тебя, но где взять библиотеку???
Номер ответа: 5
Автор ответа:
Barulya
Вопросов: 29
Ответов: 55
Профиль | | #5
Добавлено: 06.09.04 18:43
2 Oleg_K
Дело в том, то я не хочу использовать ActiveX контролы, можно как-нибудь без них????
Номер ответа: 6
Автор ответа:
Barulya
Вопросов: 29
Ответов: 55
Профиль | | #6
Добавлено: 06.09.04 18:47
2 WaX
Возможность записывать и использовать свойства.
Номер ответа: 7
Автор ответа:
Barulya
Вопросов: 29
Ответов: 55
Профиль | | #7
Добавлено: 07.09.04 11:29
Попробовал использовать dsofile.dll, в принципе-то вещь не плохая, но при работе с Access-объектами отказывается работать (пробовал с Word-документами- получалось). Может есть другое решение???
Номер ответа: 8
Автор ответа:
Barulya
Вопросов: 29
Ответов: 55
Профиль | | #8
Добавлено: 07.09.04 12:03
При попытке достать свойства базы данных выдает ошибку:
An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in missing.exe
Additional information: The file you have selected has no document properties.
Номер ответа: 9
Автор ответа:
Barulya
Вопросов: 29
Ответов: 55
Профиль | | #9
Добавлено: 07.09.04 19:22
Ура нашел, оказывается эти свойства можно достать только через DAO 3.6, я переделал функции для своего приложения, кому интересно:
Function SetCustomProperty(ByVal dbAccessPath As String, ByVal strPropName As String, ByVal strPropValue As Object) As Boolean
SetCustomProperty = False
 im dbe As New DAO.DBEngineClass()
 im dbs As DAO.Database, cnt As DAO.Container
 im doc As DAO.Document, prp As DAO.Property
Const conPropertyNotFound = 3270 ' Property not found error.
dbs = dbe.OpenDatabase(dbAccessPath)
' Define Database object.
cnt = dbs.Containers!Databases ' Define Container object.
doc = cnt.Documents!UserDefined ' Define Document object.
On Error GoTo SetCustom_Err
doc.Properties.Refresh()
' Set custom property name. If error occurs here it means
' property doesn't exist and needs to be created and appended
' to Properties collection of Document object.
prp = doc.Properties(strPropName)
prp.Value = strPropValue ' Set custom property value.
SetCustom_Bye:
dbs.Close()
dbs = Nothing
dbe = Nothing
cnt = Nothing
doc = Nothing
prp = Nothing
Exit Function
SetCustom_Err:
If Err.Number = conPropertyNotFound Then
prp = doc.CreateProperty(strPropName, , strPropValue)
doc.Properties.Append(prp) ' Append to collection.
Resume Next
Else ' Unknown error.
SetCustomProperty = False
Resume SetCustom_Bye
End If
End Function
Function GetProperty(ByVal dbAccessPath As String, ByVal propName As String) As Object
On Error GoTo SetCustom_Err
 im dbe As New DAO.DBEngineClass()
 im dbs As DAO.Database, cnt As DAO.Container
 im doc As DAO.Document, prp As Object ' Property
Const conPropertyNotFound = 3270 ' Property not found error.
dbs = dbe.OpenDatabase(dbAccessPath) ' Define Database object.
cnt = dbs.Containers!Databases ' Define Container object.
doc = cnt.Documents!UserDefined ' Define Document object.
GetProperty = doc.Properties(propName).Value
SetCustom_Bye:
dbs.Close()
dbs = Nothing
dbe = Nothing
cnt = Nothing
doc = Nothing
prp = Nothing
Exit Function
SetCustom_Err:
If Err.Number = conPropertyNotFound Then
MsgBox("Свойство не найдено", MsgBoxStyle.Critical + MsgBoxStyle.OKOnly, "Открытие файла"
GetProperty = Nothing
Resume SetCustom_Bye
Else ' Unknown error.
GetProperty = Nothing
Resume SetCustom_Bye
End If
End Function