Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Moorka
Зарегистрирован: 20.03.2004 Сообщения: 19 Откуда: EC
|
Добавлено: Сб Мар 20 2004 21:04 Заголовок сообщения: Microsoft Access & VBA! HELP! |
|
|
Люди добрые, помогите чайнику разобраться!
В Microsoft Access делаю БД.
Есть форма, в которой поля ввода и кнопка. Когда кнопку clickаеш должен запуститься код (он описан ниже). Но он не хочет запускаться, а выкидывает RUN-TIME ERROR MESSAGE
‘2185’: YOU CAN’T REFERENCE A PROPERTY OR METHOD FOR A CONTROL UNLESS THE CONTROL HAS THE FOCUS!
Что не так? Что надо сделать? Хоть идею подкиньте!
Я уже весь MSDN обрыла, обсыпется скоро.
P.S. На дебуге метит болдом выделеную строку.
Заранее пасиба
-----------------------------------------------------------------------
Private Sub Command16_Click()
Dim db As Connection
Dim table1 As Recordset
Dim d(1 To 100) As Integer
Set db = CurrentProject.Connection
Set table1 = New Recordset
Table1.Open "table1", db
i = 1
Do Until table1.EOF
If (table1!god = Combo23.Value) And (table1!mesiac = Combo25.Value) And (table!id =id.Text) Then
d(i) = table!cena
End If
Table1.MoveNext
i = i + 1
Loop
y = 0
For sk = 1 To i
y = y + d(i)
Next
Text14.Text = Str(y / 100 * Val(Text12.Text))
End Sub
------------------------------------------------------------------ |
|
Вернуться к началу |
|
|
HP
Зарегистрирован: 04.03.2004 Сообщения: 7 Откуда: Екб
|
Добавлено: Вс Мар 21 2004 08:08 Заголовок сообщения: |
|
|
Он ругается скорее всего на то, что один из комбо-боксов имеет фокус, а пока он имеет фокус на его проперти нельзя ссылаться.
А что у тебя за комбо?
А вообще опиши задачу подробнее, что сделать-то нужно?
А то на первый вгляд ты пытаешься солнце вручную закатить, хотя есть механизмы |
|
Вернуться к началу |
|
|
Moorka
Зарегистрирован: 20.03.2004 Сообщения: 19 Откуда: EC
|
Добавлено: Вс Мар 21 2004 14:07 Заголовок сообщения: ЗАДАЧА: |
|
|
а задача примитивная:
мне надо пересмотреть тэйбл, найти в нем поля, которые совпадают со значениями, введенными в комбобоксах и текст(боксах) формы.
Проще:
есть тэйбл. В нем записаны факты продажи товара, а именно:
(личный код продавшего лица, год продажи, месяц продажи, наименование товара, цена)
есть форма
в нее вводим личный код, год и месяц, который нас интересует
цикл бежит по тэйблу и ищет запись по личн. коду, месяцу и году продажи, считывает цену, за которую продано
если находит еще 1-у запись удовлетворяющую условие то суммирует цену и т.д.
Вобщем, цель-посчитать кто в каком месяце на какую сумму продал
(А в конце там просто размер премии подсчитывается (это не важно)) |
|
Вернуться к началу |
|
|
HP
Зарегистрирован: 04.03.2004 Сообщения: 7 Откуда: Екб
|
Добавлено: Вт Мар 23 2004 11:13 Заголовок сообщения: |
|
|
Допустим есть таблица Продажи (КодПродавца, ГодПродажи, МесяцПродажи, НазваниеТовара, ЦенаТовара)
Делаем SQL запрос:
SELECT КодПродавца, ГодПродажи, МесяцПродажи, SUM(ЦенаТовара) FROM Продажи GROUP BY КодПродавца, ГодПродажи, МесяцПродажи
на выходе запроса получаем набор записей, содержащих нужную тебе информацию, т.е. в виде:
КодПродавца, ГодПродажи, МесяцПродажи, СуммаЗаПериод
1, 2004, 1, 23000
1, 2004, 2, 25000
2, 2004, 1, 18000
2, 2004, 2, 19000
Если еще к запросу добавить HAVING КодПродавца='1' and ГодПродажи=2004 and МесяцПродажи=1
то на выходе будет одна запись про одного продавца за определенный год и месяц. |
|
Вернуться к началу |
|
|
Moorka
Зарегистрирован: 20.03.2004 Сообщения: 19 Откуда: EC
|
Добавлено: Ср Мар 24 2004 00:11 Заголовок сообщения: Я разобралась!!! |
|
|
Спасибо НР за помощь, но я уже раньше это дело просекла, если интересно как, то ниже код:
Private Sub Command16_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sSQL As String
Set db = DAO.OpenDatabase("C:\MyDB.mdb")
If Combo23.Value <> "" And Combo25.Value <> "" Then
licn_kod = licn_kod.Value
god = Combo23.Value
mesiac = Combo25.Value
ssm = 0
sSQL = "SELECT * FROM prodaza;"
Set rs = db.OpenRecordset(sSQL)
With rs
.MoveFirst
Do While Not .EOF
If .Fields(0) = licn_kod And .Fields(4) = god And .Fields(3) = mesiac Then
S = .Fields(5)
ssm = ssm + S
End If
.MoveNext
Loop
End With
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
Text34.Value = Str(ssm)
Text14.Value = Str(ssm / 100 * Text12.Value)
Else: MsgBox "Input error!"
End If
End Sub
|
|
Вернуться к началу |
|
|
|