![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 26.09.2008
Сообщений: 38
|
![]()
Всем здрасти)
Вопрос по Access2007: Допустим имеются 2 таблицы, связанные по полю Автомат - Таблица1: Автомат ДатаС ДатаПо Продажи Доход 1 01.08.2009 31.08.2009 500 5000 2 01.08.2009 31.08.2009 400 4000 3 01.08.2009 31.08.2009 300 3000 1 01.09.2009 30.09.2009 600 6000 То есть для Автомата 1 данные введены и за август и за сентябрь, а для остальных только за август. Как вы понимаете ДатаС-дата начала месяца, а ДатаПо-дата конца месяца - Таблица2: Автомат Место установки Дата установки (в указанное место) 1 Пункт1 01.05.2009 2 Пункт2 01.05.2009 3 Пункт3 01.05.2009 2 Пункт4 17.09.2009 То есть в сентябре автомат 2 находился в двух местах (до 16 числа включительно в Пункте 2, а с 17го в Пункте 4) Имеется отчёт (ленточная форма) со следующими полями: Автомат Место установки Продажи Доход В свойстве "источник записей" данного отчёта указан SQL-запрос: Код:
В форме1 у меня есть 2 поля для ввода дат: в Поле1 ввожу "01.09.2009", в Поле2 ввожу "30.09.2009", нажимаю "Показать отчёт". При моём запросе в отчёте отображаются следующие данные: Автомат Место установки Продажи Доход 1 Пункт1 600 6000 2 Пункт4 400 4000 3 Пункт3 300 3000 Ошибки и Вопросы: -для автомата 2 указывается место установки только с 17го числа. Как сделать так, чтобы в Поле "Место установки" для данного автомата указывались бы Оба места его установки? -для автоматов 2 и 3 в полях "Продажи" и "Доход" выводятся августовские данные. Как сделать так, чтобы в случае отсутствия данных за требуемый месяц в указанных полях выводились бы нули? Последний раз редактировалось Stilet; 23.03.2010 в 16:53. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
![]()
Здравствуйте Botanik1987.
по поводу применения SQL конструкции с обращением к контролам формы (отчета) Вы можете прочесть здесь. Всё остальное (анализ и советы) возможны только после изучения Вашей конструкции. Для увеличения вероятности оказания помощи, выкладывайте архив с заранее подготовленным файлом БД (подготовка подразумевает - избавление от переизбыточных данных, избавление от OLE объектов и сжатие средствами MS Access) на странице с вопросом. Евгений. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 26.09.2008
Сообщений: 38
|
![]()
Выкладываю исходник базы)вопрос остаётся в силе))
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
![]()
Здравствуйте Botanik1987.
в существующем виде Ваша задача не может быть выполнена корректно. 1. не создано нормализованное отношение таблиц (отношение многие-к-многим не приемлемо) 2. отчетный период и период установки не соответствуют и потому вычисление "Продаж" и "Дохода" для "Места установки" не может быть выполнено. такие впечатления. ![]() Евгений. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 26.09.2008
Сообщений: 38
|
![]()
Связь должна быть "Один ко многим"?
Что периоды не совпадают-это я понимаю,Для Таблицы2 пока вижу выход в том, что надо в начале каждого месяца обновлять информацию по месту установки. Раньшн при отсутствии каких-либо данных у меня отчёт вообще не отображался.Потом условия отбора были слегка изменены.В случае полного заполнения всех данных (по каждому месяцу) отображается правильная информация, а вот при отсутствии данных по продажам в отчётном периоде отображаются данные предыдущего месяца-это не совсем верно)) А вот как сделать, чтобы при отсутствии этих самых данных показывались бы нули, я пока хз))) |
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
![]()
"Связь должна быть "Один ко многим"?" - да, и только в такой конструкции возможна корректная работа.
"периоды не совпадают-это я понимаю..." - понимание и "в начале каждого месяца..." никак не решат проблему, необходим пересмотр структуры БД. Обо всём остальном "рассуждать" можно только после корректировки Вашей конструкции. Евгений. Последний раз редактировалось Teslenko_EA; 25.12.2009 в 19:29. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 26.09.2008
Сообщений: 38
|
![]()
Изменил немного структуру (хотя, в принципе, она такой и была-я просто сразу всё не выложил
![]() ![]() |
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
![]()
Здравствуйте Botanik1987.
Мои "соображения" в файле. Удачи Вам. С Новым Годом. Евгений. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 26.09.2008
Сообщений: 38
|
![]()
Добрый день!
Подскажите, плз)) Имеется запрос: SELECT Культуры_на_полях.Культура, Поля.Поле, Культуры_на_полях.[Дата посева] FROM Поля INNER JOIN Культуры_на_полях ON Поля.Поле = Культуры_на_полях.Поле WHERE (((Культуры_на_полях.[Дата посева])<=[Forms]![MenuCult]![Поле4])); В условие надо добавить ещё >=(01.01.год из [Forms]![MenuCult]![Поле4]).Как это сделать, я не знаю... Пример:поле4=23.03.2010=> условие должно быть >=01.01.2010 и <=23.03.2010 Заранее спасибо ![]() И ещё вопрос: в форме имеются два поля для ввода дат(поле1 и поле2) и свободное поле3 Допустим, поле1=первое число месяца любого года, а поле2-последнее число этого же месяца этого же года. Как сделать так, чтобы полю3 после ввода значения в поле2 автоматически присваивалось бы название этого месяца? Заранее благодарю ![]() Последний раз редактировалось Botanik1987; 23.03.2010 в 18:24. |
![]() |
![]() |
![]() |
#10 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
![]()
Здравствуйте Botanik1987.
Если Вы откроете учебник, то наверняка найдете описание оператора Between, с помощью которого можно создать подобную конструкцию: WHERE [Дата посева] Between [Forms]![MenuCult]![Поле4] and [Forms]![MenuCult]![Поле4] Евгений. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите сделать запрос с параметром-датой | Herly | Помощь студентам | 9 | 22.12.2009 18:42 |
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi | S_Yevgeniy | Помощь студентам | 1 | 27.10.2009 06:26 |
SQL запрос - проблема с датой | Serval | Помощь студентам | 2 | 22.01.2009 19:35 |
нужно составить запрос с датой и временем! | student90 | БД в Delphi | 5 | 26.09.2008 05:43 |
SQL запрос на основе другого SQL запрса... | Timoxa | БД в Delphi | 1 | 07.01.2007 18:15 |