Инструкция SELECT...INTO ⇐ ПредыдущаяСтр 4 из 4
Создание запроса на создание таблицы Синтаксис: SELECT поле1[, поле2[, ...]] INTO новая_таблица FROM источник 'создание новой таблицы CurrentDb.Execute (" Select '99999999999999999999' as NS, '99' as Mec, 99999 as D INTO " & "ФинансОтчет" & ";") MsgBox "Таблица 'ФинансОтчет' создана!!!"
Инструкция CREATE INDEX Создает новый индекс на существующей таблице. Синтаксис CREATE [ UNIQUE ] INDEX индекс 'создание уникального индекса для новой таблицы Dim tblNew As TableDef Dim indNew As Index ind = MsgBox("Создать уникальный индекс для поля If ind = 6 Then ' индекс создан CurrentDb.Execute ("Create UNIQUE Index 'NS' On ФинансОтчет (Ns);")
Работа с формами и запросами Объект Recordset – набор записей Данные (RecordSours) – таблица, запрос, SQL CurrentDb -метод для работы с объектами базы данных (библиотека Microsoft DAO 3.6 Object Library) таблица - CurrentDb.OpenRecordSet(“имя таблицы”) запрос - CurrentDb.OpenRecordSet(“имя запроса”) SQL - CurrentDb.OpenRecordSet(“инструкция SQL”) ‘db1 – переменная для работы с объектом базы данных Dim db1 As Database Set db1 = CurrentDb ‘z – имя объекта Recordset , объявление объекта Dim z As Recordset Set z = db1.OpenRecordset("имя запроса или таблицы") While Not z.EOF <тело цикла> 'переход на следующую запись запроса z.MoveNext Wend 'закрытие наборов данных z.Close К объекту можно обратиться: z.<имя объекта>
МетодRepaint Метод Repaint вызывает обновление объекта Пример: Обновление формы : Me.Repaint
Метод Requery Метод Requery вызывает немедленный пересчет значения элемента управления Пример: Me.подчиненная_форма_Фин_рез_руб1.Requery
Пример 1: Private Sub Кнопка2_Click() 'удаление имеющейся таблицы On Error GoTo err_Err err_Err: If Err = 3010 Then If MsgBox("Таблица 'ФинансОтчет' уже имеется,удалить ее?", vbYesNo) Then CurrentDb.Execute ("Drop Table " & "ФинансОтчет;") End If End If 'создание новой таблицы CurrentDb.Execute (" Select '99999999999999999999' as NS, '99' as Mec, 99999 as D INTO " & "ФинансОтчет" & ";") MsgBox "Таблица 'ФинансОтчет' создана!!!" 'создание уникального индекса для новой таблицы Dim tblNew As TableDef Dim indNew As Index ind = MsgBox("Создать уникальный индекс для поля NS ?", vbYesNo, "Создание индекса для поля") If ind = 6 Then 'индекс создан CurrentDb.Execute ("Create UNIQUE Index 'NS' On ФинансОтчет (Ns);") End If Dim db1 As Database Set db1 = CurrentDb Dim z1, z2, z3 As Recordset Set z1 = db1.OpenRecordset("Сводка") Set z2 = db1.OpenRecordset("Груз") Set z3 = db1.OpenRecordset("ФинансОтчет") z1.MoveFirst: z3.MoveFirst i = 1 While Not z1.EOF If z1.Fields("mec") = Me.ПолеСоСписком0 Then If i = 1 Then z3.Edit Else z3.AddNew z3.Fields("NS") = z1.Fields("NS") z3.Fields("mec") = z1.Fields("mec") z2.MoveFirst While Not z2.EOF If z1.Fields("kg") = z2.Fields("kg") Then z3.Fields("D") = z2.Fields("fs") * z1.Fields("kol") * Me.Поле5 End If z2.MoveNext Wend i = i + 1 z3.Update End If z1.MoveNext Wend z1.Close: z2.Close: z3.Close 'Просмотр готового отчета DoCmd.OpenReport "ФинансОтчет", acPreview End Sub Пример2: ********форма ФинОтчет********************** Private Sub Кнопка10_Click() 'удаление имеющейся таблицы On Error GoTo err_Err err_Err: If Err = 3010 Then If MsgBox("Таблица 'ФинОтч' уже имеется,удалить ее?", vbYesNo) Then CurrentDb.Execute ("Drop Table " & "ФинОтч;") End If End If 'создание новой таблицы CurrentDb.Execute (" Select '99999999999999999999' as NS, 99 as Mec, 99999 as R,99999 as D INTO " & "ФинОтч" & ";") MsgBox "Таблица 'ФинОтч' создана!!!" 'создание уникального индекса для новой таблицы Dim tblNew As TableDef Dim indNew As Index ind = MsgBox("Создать уникальный индекс для поля NS ?", vbYesNo, "Создание индекса для поля") If ind = 6 Then ' индекс создан CurrentDb.Execute ("Create UNIQUE Index 'NS' On ФинОтч (Ns);") End If
Dim db1 As Database Set db1 = CurrentDb Dim z1, z2 As Recordset Set z1 = db1.OpenRecordset("ФЗапрос") Set z2 = db1.OpenRecordset("ФинОтч") z1.MoveFirst: z2.MoveFirst i = 1 While Not z1.EOF If z1.Fields("mec") = Me.ПолеСоСписком7 Then If i = 1 Then z2.Edit Else z2.AddNew z2.Fields("NS") = z1.Fields("NS") z2.Fields("mec") = z1.Fields("mec") z2.Fields("R") = z1.Fields("R") * Me.Поле7 z2.Fields("D") = z1.Fields("D") * Me.Поле7 i = i + 1 z2.Update End If z1.MoveNext Wend z1.Close: z2.Close 'Просмотр готового отчета DoCmd.OpenReport "Отчет", acPreview End Sub
expression.OpenForm(FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs)
FormName – имя формы View – режимы: · asDesign -режим конструктора · acFormDS – таблица · acFormPivotChart – сводная диаграмма · acFormPivotTable – сводная таблица · acNormal – режим формы, по умолчанию · acPreviev - предварительный просмотр
FilterName –имя фильтра WhereCondition –условие отбора DataMode -режим данных · acFormAdd –добавление данных, нельзя редактировать существующие · acFormEdit –добавление и редактирование существующих · acFormReadOnly –форма только для чтения WindowMode –режим окна · acDialog – режим диалога · acHidden –форма невидима · acIcon – форма свернута · acWindowNormal - предлагается по умолчанию
OpenArgs - аргументы открытия, (например, открытие многостраничной формы на 3 странице) Пример3. Private Sub Кнопка16_Click() 'пересчет в рубли Dim bd2 As Database Set bd2 = CurrentDb Dim z2 As Recordset Set z2 = bd2.OpenRecordset("Курс валюты") Dim a As Date a = Me.дата_поступления z2.MoveFirst While Not z2.EOF() If z2.Fields("дата") = a Then Me.цена__руб = Me.цена * z2.Fields("Курс") End If z2.MoveNext Wend Me.Repaint z2.Close End Sub ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|