powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Функция округления в запросе
6 сообщений из 6, страница 1 из 1
Функция округления в запросе
    #39155773
pirat_new
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В модуле прописал функцию для округления.
Далее ввожу в формулу в запросе и получаю ошибку: "Неверное число аргументов в выражении запроса"

Код: vbnet
1.
IIf([kodstat]=1000 or [kodstat]=1110 or [kodstat]=1500 or [kodstat]=1501 or [kodstat]=3000,(Round97([syma]*0.036)),IIf([kodstat]=6000,(Round97([syma]*0.02)),IIf([kodstat]=1100 or [kodstat]=2500 Or [kodstat]=5000 Or [kodstat]=7200 Or [kodstat]=4000  Or [kodstat]=4500 Or [kodstat]=5500,0,Null))) AS es



Подскажите, где ошибка?
...
Рейтинг: 0 / 0
Функция округления в запросе
    #39155884
Фотография Quiet333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю что такое round97. А для Round надо указывать количество знаков
типа Round([syma]*0.036;2)
...
Рейтинг: 0 / 0
Функция округления в запросе
    #39155900
pirat_new
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Quiet333,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Public Function Round97(ByVal Number As Variant, NumDigits As Long, _
Optional UseBankersRounding As Boolean = False) As Double
'Here 's the version I recently wrote that solves that last issue. I've
'sent this in to Advisor to post as an errata. I think this will work
'now... <g> -- Ken
Dim dblPower As Double
Dim varTemp As Variant
Dim intSgn As Integer

If Not IsNumeric(Number) Then
' Raise an error indicating that
' you've supplied an invalid parameter.
' Err.Raise 5
Exit Function
End If
dblPower = 10 ^ NumDigits
' Do the major calculation.
varTemp = CDec(Number) * dblPower + 0.5

' Now round to nearest even, if necessary.
If UseBankersRounding Then
' Is this a negative number, or not?
' intSgn will contain -1, 0, or 1.
intSgn = Sgn(Number)
varTemp = Abs(varTemp)
If Int(varTemp) = varTemp Then
If varTemp Mod 2 = 1 Then
' If working with a negative number,
' add 1. If working with a
' positive number, subtract one.
' That's what "- intSgn" will do.
varTemp = intSgn * (varTemp - intSgn)
End If
End If
End If
' Finish the calculation.
Round97 = Int(varTemp) / dblPower
End Function
...
Рейтинг: 0 / 0
Функция округления в запросе
    #39155914
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pirat_new,

IIf([kodstat]=1000 or [kodstat]=1110 or [kodstat]=1500 or [kodstat]=1501 or [kodstat]=3000,
(Round97([syma]*0.036)),
IIf([kodstat]=6000,(Round97([syma]*0.02)),
IIf([kodstat]=1100 or [kodstat]=2500 Or [kodstat]=5000 Or [kodstat]=7200 Or [kodstat]=4000 Or [kodstat]=4500 Or [kodstat]=5500,0,Null))) AS es

у round97 здесь 1 параметр

Код: vbnet
1.
2.
3.
Public Function Round97(ByVal Number As Variant, NumDigits As Long, _
Optional UseBankersRounding As Boolean = False) As Double
 



а здесь 2 обязательных(вариант и лонг) и 1 необязательный
...
Рейтинг: 0 / 0
Функция округления в запросе
    #39155935
pirat_new
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
...
Рейтинг: 0 / 0
Функция округления в запросе
    #39156518
pirat_newIIf([kodstat]=1100 or [kodstat]=2500 Or [kodstat]=5000 Or [kodstat]=7200 Or [kodstat]=4000 Or [kodstat]=4500 Or [kodstat]=5500,... Кстати, в запросе эту конструкцию можно с успехом заменить на:
Код: vbnet
1.
IIf([kodstat] In (1100,2500,5000,7200,4000,4500,5500),...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Функция округления в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]