|
|
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
Добрый день, я тут впервые, хотелось бы получить помощь...Я не знаком со структурой 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) влияет на расчет...? как это связано с запросом? помогите пожалуйста начинающему.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2007, 16:15 |
|
||
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
Кол_комплектов = Кол_комплектов + таблица_вознаграждения.Fields("[кол_во]") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2007, 16:21 |
|
||
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
Очень приятно, что мне ответили...Как я понимаю суть данного запроса такая: производится запрос по году дате дилеру а количество комплектов должно равняться количеству строк, которые удовлетворяют условию запроса...я подставил в Fields("[кол_во]"), но в результате расчитывается количество всех ячеек Дилера за весь период... Может надо что-то поменять в формуле, куда подставляется функция? Месяц = CStr(Month(начало_отчетного_периода)) Год = CStr(Year(начало_отчетного_периода)) ' посчитать кол-во комплектов количество_комплектов = Round(Кол_комплектов(Месяц, Год), 0)<<< сюда подставляется функция кол_комплектов? может тут что-то поменять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2007, 17:25 |
|
||
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
это запрос собирает количество не уникальных (не удвоеных) записей у которых бонус >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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 08:31 |
|
||
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
Мне теперь необходимо немного изменить этот запрос...В нем по критерию бонус>0 вычислялось количество комплектов равное числу строк удовлетворяющих условию, что Бонус>0 дата год дилер тоже определены...Счетчик For d = 1 To ID(0) я так понял это проверяет по всем датам месяца... Месяц Год Дилер 01 2006 Иванов 02 2007 Петров 01 2006 Сергеев 03 2007 Васильев Мне нужно создать запрос,который по критерию месяц год посчитает количество комплектов. В данном случае, например, мне надо посчитать количество комплектов за январь 2006 года, соответственно он будет равен 2 (запись Иванов+Сергеев) Подскажите пожалуйста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 09:06 |
|
||
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
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 убираешь диллера из полей и группировки получиши сумму по периодугод месяц попробу так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 09:17 |
|
||
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
цикл тоже можешь убрать цикл определяет id диллера CStr(ID(d)) он тебе я так понимаю не нужен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 09:20 |
|
||
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
Я не правильно сказал.. Мне не нужен БОНУС, а нужно посчитать количество комплектов определенного дилера за определенный месяц..Допустим Васильев за март 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 [кол_во] " & _? У меня тогда после изменений считает общее кол-во комплектов определенного дилера за все месяцы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 09:36 |
|
||
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
где здесь поле комплектов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 09:50 |
|
||
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
Count(*) -подсчитывает количество строк в зависимости от групп SUM(Поле) -подсчитывает сумму числового поля ну так что именно тебе нужно подсчитать количество строк то Count(*) или сумма количества опредленного поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 10:07 |
|
||
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
кол.комплектов=сумма всех записе удовлетворяющих условию запроса Set таблица_вознаграждения = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)-Эта команда создает таблицу по запросу? а где она появляется? If таблица_вознаграждения.RecordCount() > 0 Then если число записей больше нуля то таблица_вознаграждения.MoveFirst что здесь? While Not таблица_вознаграждения.EOF и здесь? Кол_комплектов = Кол_комплектов + таблица_вознаграждения.Fields(4) суммирование всех значений от чего зависит Fields(4)? Это поле в таблице вознаграждений? Уважаемый,ТIKO! Не могли бы вы написать пример запроса, который вычисляет количество записей по конкретному дилеру за определенный месяц определенного года и результаты вычисления заносит в таблицу, может тогда проще будет разобраться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 10:11 |
|
||
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
Мне нужно посчитать с функцией Count(*) по месяцу году дилеру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 10:13 |
|
||
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
аська есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 11:03 |
|
||
|
Коррекция SQL запроса, ПОМОГИТЕ!!!
|
|||
|---|---|---|---|
|
#18+
только дома есть, а на работе нет...может вечерком пообщаемся в Аське? если можно скиньте номерок...можно по скайпу тоже вечерком... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 11:15 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=244&tid=2164414]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 227ms |
| total: | 398ms |

| 0 / 0 |
