Програмирование на Visual Basic

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

в таблицы. Эти колонки нельзя прокручивать и они выделяются серым фоном.

  • FixedRows (Фиксированные строки) количество фиксированных строк (отсчет сверху вниз) для отображения заголовков. Эти строки нельзя прокручивать и они выделяются серым фоном.
  • ScrolBars (Линейки прокрутки) горизонтальная и вертикальная линейки прокрутки для отображения невидимых колонок и строк. ScrolBars = 0 нет линеек прокрутки, 1 горизонvbOFNPathMiistExist возможность ввода только существующего пути и др

    Например, следующий оператор определяет возможность ввода только имени существующего файла и существующего пути

    чмя_станд _окна Flags = vbOFNFileMustExist Or \bOFNPathMustExist

    Пример программы.

    Приводится пример приложения, которое открывает существующую на компьютере базу данных, выдает список таблиц базы данных и выводит выбранную пользователем таблицу в сеточную форму Будет использоваться уже рассмотренная выше база данных B1BLIO MDB Используются элементы управления Data (имя Datal), Gild (имя Giidl, командная кнопка (имя Commandl). комбинированный список (имя Combol) и Common Dialog (имя CommonDialog) Форма на этапе разработки имеет вид, показанный на рис 5 9

     

    Рис 5 9

    Алгоритм работы приложения следующий При щелчке мыши по командной кнопке “Подключить”, появляется стандартное диалоговое окно для выбора файла базы данных. После выбора файла базы данных программно формируется список таблиц выбранной базы данных, который выводится в комбинированное окно После выбора элемента списка (таблица базы данных) ч

    нажатия клавиши “Ввод”, содержимое таблицы выводится насетку Линейки прокрутки сетки позволяют просматривать всеполя сетки

    Текст программ

    Option Explicit

    Const vbOFNPAlhMUSTEXIST - &H800&

    Const vbOFNFILEMUSTEXIST &H1000&

    Private Sub Commandl_Click() Combol.Clear

    CommonDiaiog.DefaultExt - “MDB” CommonDialog . FileName - “” CommonDialog.Filter =

    “Базы данных MS Access(*.MDB)I*.MDB” CommonDialoci. Flags vbOFNPATHMUSTEXIST CommonDiaiog.Action - 1

    If CommonDiaiog.FileName “” Then Exit Sub OpenDataBase CommonDialog.FileName End Sub

    Public Sub OpenDataBase(ByVal DataFile As String)

    Dim I As Integer

    Datal.Connect - “”

    Datal. Dat-abaseName = DataFile

    Datal.Refresh

    For I = 1 To Datal.Database.TableDefs.Count - 1

    Combol.Addltem Datal.Database.TableDefs(I).Name

    Next

    Combol.Text = “”

    End Sub

    Private Sub Combol Keypress(KeyAscii As Integer)

    If KeyAscii = 13 Then FillGrid Combol.Text

    End If End Sub

    Private Sub FillGrid^ByVal TableName As String) Dim I As Integer, CellWidth As Integer Datal.RecordSource = TableName Gridl.Cols = Datal.Database(TableName).Fields.Count

    Gridl.Row = 0 For I =, 0 To Datal.Database(TableName).Fields.Count-1 Gridl.Col = I Gridl.Text = Datal.Database(TableName).Fields(I).Name

    Gridl.ColWidth(I) = TextWidth(Gridi.Text) + 100 Next

    Datdl.Refresh

    Datal.Recordset.MoveLast

    Gridl.Rows = Datdl.Recordset.RecordCount + 1

    Datal.Recordset.Move First

    Gridl.Row ^ 0

    Do While Not Datdl.Recordset.EOF

    Gridl.Row = Gridl.Row + 1 For I = 0 To Datal.Database(TableName).Fields.Count-1

    Gridl.Col = I If IsNull(Datal.Recordset.Fields(I)-Value) Then

    Gridl.Text = “” Else Gridl.Text - Datal.Recordset.Fields(I).Value

    End If

    CellWidth = TextWidth(Gridi.Text) + 100

    Gridi.ColWidth(I)Then">If CellWidth > Gridi.ColWidth(I) Then

    Gridi.ColWidth(I) = CellWidth

    End If Next I

    Datal.Recordset.MoveNext Loop End Sub

    Процедура Commandl_Click обеспечивает очистку комбинированного списка и обращение к стандартному окну “Открыть файл” с заданным расширением (*.MDB) (рис. 5.10). После выбора файла происходит обращение к процедуре Open DataBase, в которую передается имя выбранного файла (CommonDialog.FileName).

    Процедура OpenDataBase обеспечивает подключение к базе данных через элемент управления Data (по умолчанию оператором Datal.Connect = “” выбирается Формат MS Access, имя базы данных определяется передаваемым в процедуру значением Datal. DatabaseName = DataFile) и заполнение комбинированною списка именами таблиц (цикл). Из этого списка можно выбрать нужную таблицу (рис. 5.11).

     

    Рис 5 10

    После выбора таблицы, процедура обрабогки события Combo l_KeyPress вызывает процедуру FillGrid заполнения сетки, в которую передается имя выбранной таблицы Combol.Text.

    В процедуре FillGrid инициализируется множество записей (оператор Datal.RecordSoui-ce = TableName) и определяется количество колонок таблицы (оператор Gridi.Cols = Datal.Database(TableName).Fields.Count), первая строка сетки (Gridl.Row = 0) заполняется названиями колонок выбранной таблицы (операторы

    For I = 0 То Datal.Database(TableName).Fields.Coiint-l

    Gridl.Col = 1

    Gridl.Text = Data].Database^TableName).Fields(I).Name

    Gridi.ColWidth(l) = TextWidth(Gridl.Text) + 100

    Next I)

    В этих операторах для задания ширины каждой колонки используется обращение к функции TextWidth, которая возвращает длину выводимого текста.

    Количество записей и соответственно количество строк сетки определяется операторами

    Datal. Refresh

    Datal .Recordset.Move Last

    Gridl.Rows = Datal. Recordset. RecordCount + 1 (первая строка заполнялась названиями полей).

    Возврат на первую запись и к первой строке сетки производится операторами Datal. Recordset. MoveFirst и Gridl.Row = 0.

    Рис 511

    Цикл Do-Loop обеспечивает движение по записям (оператор Data I. Recordset. MoveNext) и выполняется пока функция EOF имеет значение False (т.е. до последней записи). На каждом шаге цикла производится переход к новой строке (Grid I. Row = Grid 1. Row + 1), для которой выполняется цикл (Gridl.Col = I) заполнения всех ее ячеек. Если поле таблицы базы данных не содержит значения (проверяется функцией IsNull(Datal. Recordset. Fields(I). Value)), то соответствующая ячейка сетки заполняется пустой строкой.

    Последние операторы обеспечивают согласование ширины ячеек таблицы с максимальной возможной длиной поля записи (операторы

    CellWidth = TextWidth(Gridl.Text) + 100 Gridl.ColWidth(I)Then"> If CellWidth > Gridl.ColWidth(I) Then

    Gridl.ColWidth(I) = CellWidth).

    Заполненная сетка показана на рисунке 5.12.

    5.4.СОЗДАНИЕ БАЗ ДАННЫХ

    Создание новой базы данных может быть выполнено программно или с помощью специальной встроенной подсистемы Data Manager, позволяющей в диалоговом режиме создавать и модифицировать базы данных механиз