Официальный сайт студ.городка НГТУ
Программирование и БД » Помощь с VBA 

#1  14.06.11 17:28

Помощь с VBA

пример программы доступа к базам данных из VBA-кода. создали в базе данных таблицу. таблица содержит поля «Название», «Цена», «Количество», «Сумма». нужно выводить все записи, у которых цена больше средней по таблице...

Код::

Private Sub CommandButton1_Click()
Dim myDatabase As Database
Dim myTable As TableDef
Dim myField As Field
Dim rs As Recordset
Dim i As Integer

Set myDatabase = DBEngine.CreateDatabase("D:\test_mdb", dbLangGeneral) 'создание БД
MsgBox "База данных создана"

Set myTable = New TableDef 'инифиализация таблицы

With myTable 'создание полей таблицы
    .Fields.Append .CreateField("Название", dbText)
    .Fields.Append .CreateField("Цена", dbText)
    .Fields.Append .CreateField("Количество", dbText)
    .Fields.Append .CreateField("Сумма", dbText)
End With

myTable.Name = "Таблицаа" 'задание имени таблицы
myDatabase.TableDefs.Append myTable 'добавление таблицы в базу данных

Dim Datas(5, 3) As String 'массив с данными
Datas(0, 0) = "Рубашка"
Datas(0, 1) = "700р"
Datas(0, 2) = "3"
Datas(0, 3) = "2100р"
Datas(1, 0) = "Майка"
Datas(1, 1) = "400р"
Datas(1, 2) = "4"
Datas(1, 3) = "1600р"
Datas(2, 0) = "Джинсы"
Datas(2, 1) = "1000р"
Datas(2, 2) = "2"
Datas(2, 3) = "2000р"
Datas(3, 0) = "Шорты"
Datas(3, 1) = "500р"
Datas(3, 2) = "4"
Datas(3, 3) = "2000р"
Datas(4, 0) = "Кроссовки"
Datas(4, 1) = "1500р"
Datas(4, 2) = "2"
Datas(4, 3) = "3000р"
Datas(5, 0) = "Брюки"
Datas(5, 1) = "900р"
Datas(5, 2) = "3"
Datas(5, 3) = "2400р"


Set rs = myDatabase.OpenRecordset("Таблицаа", dbOpenTable) 'открытие таблицы Телефоны
For i = 0 To 5 'заполнение таблицы данными из массива
    With rs
        .AddNew
        !Название = Datas(i, 0)
        !Цена = Datas(i, 1)
        !Количество = Datas(i, 2)
        !Сумма = Datas(i, 3)
        .Update
    End With
Next i

Set myDatabase = Nothing
MsgBox "Таблица создана"

End Sub

Private Sub CommandButton2_Click()
    Dim my_base As Database
    Dim rstNwind As Recordset
    Dim x, Z As Integer

    Set my_base = OpenDatabase("D:\test_mdb")
    Set rstNwind = my_base.OpenRecordset("Таблицаа", dbOpenTable)

If rstNwind.RecordCount > 0 Then
    rstNwind.MoveFirst
    Do While Not rstNwind.EOF
    
    For i = 0 To 5       
    x = rstNwind.Fields(1)
    Next i
    
    Z = x / 6
    
     
            ListBox1.AddItem rstNwind.Fields(0)
            ListBox2.AddItem rstNwind.Fields(1)
            ListBox3.AddItem rstNwind.Fields(2)
            ListBox4.AddItem rstNwind.Fields(3)
            rstNwind.MoveNext

Loop
End If
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub ListBox2_Click()

End Sub

Private Sub ListBox4_Click()

End Sub

Private Sub UserForm_Click()

End Sub

For i = 0 To 5       
    x = rstNwind.Fields(1)
    Next i
   
    Z = x / 6
   
     
            ListBox1.AddItem rstNwind.Fields(0)
            ListBox2.AddItem rstNwind.Fields(1)
            ListBox3.AddItem rstNwind.Fields(2)
            ListBox4.AddItem rstNwind.Fields(3)
            rstNwind.MoveNext

Loop

не могу выполнить последний пункт задания, кто может помочь?

Исправлено Aguero (14.06.11 17:32)

Offline

#2  23.06.11 12:46

Re: Помощь с VBA

По логике средствами T-SQL
Сначало получаешь количесво записей в таблице Select count() from mytable
Затем получаешь общую сумму Select sum([Цена]) from mytable
Делешь сумму на количество получаешь среднюю стоимость приравниваешь её переменной к примеру "СредняяЦена" и остаётся выбрать записи у которых цена больше средней цены Select * from mytable where [цена] > СредняяЦена

Исправлено eagle (23.06.11 12:48)

Offline

Программирование и БД » Помощь с VBA 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.121 сек.
Выполнено 14 запросов.