Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Основываясь на раздобытом примере, сделал вот такую функцию:
Код: Выделить весь код
Public Function counter(countcell As Double)
Const sQ1 = "SELECT TOP 1 товар1 FROM Отчет"
Dim db As Database
Dim rs As Recordset
s = sQ1
Set db = CurrentDb
Debug.Print s
Set rs = db.OpenRecordset(s)
If Not rs.EOF Then
    counter = countcell - rs(0)
End If
rs.Close
Set rs = Nothing

End Function
Для начала, эту функцию в дизайнере ставлю в новые поля запроса(для каждого товара своё поле)
Есть две проблемы.
1)Переменная rs(0), всегда имеет значение самой первой записи, в отличие от countcell, значение которой увеличивается в цикле перемещения по записям. В итоге результатом функции является текущая запись - первая запись, что не верно, так как нужно текущая - предыдущая
2)В sQ1 явно указано поле товар1. Хотя оно же, как бы является аргументом для функции. Ума не приложу как заставить SQL, понять этот аргумент? То-есть что бы строка выгладела примерно так:
Код: Выделить весь код
Const sQ1 = "SELECT TOP 1 (countcell) FROM Отчет"
для того что бы одной функцией, можно было бы пересчитывать все товары
Как не мучился, не смог впихнуть в SQL аргумент этой функции...

Отправлено: 22:37, 28-05-2010 | #4