Программирование на Visual Basic | Microsoft Access, Excel, Word

В этом разделе сайта находятся примеры из сборника программ "Архив файлов на Microsoft Access". В нем рассказывается о программировании форм, отчетов, таблиц и других объектов. Используйте этот архив для изучения работы с приложением Microsoft Office Access и программированием на Visual Basic for Application. Файлы исходников можно получить по этой ссылке: Купить и скачать

Microsoft Access. Заполнение реквизитов предприятия

12. При разработке баз данных очень часто встречаются случаи, когда необходимо автоматическим способом заполнить поля в форме. Это показано в этом примере (..\15 Формы\la_from2.accdb\12. Заполнение реквизитов предприятия)

'==============================================================
' Заполнение реквизитов
Private Sub allFirms_AfterUpdate()
Dim rst As Recordset
    On Error GoTo 999
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM [Фирмы] WHERE [Фирма]='"  Me.allFirms  "'")
    If rst.RecordCount  0 Then
        With rst
            'Форму Вы можете связать с таблицей
            Me.Фирма = rst!Фирма
            Me.Банк = rst!Банк
            Me.Счет = rst!Счет
            Me.КорСЧЕТ = rst!КорСчет
        End With
    End If
    rst.Close
    Exit Sub
999:
    MsgBox Err.Description
    Err.Clear
End Sub

' Определяем максимальный номер документа
Private Sub Form_Current()
    If Me.NewRecord = True Then
       Me.Nдок.DefaultValue = 1 + funGetMaxNumber("SELECT Max([Nдок]) as NN FROM [Пример 12]")
    End If
End Sub

'==============================================================
' Получаем максимальное число
Function funGetMaxNumber(sSQL As String) As Long
Dim dbs As Database, rst As Recordset
    funGetMaxNumber = 0
    On Error GoTo 999
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset(sSQL)
    If rst.RecordCount  0 Then
        funGetMaxNumber = rst![NN]
    End If
    rst.Close
    Exit Function
999:
    Err.Clear
End Function

Microsoft Access. Создание документа Word без шаблона

02. Данный пример показывает как можно быстро создать документ Word из Microsoft Access. При этом документ будет создаваться в текущей папке, откуда запущено приложение. Также не забудьте создать ссылку на Word: C:\Program Files\Microsoft Office\OFFICE11\MSWORD.OLB

'==============================================================
'  Назначение
'    Создать документ Word в текущей папке
'
Private Sub butExecute_Click()
Dim app As Word.Application  ' Приложение программы
Dim strDOC As String ' Имя файла
    On Error GoTo 999
    ' Назначаем имя документа
    strDOC = Application.CurrentProject.Path  "\"  "la_automat.doc"
    Set app = New Word.Application ' Создаем документ
    app.Visible = False ' Скрываем документ
    app.Documents.Add ' Добавляем документ
    app.Selection.Text = Me.Body ' Вставляем текст
    app.ActiveDocument.SaveAs strDOC ' Сохраняем документ
    app.Quit ' Закрываем документ
    MsgBox "Файл: "  strDOC  " создан!", vbExclamation, "Документ Word"
    ' Назначение ссылки
    With Me.myWordDoc
        .HyperlinkAddress = strDOC ' Создаем ссылку
        .Visible = True ' Отображаем элемент
    End With
    Exit Sub
999:
    MsgBox Err.Description  ' Ошибка
    Err.Clear
    app.Quit
End Sub

Microsoft Access. Выделение строки в форме

11. Выделить всю строки в форме возможно, если Вы используете программных код указанный в описании.

Private Sub Form_Current()
Dim N As Long
    On Error Resume Next
    Me.Repaint
    N = Me.SelTop
    If N  1 Then N = 1
    Me.SelTop = N
    Me.SelLeft = 1
    Me.SelWidth = 10
    Me.SelHeight = 1
    Err.Clear
End Sub

Microsoft Access. Пакетное обновление таблиц

07. Использование ключевого слова UPDATE в запросах позволит вам обновить сразу много записей.

Private Sub butExecute_Click()
Dim dbs As Database
    On Error GoTo 999
    Set dbs = CurrentDb
    dbs.Execute "UPDATE [Пример 07] SET [Цена] = [Цена]+"  Me.Delta  ";"
    MsgBox "Цена в таблице [Пример 07] изменена!", vbExclamation
    Exit Sub
999:
    MsgBox Err.Description, vbCritical, "Создание поля"
    Err.Clear
End Sub