9 / 9 / 2
Регистрация: 25.03.2017
Сообщений: 555
1

Запрос на подсчет количества

05.04.2018, 17:38. Показов 1229. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Не могу составить запрос на подсчет количества программистов, чья премия составит от1500 до 3000 руб. За таблицы не ругайте - такие дали.
Вложения
Тип файла: rar Помощь.rar (10.2 Кб, 8 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2018, 17:38
Ответы с готовыми решениями:

Запрос на подсчет количества
Здравствуйте У меня возникла задача, подозреваю, что решить ее не сложно, но никак не могу...

Запрос на подсчет количества
Здравствуйте. Как можно реализовать запрос, который выводит курсы, на которых студентов больше, чем...

Запрос на подсчет количества
Здравствуйте. Есть база спортсменов. Некоторые могут участвовать в нескольких видах спорта. Как...

Запрос. Подсчет количества из двух таблиц
суть задачи такова: Есть 2 таблицы Рабочие и Предприятия. Необходимо подсчитать сколько рабочих...

6
Заблокирован
05.04.2018, 18:14 2
Цитата Сообщение от Stud73 Посмотреть сообщение
Не могу составить запрос на подсчет количества программистов, чья премия составит от1500 до 3000 руб. За таблицы не ругайте - такие дали.
Увы - не возможно.
У вас невозможно создать связь между таблицами "Сотрудники" и "Премия" т.к. :
- В "Сотрудники" поле "Стаж" - Числовое
- В "Премия" поле "Стаж" - Текстовое
1
9 / 9 / 2
Регистрация: 25.03.2017
Сообщений: 555
05.04.2018, 18:19  [ТС] 3
Я прекрасно понимаю, что это плохие таблицы. Но как то надо выкрутиться.. Преподаватель дал структуру. По крайней мере, если тип изменить на текстовый, то что то можно сделать?
0
Заблокирован
05.04.2018, 18:38 4
Цитата Сообщение от Stud73 Посмотреть сообщение
то можно сделать?
Ну мне пришло в голову такое:
В "Сотрудники" поле "Стаж" - Числовое - принимаем не за индекс, а за кол-во лет стажа, тогда:
Visual Basic
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
Public Function ПремияПоСтажу(lСтаж As Long) As Currency
'Возвращает премию по стажу
'--------------------------------------------------------------------------
Dim s As String
On Error GoTo ПремияПоСтажу_Err
    
    Select Case lСтаж
        Case Is < 1
            s = "до 1 года"
        Case 1 To 3
            s = "1-3 года"
        Case 4 To 5
            s = "4-5 лет"
        Case Is > 5
            s = "более 5 лет"
        Case Else
            s = "Стаж не известен!"
    End Select
 
    ПремияПоСтажу = DLookup("Премия", "Премия", "Стаж = '" & s & "'")
 
ПремияПоСтажу_Bye:
    Exit Function
 
ПремияПоСтажу_Err:
    'MsgBox "Error: " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in Function: ПремияПоСтажу in module: Module1", vbCritical, "Error in Application: " & Err.Source
    Err.Clear
    Resume ПремияПоСтажу_Bye
End Function
Результат прилагаю - смотрите запрос: Расчёт_Премий
Вложения
Тип файла: zip Помощь_v02.zip (16.3 Кб, 3 просмотров)
1
Заблокирован
05.04.2018, 18:46 5
Для "красоты" можно так:
Visual Basic
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
Public Function ПремияПоСтажу(vСтаж As Variant) As Currency
'Возвращает премию по стажу
'--------------------------------------------------------------------------
Dim s As String
On Error GoTo ПремияПоСтажу_Err
    
    Select Case vСтаж
        Case Is < 1
            s = "до 1 года"
        Case 1 To 3
            s = "1-3 года"
        Case 4 To 5
            s = "4-5 лет"
        Case Is > 5
            s = "более 5 лет"
        Case Else
            s = "Стаж не известен!"
            ПремияПоСтажу = 0
            Exit Function
    End Select
 
    ПремияПоСтажу = DLookup("Премия", "Премия", "Стаж = '" & s & "'")
 
ПремияПоСтажу_Bye:
    Exit Function
 
ПремияПоСтажу_Err:
    ПремияПоСтажу = 0
    'MsgBox "Error: " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in Function: ПремияПоСтажу in module: Module1", vbCritical, "Error in Application: " & Err.Source
    Err.Clear
    Resume ПремияПоСтажу_Bye
End Function
1
9 / 9 / 2
Регистрация: 25.03.2017
Сообщений: 555
05.04.2018, 18:51  [ТС] 6
Спасибо большое.. Слишком хорошо.. Преподаватель не оценит, к сожалению.. Я пробую сделать так:
Код
 IIf([Сотрудники]![Стаж] Between 1 And 3;1000;3000)
. Не очень хорошо, так как вторую проверку по стажу сделать не могу. Не подскажете, какую функцию можно использовать для этого (в Екселе есть ИЛИ). В Акцессе пока не нашла.
Сделала. Вложила еще один IIF.
0
Эксперт MS Access
7436 / 4571 / 299
Регистрация: 12.08.2011
Сообщений: 14,206
06.04.2018, 08:51 7
Цитата Сообщение от Stud73 Посмотреть сообщение
так как вторую проверку по стажу сделать не могу
ну почему же
Visual Basic
1
IIf([Сотрудники]![Стаж] Between 1 And 3;1000;iif([Сотрудники]![Стаж] Between 4 And 10;2000;3000))
1
06.04.2018, 08:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2018, 08:51
Помогаю со студенческими работами здесь

Запрос на подсчет количества заказов по месяцам
Всем доброго дня, столкнулся с такой проблемкой, как бы мне организовать запрос, который бы показал...

Запрос на подсчет количества детей у определенного сотрудника
есть таблицы: дети(idребенка, дата рождения) сотрудник(idсотрудника,.....) дети...

Запрос: подсчёт количества выдач за определённый месяц и год
Здравствуйте, уважаемые форумчане. У меня возникли определённые сложности с обработкой данных из...

Запрос на подсчет количества : список преподавателей, которые ведут практические занятия
Здравствуйте. Помогите написать запрос: Для заданной кафедры напечатать список преподавателей,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru