Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Программа на VBA


Автор: Cooper 19.1.2007, 17:26
Даны две таблицы: Альбомы и Продажи. Альбомы содержит:НазваниеАльбома,Исполнитель, ДатаВыпуска, Кол-воПесен,МузСтиль... Продажи содержит:НазваниеАльбома, Цена..Кол-воПродаж, КодПолдаж. Помогите пожалуйста с такой задачей в Access:
На форме Альбомы создать кнопку "Отстали?". При которой выдается процентное отношение кол-ва продаж альбома к максимальному кол-ву продаж.  Нужен код VBA... Спасибо

Автор: Akina 19.1.2007, 23:54
Давайте ваш код, который не работает или работает неверно. Будем разбираться.

А если хотите, чтобы кто-то сделал за вас - отправляйтесь в раздел "Центр помощи".

Автор: dionisiu 20.1.2007, 10:00
Cooper, фраза
Цитата(Cooper @  19.1.2007,  17:26 Найти цитируемый пост)
процентное отношение кол-ва продаж альбома к максимальному кол-ву продаж

означает что:
1. Из всех рейтингов продаж найти продажи по одному альбому с максимальным рейтингом и сравнить их с данным конкретным альбомом?

или

2. просуммировать общие продажи и найти место (долю) в этих продажах данного конкретного альбома?


Дополнительные вопросы: структура таблиц задана жестко? или это так, для примера? Просто по данному описанию структура БД выглядит не просто неоптимальной, а страшной.
Например, в табле Продажи есть поле Название альбома, а должна быть связь по коду таблицы Альбомы.
Там же есть (описано) поле КолвоПродаж. Но ведь это - вычисляемое значение.

И если можно, поподробней про поле КодПродаж - что оно несёт в себе?

можно приложить кусок базы.

Автор: Cooper 22.1.2007, 22:18
процентное отношение кол-ва продаж альбома к максимальному кол-ву продаж
Цитата(dionisiu @  20.1.2007,  10:00 Найти цитируемый пост)
означает что:1. Из всех рейтингов продаж найти продажи по одному альбому с максимальным рейтингом и сравнить их с данным конкретным альбомом?

Именно так


Цитата(dionisiu @  20.1.2007,  10:00 Найти цитируемый пост)
Дополнительные вопросы: структура таблиц задана жестко? или это так, для примера?
  Это так, для примера

Пока базы нет, но вскоре попробую выложить.. Спасибо..


Вот, вылложил файл...

Автор: Akina 22.1.2007, 23:57
В таком случае тему пока не закрываю. Ждем наработок.

Автор: dionisiu 23.1.2007, 11:10
А какая формула расчёта рейтинга? (класс капитализации показателя)?
Варианты:
1. Общее число продаж
2. Сумма выручки
3. Сумма прибыли (валовой и\или чистой)
4. Частота спроса
5. Представленность в рознице (если это оптовые продажи).
Другие факторы...

Если используется несколько факторов - то вес каждого фактора в итоге рейтинга.

Если используется деление рейтинга по категориям (Муз.Стиль) то это надо указать.

В общем случае нужно сделать на форме в области заголовка или примечания поля с суммами (счётчиком кол-ва) и максимальным значением, а в области данных - кнопку, в коде которой сравнивать значение текущей записи с вычисленным на форме максимальным значением

Только советую хорошо продумать структуру базы

Автор: Cooper 26.1.2007, 17:39
Цитата(dionisiu @  23.1.2007,  11:10 Найти цитируемый пост)
А какая формула расчёта рейтинга?


Общее число продаж.. Выше я повесил файл (можт кто посмотрит), который мне дали, там 3 таблицы.... и задание:"На форме Альбомы создать кнопку "Отстали?". При которой выдается процентное отношение кол-ва продаж альбома к максимальному кол-ву продаж"  Но главное не результат, а процесс, т.е. как делал задачу. Если все сделано мастером, то это не канает, надо все сделать программным кодом [VBA] и как я понимаю через Recordset...  Но с этим делом я плохо знаком.. пожалуйста помогите... спасибо..

Автор: dionisiu 27.1.2007, 11:26
Код

SELECT Sum(Продажи.КоличествоПродаж) AS [Sum-КоличествоПродаж]
FROM Альбомы LEFT JOIN Продажи ON Альбомы.НазваниеАльбома = Продажи.НазваниеАльбома
GROUP BY Альбомы.НазваниеАльбома
ORDER BY Sum(Продажи.КоличествоПродаж) DESC;


выдаёт сумму продаж по каждому альбому по убыванию. Если вставить после SELECT-а  "TOP 1", то выдаст одну строку с максимумом. Можно на форму привесить поле (в заголовке или примечании, но не в данных), задать ему данный запрос в качестве источника данных. Можно также функцию прописать DMax() (назовём этот контрол BestSeller

Далее, источником данных для формы делаем запрос, в который загоняем что угодно для отображения. Вешаем в форму контролы (в область данных) и туда же кнопку "Отстали?" (Примечание - в форму нужно выводить название альбома обязательно, а лучше его код, только полю кода в свойствах макета ставить Visible=False.
В свойствах кнопки "Отстали" производить сравнение суммы по полю КолвоПродаж с BestSeller-ом и выводить результат, например, в MsgBox

Автор: Cooper 28.1.2007, 22:52
Спасибо...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)