LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Перебор полей т...
 Re: Перебор полей таблицы...
 
 15.12.2010 15:48:44
Admin1
731 сообщения
1-ый


Re: Перебор полей таблицы...
 Измененный Admin1  на 15.12.2010 15:49:02)

Function TableDAO()
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld As DAO.Field
    
    Set db = CurrentDb()

    Set tdf = db.TableDefs("Таблица1")
   
    ' Добавить поле
    tdf.Fields.Append tdf.CreateField("Поле1", dbText, 80)
   
    ' Удалить поле
    tdf.Fields.Delete "Поле1"
   
    Set fld = Nothing
    Set tdf = Nothing
    Set db = Nothing
End Function

2. Верхний пример создает и удаляет поле. Объект таблица tdf содержит список полей fields, следовательно в цикле можно пройти по всем полям for i=0 to tdf.fields.Count-1 ...

3. Порядок полей создается в SQL запросе или можно, просматривая таблицу, передвинуть поля и запомнить ее расширенные свойства, что несовсем правильно. Программным способом такие вещие не делают.

 16.12.2010 2:08:05
АлексБ
24 сообщения


Re: Перебор полей таблицы...

А ка Access определяет в каком MDB создавать таблицу? Т.е. Как получить путь к конкретному MDB-файлу, на который ссылается MDE на "Таблица1"?

И можно ли программно "сжать и восстановить" MDB по пути из ссылке в Таблицах?

 16.12.2010 8:44:29
Admin1
731 сообщения
1-ый


Re: Перебор полей таблицы...

1. Конкретный файл определяется разработчиком, в лекциях все операции проводятся над конкретным внешним файлом. Суть идеи создаете Access Приложение (CreateObject("Access.Application")
), а потом над ним делаете операции. В примерах есть также создание и привязка к внешним таблицам. Оттуда берется информация о ссылке на внешний файл mdb, ODBC и т.п. Все переменные лучше смотреть в отладчике.

For Each tdf In db.TableDefs
            strConnect = tdf.Connect
            If Len(strConnect) > 0 And left$(tdf.Name, 1) <> "~" Then
                If left$(strConnect, 4) = "ODBC" Then
                    ReDim Preserve mastODBCInfo(intTableCount)
                    With mastODBCInfo(intTableCount)
                        .strTableName = tdf.Name
                        rs.FindFirst "LocalTableName='" & .strTableName & "'"
                        If Not rs.NoMatch Then
                            .strConnectString = rs!ConnectString
                            .strSourceTable = rs!SourceTable
                        Else
                            .strSourceTable = tdf!SourceTableName
                            .strConnectString = tdf!ConnectString
                        End If
                    End With
                    boolTablesPresent = True
                    intTableCount = intTableCount + 1
                End If
            End If
        Next



2. Сжатие возможно, если файл не занят каким-либо процессом.
Const CreateLog = True

Set objAccess = CreateObject("Access.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists("c:\Access\test2.mdb") Then
    objFSO.DeleteFile("c:\Access\test2.mdb")
End If

errReturn = objAccess.CompactRepair _
    ("c:\Access\test1.mdb", "c:\Access\test2.mdb", CreateLog)

  Программирование  Microsoft Access. Файлы mdb и accdb  Перебор полей т...
ПоискПоиск  Список форумовСписок форумов  
right