Модераторы: Akina
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> пустая строка в запросе 
V
    Опции темы
shserg
Дата 7.10.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.10.2009

Репутация: нет
Всего: нет



Здравствуйте,
возникла такая проблемма:
Из таблицы "расход" делаю запрос "от даты и до даты" (запрос по датам) 
дальше из запроса по датам делаю запросы по форматам (10;9;...) с сумированием полей качества
и если движения по складу например формата 9 не было получаю ("граблями по лбу..") запрос с отсутствуюшей строкой выборки...., даже не знаю как это называется null или пусто... функцию NZ([    ];0) куда уже только не воткнул, в одном случае получил введите значение аргумента [   ] при нажатии ввод заносилось значение 0 что собственно и надо, только автомагически.... Есть ли возможность обойти "эти грабли"?

С уважением,
жду ответа!
PM MAIL   Вверх
bopoha
Дата 7.10.2009, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



shserg, выклайдывайте бд с примером. Не понятно, что за проблема.
PM MAIL WWW ICQ Skype GTalk   Вверх
shserg
Дата 7.10.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.10.2009

Репутация: нет
Всего: нет



например запрос "расход остаток 9"

С благодарностью за помощь!

Это сообщение отредактировал(а) Akina - 7.10.2009, 16:11
PM MAIL   Вверх
Djinn
Дата 7.10.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



В общем проверку делать так:
Код

If IsNull(Data_k.value) Then
        Data_k.value = "99"
    End If
    If IsNull(Data_p.value) Then
        Data_p.value = "0"
    End If


Сам с таким сталкивался ток smile

Добавлено через 1 минуту и 25 секунд
Если я правильно вопрос понял
PM MAIL   Вверх
Akina
Дата 7.10.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454




M
Akina
shserg, марш читать http://forum.vingrad.ru/forum/topic-260944.html
Устное (на первый раз) предупреждение.
Присоединённый файл удалён.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
shserg
Дата 7.10.2009, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.10.2009

Репутация: нет
Всего: нет



Djinn,  Сорри я не такой продвинутый.... куда вставить этот код?

Большое спасибо за помощь!
PM MAIL   Вверх
shserg
Дата 7.10.2009, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.10.2009

Репутация: нет
Всего: нет



Приношу свои извинения модератору... исправил всё как положено.

Запустить запрос "Расход остаток 9"
запрос "Расход остаток 9Н" оставлен как образец того что хотелось бы получить с "0", т.к. дальше данные будут использоваться в вычислениях...

С надеждой на помощь!


Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  ___________.zip 219,07 Kb
PM MAIL   Вверх
Akina
Дата 7.10.2009, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Посмотрел. Бред какой-то...

Смотрим запрос "Расход остаток 9".
Код

SELECT DISTINCTROW Sum(NZ([Расход остаток по дате].А1,0)) AS [Sum-А1]
                 , Sum(NZ([Расход остаток по дате].А2,0)) AS [Sum-А2]
                 , Sum(NZ([Расход остаток по дате].Б1,0)) AS [Sum-Б1]
                 , Sum(NZ([Расход остаток по дате].Б2,0)) AS [Sum-Б2]
                 , Sum(NZ([Расход остаток по дате].НТ,0)) AS [Sum-НТ]
                 , Sum(NZ([Расход остаток по дате].Хоз,0)) AS [Sum-Хоз]
                 , Sum(NZ([Расход остаток по дате].Экспорт,0)) AS [Sum-Экспорт]
FROM [Расход остаток по дате]
GROUP BY NZ([Формат],9)
       , NZ([Формат квм],0)
HAVING NZ([Формат],9)="9";

Источником его данных является запрос "Расход остаток по дате".
При этом отбираются (HAVING) только те группы, для которых [Расход остаток по дате].[Формат] равен 9 либо null.

Смотрим запрос "Расход остаток по дате".
Код

SELECT Расход.Число
     , Расход.Формат
     , Расход.[Формат квм]
     , Расход.А1
     , Расход.А2
     , Расход.Б1
     , Расход.Б2
     , Расход.НТ
     , Расход.Хоз
     , Расход.Экспорт
     , Расход.[Брак упаковка]
     , Расход.[Брак обивка]
FROM Расход
WHERE Расход.Число<#10/1/2009#
ORDER BY Расход.Число;


Поле "Формат" берётся напрямую из таблицы "Расход".

Смотрим структуру таблицы "Расход". Поле "Формат" - подстановочное типа текст(50), nullable, с фиксированным списком значений 9;8;10;6;"9Н";"6Н";2.

Открываем данные таблицы. Обнаруживаем  единственную запись с форматом "9" и ни одной записи с форматом "null". Обращаем внимание на поле "Число" этой записи (3.10.2009), понимаем, что отбор в запросе "Расход остаток по дате" по этому параметру она не пройдёт. Т.е. запрос "Расход остаток 9" в качестве источника данных получит пустой набор, и соответственно пустой же набор и вернёт.

Смотрим на топикстартера и задаём логичный вопрос: 
- Аффтар, ты зачем нам фигню какую-то подсунул?



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
shserg
Дата 7.10.2009, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.10.2009

Репутация: нет
Всего: нет



дак в том то и дело что по складу в один месяц может проходить формат "9", а может и нет... я и сказал что запр0с пустой, но что делать если потом нужно считать "приход"-"расход", вот и вопрос можно ли получить в этом запросе 0 чтобы потом можно было использовать в дальнейших вычислениях?
PM MAIL   Вверх
Akina
Дата 7.10.2009, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(shserg @  7.10.2009,  21:43 Найти цитируемый пост)
можно ли получить в этом запросе 0 чтобы потом можно было использовать в дальнейших вычислениях? 

нет.

Цитата(shserg @  7.10.2009,  21:43 Найти цитируемый пост)
что делать 

Перестать писАть левой пяткой и взяться за основы. Понять что такое нормализация БД, что такое сущности, по какому принципу данные распределяются по таблицам и т.п.
Станет сразу понятно 1) почему текущая структура - плохая 2) какая структура в данном случае правильная. А после исправления ошибок твоя проблема рассосётся сама собой. Вернее, у неё не будет даже шанса возникнуть.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
shserg
Дата 7.10.2009, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.10.2009

Репутация: нет
Всего: нет



как бы обмануть...
PM MAIL   Вверх
Akina
Дата 7.10.2009, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



shserg, я вполне серьёзно - Вы сейчас строите себе (и другим, вероятно) огромный сарай, набитый граблями. Некоторые уже вываливаются в дверь и окна, и Вы на них наступаете. Дальше будет только хуже...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
shserg
Дата 9.10.2009, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.10.2009

Репутация: нет
Всего: нет



Akina, таблицы длинные получаются..( от чего хотелось бы уйти но видно не судьба....
PM MAIL   Вверх
shserg
Дата 9.10.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.10.2009

Репутация: нет
Всего: нет



А всё оказалось до банальности просто...!!!!!
Добавил в таблицу записи дальним числом с 0 значениями, и всё побежало!!! Грабли кончились!!!
Был ещё вопрос за период т.к. в запрос от даты конца периода до даты начала периода строки дальним числом не попадали, но и тут оказалось всё просто! Заменил запрос за период разницей между концом и началом, и всё!!!!

Даже если Вас съели у Вас есть всегда два выхода!!!!

P.S. писАть левой пяткой не могу в виду её отсутствия - инвалид....
PM MAIL   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.1084 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.