Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Access: как достать свойство??? Добавлено: 03.09.04 15:52  

Автор вопроса:  Barulya
Народ, подскажите пожалуйста, как установить и получить значение свойства, которое задается вручную через "Файл/Свойство базы данных/Прочие". Мне необходимо получить значение свойства средствами программирования не из под оболочки Access.

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #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-сайт: sapfir.cift.ru
 Профиль | | #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
        ;Dim dbe As New DAO.DBEngineClass()
        ;Dim dbs As DAO.Database, cnt As DAO.Container
        ;Dim 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
        ;Dim dbe As New DAO.DBEngineClass()
        ;Dim dbs As DAO.Database, cnt As DAO.Container
        ;Dim 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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам