powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Коррекция SQL запроса, ПОМОГИТЕ!!!
15 сообщений из 15, страница 1 из 1
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34361163
GhostProgram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, я тут впервые, хотелось бы получить помощь...Я не знаком со структурой SQL запросов, но по работе столкнулся со следующей проблемой. Есть исходная функция, которая расчитывает количество комплектов. В ней я убираю один пунт БОНУС# и она перестает расчитывать количество комплектов...
Function Кол_комплектов(Месяц, Год) As Integer
' посчитать кол-во комплектов
Кол_комплектов = 0
For d = 1 To ID(0)
strSQL = " SELECT DISTINCTROW [Бонус #1 (за отчетный период)], " & _
" Год, " & _
" Месяц, " & _
" [Дилер ID], " & _
" Count(*) AS [кол_во] " & _
" FROM вознаграждение " & _
" GROUP BY [Бонус #1 (за отчетный период)], " & _
" Год, " & _
" Месяц, " & _
" [Дилер ID] " & _
" HAVING ((([Бонус #1 (за отчетный период)])>0) AND " & _
" ((Год)=" & Chr(34) & CStr(Год) & Chr(34) & ") AND " & _
" ((Месяц)=" & Chr(34) & CStr(Месяц) & Chr(34) & ") AND " & _
" (([Дилер ID])=" & Chr(34) & CStr(ID(d)) & Chr(34) & "))"
Set таблица_вознаграждения = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

If таблица_вознаграждения.RecordCount() > 0 Then
таблица_вознаграждения.MoveFirst
While Not таблица_вознаграждения.EOF
Кол_комплектов = Кол_комплектов + таблица_вознаграждения.Fields(4)
таблица_вознаграждения.MoveNext
Wend
End If
Next d
End Function
Я понимаю так, что Fields(4) влияет на расчет...? как это связано с запросом? помогите пожалуйста начинающему....
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34361191
Guest11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кол_комплектов = Кол_комплектов + таблица_вознаграждения.Fields("[кол_во]")
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34361439
GhostProgram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень приятно, что мне ответили...Как я понимаю суть данного запроса такая: производится запрос по году дате дилеру а количество комплектов должно равняться количеству строк, которые удовлетворяют условию запроса...я подставил в Fields("[кол_во]"), но в результате расчитывается количество всех ячеек Дилера за весь период...
Может надо что-то поменять в формуле, куда подставляется функция?

Месяц = CStr(Month(начало_отчетного_периода))
Год = CStr(Year(начало_отчетного_периода))
' посчитать кол-во комплектов
количество_комплектов = Round(Кол_комплектов(Месяц, Год), 0)<<< сюда подставляется функция кол_комплектов? может тут что-то поменять?
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34362345
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это запрос собирает количество не уникальных (не удвоеных) записей
у которых бонус >0
год такой то месяц такой то дилер такой то
" ((Год)=" & Chr(34) & CStr(Год) & Chr(34) & ") AND " &
использование Chr(34)
можно заменить (если поле год имеет текстовой формат
однинарной кавычкой примерно так
((Год)='" & CStr(Год) & "') AND " &
использование цикла не понятно
for d=1 to ID(0)
что это ID(0)
напиши что именно тебе надо вытащить из базы и какими критериями отбора
и опиши поля таблицы
Having лучше заменить на WHERE поскольку нет критерия по какой либо функции типа SUM()>10
или COUNT()>0
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34362421
GhostProgram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне теперь необходимо немного изменить этот запрос...В нем по критерию бонус>0 вычислялось количество комплектов равное числу строк удовлетворяющих условию, что Бонус>0 дата год дилер тоже определены...Счетчик For d = 1 To ID(0) я так понял это проверяет по всем датам месяца...
Месяц Год Дилер
01 2006 Иванов
02 2007 Петров
01 2006 Сергеев
03 2007 Васильев

Мне нужно создать запрос,который по критерию месяц год посчитает количество комплектов.
В данном случае, например, мне надо посчитать количество комплектов за январь 2006 года, соответственно он будет равен 2 (запись Иванов+Сергеев)
Подскажите пожалуйста...
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34362445
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Function Кол_комплектов(Месяц, Год) As Integer
' посчитать кол-во комплектов
Кол_комплектов = 0
For d = 1 To ID(0)
strSQL = " SELECT DISTINCTROW [Бонус #1 (за отчетный период)], " & _
" Год, " & _
" Месяц, " & _
" Count(*) AS [кол_во] " & _
" FROM вознаграждение " & _
" Where [Бонус #1 (за отчетный период)])>0 AND " & _
" Год='" & CStr(Год) & "' AND Месяц='" & CStr(Месяц) & "' " & _
" GROUP BY [Бонус #1 (за отчетный период)], " & _
" Год, " & _
" Месяц "
Next d
End Function
убираешь диллера из полей и группировки
получиши сумму по периодугод месяц
попробу так
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34362449
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
цикл тоже можешь убрать
цикл определяет id диллера
CStr(ID(d))
он тебе я так понимаю не нужен
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34362492
GhostProgram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не правильно сказал.. Мне не нужен БОНУС, а нужно посчитать количество комплектов определенного дилера за определенный месяц..Допустим Васильев за март 2007 -1 комплект...
Я данный запрос меняю так...
Function Кол_комплектов(Месяц, Год) As Integer
' посчитать кол-во комплектов
Кол_комплектов = 0
For d = 1 To ID(0)
strSQL = " SELECT DISTINCTROW Год, " & _
" Месяц, " & _
" [Дилер ID], " & _
" Count(*) AS [кол_во] " & _
" FROM вознаграждение " & _
" GROUP BY Год, " & _
" Месяц, " & _
" [Дилер ID] " & _
" HAVING (((Год)=" & Chr(34) & CStr(Год) & Chr(34) & ") AND " & _
" ((Месяц)=" & Chr(34) & CStr(Месяц) & Chr(34) & ") AND " & _
" (([Дилер ID])=" & Chr(34) & CStr(ID(d)) & Chr(34) & "))"
Set таблица_вознаграждения = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

If таблица_вознаграждения.RecordCount() > 0 Then
таблица_вознаграждения.MoveFirst
While Not таблица_вознаграждения.EOF
Кол_комплектов = Кол_комплектов + таблица_вознаграждения.Fields(4)
таблица_вознаграждения.MoveNext
Wend
End If
Next d
End Function
Что такое Count(*) AS [кол_во] " & _? У меня тогда после изменений считает общее кол-во комплектов определенного дилера за все месяцы...
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34362540
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
где здесь поле комплектов
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34362585
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Count(*) -подсчитывает количество строк в зависимости от групп
SUM(Поле) -подсчитывает сумму числового поля
ну так что именно тебе нужно подсчитать количество строк то Count(*)
или сумма количества опредленного поля?
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34362599
GhostProgram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кол.комплектов=сумма всех записе удовлетворяющих условию запроса

Set таблица_вознаграждения = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)-Эта команда создает таблицу по запросу? а где она появляется?

If таблица_вознаграждения.RecordCount() > 0 Then если число записей больше нуля то
таблица_вознаграждения.MoveFirst что здесь?
While Not таблица_вознаграждения.EOF и здесь?
Кол_комплектов = Кол_комплектов + таблица_вознаграждения.Fields(4) суммирование всех значений от чего зависит Fields(4)? Это поле в таблице вознаграждений?

Уважаемый,ТIKO! Не могли бы вы написать пример запроса, который вычисляет количество записей по конкретному дилеру за определенный месяц определенного года и результаты вычисления заносит в таблицу, может тогда проще будет разобраться?
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34362606
GhostProgram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно посчитать с функцией Count(*) по месяцу году дилеру
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34362808
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
аська есть?
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34362856
GhostProgram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только дома есть, а на работе нет...может вечерком пообщаемся в Аське? если можно скиньте номерок...можно по скайпу тоже вечерком...
...
Рейтинг: 0 / 0
Коррекция SQL запроса, ПОМОГИТЕ!!!
    #34362940
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а у меня на рабте есть а дома нету
давай попробуем решить так или скидывай базу на мое почту попробую разобраться
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Коррекция SQL запроса, ПОМОГИТЕ!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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