![]() |
|
|
![]()
|
|
| FireAlex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 17.11.2004 Репутация: нет Всего: нет |
база на MSAccess, ado
такие таблицы. tblDATE -------------------------- DateId : счетчик fldate : DateTime tblOstatok ---------------------- IdOperator : integer DateId : integer Ostatok : integer tblOperator ------------------------- IdOperator : счетчик FIO : string в таблице tblOstatok по датам и операторам хранится остаток товара (в штуках). нужно написать такой запрос чтобы выдал список операторов и остаток товара на заданную дату ближайшую слева или равную ей. дата задается как параметр. то есть допустим задаю дату 12.12.2004 - находится запись в таблице tblOstatok с датой, меньшей или равной 12.12.2004 и выводится FIO оператора, дата, и остаток на эту дату и так далее по всем операторам... проблема как определить такую дату? |
|||
|
||||
| DDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 31.1.2005 Где: Москва Репутация: 5 Всего: 5 |
FireAlex
Если честно, не понял твой вопрос. тебе нужно помочь составить запрос, или сделать дату пареметром, или проблема в том, чтобы найти равную или первую по меньшинству? если дата нужна как параметр, то в тексте запрос пишешь что-то типа "... tblDATE.flDate<= [Дата:].." если нужна первая совпадающая, или меньше, что-то типа того:
Это сообщение отредактировал(а) DDX - 19.4.2005, 08:34 --------------------
Учиться, учитьcя и ещё раз учиться |
|||
|
||||
| DimW |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
Если я тебя правильно понял, то запрос будет возвращать оператора который формировал остаток на дату>=указанную дату. Добавлено @ 09:13
DDX можешь пояснить что это - [Дата:]? что то я не встречал такова синтаксиса в SQL... обычно параметр указывается как - :Дата |
||||
|
|||||
| DDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 31.1.2005 Где: Москва Репутация: 5 Всего: 5 |
DimW
этоя применительно к Access, на автопилоте) ты конечно прав только ты ещё, кажется, пропустил AS при задании таблиц: tblDATE tD ,tblOSTATOK tOST ,tblOPERATOR tOP Это сообщение отредактировал(а) DDX - 19.4.2005, 09:35 --------------------
Учиться, учитьcя и ещё раз учиться |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
а ты праверь!!! |
|||
|
||||
| DDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 31.1.2005 Где: Москва Репутация: 5 Всего: 5 |
и правда!)
век живи - век учись) DimW, извини.. Это сообщение отредактировал(а) DDX - 19.4.2005, 10:04 --------------------
Учиться, учитьcя и ещё раз учиться |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
ды ладно че ты... |
|||
|
||||
| FireAlex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 17.11.2004 Репутация: нет Всего: нет |
наконец то руки дошли...
ваши запросы немного не работают в том плане что выводится список всех операторов у которых остаток <=:pDate и ещё нельзя использовать псевдоним tOp - это я к DimW:)... я наваял в итоге такой запрос но он выводит повторяющиеся записи: скажем оператор1 12.12.2004 100 оператор1 13.12.2004 200 pDate = 14.12.2004. нужно чтобы первую строку не выводил. подскажите что не так в этом запросе:
|
|||
|
||||
| DimW |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
Аргументы пожалуйста...
это можно решить так:
|
||||||
|
|||||||
| FireAlex |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 17.11.2004 Репутация: нет Всего: нет |
по первой части:
а ты попробуй. TOP -эта такая инструкция SQL и когда пытаюсь выполнить твой запрос то получаем месагу - SYNTAX ERROR in FROM CLAUSE. кстати твой новый запрос
тоже дублирует операторов... |
||||
|
|||||
| DimW |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
сори...
мда, не досмотрел... запрос нехочит решаться стандартным SQL... |
||||
|
|||||
| Dimich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 25.8.2004 Где: Брянск Репутация: 3 Всего: 7 |
З.Ы. В Оракле будет работать, если ошибок синтаксических не наделал, а в аксесе должно.... Это сообщение отредактировал(а) Dimich - 22.4.2005, 13:44 --------------------
Не работает - исправь, работает - не трогай!!! |
|||
|
||||
| Dimich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 25.8.2004 Где: Брянск Репутация: 3 Всего: 7 |
Не спешите пробовать - не правильно работает вложенный селект, зараза
--------------------
Не работает - исправь, работает - не трогай!!! |
|||
|
||||
| Dimich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 25.8.2004 Где: Брянск Репутация: 3 Всего: 7 |
Вот рабочий вариант, только оговорка - таблица tbldate должна иметь уникальность по полю fldate
--------------------
Не работает - исправь, работает - не трогай!!! |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
Dimich, как я и предпологал такая конструкция в аксэсе не прокатила (говорит, что из подчененного запроса невозможно возвратить более одного поля ), а в оракле наура!!! По моему (касательно аксэса) праблема такова селекта не решаема...
Темнемение, такую структуру я встретил первый раз, даже вчера ее уже исмользовал (удобно блин!!!!). Dimich держи законный + FireAlex - если умудришься, не забывай об остальных!!! |
|||
|
||||
| Veniamin |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.3.2005 Репутация: нет Всего: нет |
база в Access, приложение на Delphi соединено через ADO. Хочу сделать запрос на вывод всех записей из главной таблицы в которых кабинеты следующие 211, 213. Пишу следующее:
При выполнении запроса выводится следующее: Несоответствие типов данных в выражении условия отбора. В чём причина? А если писать так:
то выводится след.ошибка : Missing operator or semicolon В главной таблице все поля имеют тип текстовый, кроме номера, он имеет тип - счётчик. Проверил в Query Analyzer-е SQL-Server 2000 подобный запрос
- всё работает, выводит все поля с заданным условием, а с Access что не так? Это сообщение отредактировал(а) Veniamin - 15.5.2008, 23:27 |
||||||
|
|||||||
| Deniz |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
Dimich, DimW, а почему не попробовать вместо:
Добавлено через 1 минуту и 46 секунд Veniamin, создай новое сообщение. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |