Здавалка
Главная | Обратная связь

Инструкция SELECT...INTO



Создание запроса на создание таблицы

Синтаксис:

SELECT поле1[, поле2[, ...]] INTO новая_таблица FROM источник


'создание новой таблицы

CurrentDb.Execute (" Select '99999999999999999999' as NS, '99' as Mec, 99999 as D INTO " & "ФинансОтчет" & ";")

MsgBox "Таблица 'ФинансОтчет' создана!!!"

 


Инструкция CREATE INDEX

Создает новый индекс на существующей таблице.

Синтаксис

CREATE [ UNIQUE ] INDEX индекс
ON таблица (поле [ASC|DESC][, поле [ASC|DESC], ...])


'создание уникального индекса для новой таблицы

Dim tblNew As TableDef

Dim indNew As Index

ind = MsgBox("Создать уникальный индекс для поля
Код товара?", vbYesNo, "Создание индекса для поля")

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 Все права принадлежат авторам размещенных материалов.