Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

где ошибка в запросе?


xyz ©   (2009-10-15 14:05:00) 

Есть sql-запрос:
select [Типы товара].[Тип товара], Товар.Наименование, Имущество.Количество
from [Типы товара], Товар, Имущество m1
where (m1.[код товара]=Товар.[код товара]) and
([Типы товара].[код типа товара]=Товар.[Код типа товара]) and
(m1.[дата/время]=(select min(m2.[дата/время]) from Имущество m2
where (m1.[№ склада]=m2.[№ склада]) and (m1.[код товара]=m2.[код товара])
and (m1.[дата/время]=m2.[дата/время])
and (m2.[дата/время]>:dat)))


В таблице "Имущество" ключевое поле составное, поэтому так много сравнений. От него требуется вывод количества товара, кот. было на складе на начало даты, записанной в параметре dat компонента adoquery. (Предполагается, что в таблице существует запись на эту дату). Я пробовал этот запрос в разных вариациях, но везде получал ошибку:
"отсутствует значение для одного или нескольких требуемых параметров". Сам этот параметр я не забываю установить таким образом:
adoquery1.Parameters.ParamByName('dat').Value:=datetimepicker1.DateTime;
Какой еще параметр ему нужен?

Сами таблицы такие:
"Имущество" с полями:
№ склада (ключевое)
код инвентаря (кл.)
количество
дата/время (кл.)

"Товар" с полями:
Наименование
Код типа товара
Код товара (кл.)

"Типы товара" с полями:
Тип товара
Код типа товара (кл.)

БД - Access


Медвежонок Пятачок   (2009-10-15 14:56:00) [1]

ну так dat то участвует в условии подзапроса а не в основном условии


xyz   (2009-10-15 14:51:00) [2]


> может так?
> select [Типы товара].[Тип товара], Товар.Наименование, m1.
> Количество
> from [Типы товара], Товар, Имущество m1

Работает, но неправильно. Выдает все записи, которые >dat, независимо минимум это или нет.


Медвежонок Пятачок   (2009-10-15 14:41:00) [3]

Это ошибка в имени таблицы или очередное напоминание всем эстетам, дающим русские имена объектам бд.


Sergey13   (2009-10-15 14:40:00) [4]

> [0] xyz   (15.10.09 14:05)
> select [Типы товара].[Тип товара], Товар.Наименование, Имущество.Количество
> from [Типы товара], Товар, Имущество m1

может так?
select [Типы товара].[Тип товара], Товар.Наименование, m1.Количество
from [Типы товара], Товар, Имущество m1


xyz   (2009-10-15 14:36:00) [5]

Вообще, если добавить в select любое другое поле из таблицы "Имущество", то и оно тоже делается параметром. Глюк?


Медвежонок Пятачок   (2009-10-15 14:34:00) [6]

оказалось, что Имущество.Количество - это тоже параметр

надо в это верить


xyz   (2009-10-15 14:28:00) [7]

Я его выполнил в access'е, оказалось, что Имущество.Количество - это тоже параметр (с его точки зрения). Но мне-то его нужно как данность вывести


sniknik   (2009-10-15 14:15:00) [8]

> где ошибка в запросе?
знаки препинания неверно расставил... надо так -
где ошибка? в запросе! :)

> БД - Access
> "отсутствует значение для одного или нескольких требуемых параметров".
все что jet не определяет, не находит в полях, он считает за параметр. в самом access-е (программе)  по такой ошибке всплывает окно для вводе значения.
выполни для проверки запрос там.

и кстати
> :dat)
напиши с пробелом, так :dat ), были вопросы с подобным, у кого то не определялся последний параметр если после него что то стоит впритык. (хотя это вряд ли)


Наверх

Титульная страница Поиск, карта сайта Написать письмо