Поиск:

Ответ в темуСоздание новой темы Создание опроса
> диапазон значений от 1 до 18 через Between 
:(
    Опции темы
Yagmort
  Дата 9.12.2009, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

dm.ADOQ_V.Close;
dm.ADOQ_V.SQL.Clear;
dm.ADOQ_V.SQL.Add('SELECT  vozrast Between 1 And 18,*');
dm.ADOQ_V.SQL.Add('FROM VOZRAST_P INNER JOIN (UCHET INNER JOIN (PRICHINA_NETR INNER JOIN (KABINET INNER JOIN (DIAGNOZ INNER JOIN PACIENT ON DIAGNOZ.[id_dz] = PACIENT.[id_dz]) ON KABINET.[id_kabineta] = PACIENT.[id_kabineta])');
dm.ADOQ_V.SQL.Add('ON PRICHINA_NETR.[id_prichina_netudosp] = PACIENT.[id_prichina_netudosp]) ON UCHET.[id_uch] = PACIENT.[id_uch]) ON VOZRAST_P.[id_vozrasta] = PACIENT.[id_vozrasta]');
dm.ADOQ_V.Open;


Вверху строчкой хочу вывести диапазон значений от 1 до 18. Он мне выдает, там где должны были быть значения от 1 до 18 число (-1), а те которые не входят в диапазон (0), пробовал еще так:
Код

dm.ADOQ_V.Close;
dm.ADOQ_V.SQL.Clear;
dm.ADOQ_V.SQL.Add('SELECT  *');
dm.ADOQ_V.SQL.Add('FROM VOZRAST_P INNER JOIN (UCHET INNER JOIN (PRICHINA_NETR INNER JOIN (KABINET INNER JOIN (DIAGNOZ INNER JOIN PACIENT ON DIAGNOZ.[id_dz] = PACIENT.[id_dz]) ON KABINET.[id_kabineta] = PACIENT.[id_kabineta])');
dm.ADOQ_V.SQL.Add('ON PRICHINA_NETR.[id_prichina_netudosp] = PACIENT.[id_prichina_netudosp]) ON UCHET.[id_uch] = PACIENT.[id_uch]) ON VOZRAST_P.[id_vozrasta] = PACIENT.[id_vozrasta] WHERE PACIENT.[vozrast] Between 1 And 18');
dm.ADOQ_V.Open;


В этом случае он ругается на синтаксис и все, мануалов норм. по JET SQL я не нашел ( такое ощущение, что WHERE тут вообще не катит, или я не знаю его синтаксиса.... :( Хотя в обычном MySQL делал такое не раз и все работало....

Это сообщение отредактировал(а) Yagmort - 9.12.2009, 18:47
PM MAIL   Вверх
~FoX~
Дата 9.12.2009, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Цитата

Синтаксис
выражение [Not] Between значение_1 And значение_2

Ниже перечислены аргументы оператора Between...And:

Элемент Описание 
выражение Выражение, определяющее поле, значение которого нужно вычислить. 
              значение_1, значение_2 Выражения, задающие границы диапазона. 


Дополнительные сведения
Если значение поля, определенного в аргументе выражение, попадает в диапазон, задаваемый аргументами значение_1 и значение_2 (включительно), оператор Between...And возвращает значение True; в противном случае возвращается значение False. Логический оператор Not позволяет проверить противоположное условие (что выражение находится за пределами диапазона, заданного с помощью аргументов значение_1 и значение_2).

Оператор Between...And часто используют для проверки, попадает ли значение поля в указанный диапазон чисел. В следующем примере проверяется, был ли заказ отправлен в место, индекс которого попадает в указанный диапазон. Если значение индекса попадает в диапазон от 109000 до 109999, функция IIf возвращает значение «Местный». В противном случае, она возвращает значение «Междугородный».

SELECT IIf(Индекс Between 109000 And 109999, "Местный", "Междугородный")

FROM Заказы


Если выражение, значение_1 или значение_2 имеет значение Null, оператор Between...And возвращает значение Null.

Поскольку подстановочные знаки (например, знак звездочки * ) считаются текстовыми символами, их нельзя использовать в операторе Between...And. Например, нельзя задать 980* и 989* для поиска всех индексов, начинающихся с цифр от 980 до 989. Для выполнения этой задачи воспользуйтесь другими способами. Можно добавить выражение в запрос, который отбирает в текстовом поле три левых знака и применяет к ним оператор Between...And. Или добавьте к значениям верхней и нижней границы недостающие знаки, в данном случае от 98000 до 98999 или от 98000 до 98999 – 9999, если используются дополнительные индексы (в США почтовый индекс может иметь формат ХХХХХ-ХХХХ). (Для значения нижней границы знаки – 0000 следует опустить. В противном случае индекс 98000 будет пропущен, если некоторые индексы имеют дополнительные разделы, а другие нет).





--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Данкинг
Дата 9.12.2009, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



А where чем не годится? ИМХО самое оно. Другое дело, что лично я сразу так не представляю, куда именно его здесь вставлять, так как запрос страшный очень. smile 

Это сообщение отредактировал(а) Данкинг - 9.12.2009, 19:38


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
~FoX~
Дата 9.12.2009, 20:40 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Код

SELECT * FROM TabName WHERE FieldNAme BETWEEN 1 AND 18;



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Akella
Дата 10.12.2009, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(Yagmort @  9.12.2009,  18:44 Найти цитируемый пост)
SELECT  vozrast Between 1 And 18

Хде ты такое вычитал О_О
PM MAIL   Вверх
Yagmort
Дата 10.12.2009, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(~FoX~ @ 9.12.2009,  20:40)
Код

SELECT * FROM TabName WHERE FieldNAme BETWEEN 1 AND 18;

В данном запросе не катит такое, я в начале писал...

Добавлено через 46 секунд
Цитата(Данкинг @ 9.12.2009,  19:37)
А where чем не годится? ИМХО самое оно. Другое дело, что лично я сразу так не представляю, куда именно его здесь вставлять, так как запрос страшный очень. smile

Acces его составлял а не я (

Добавлено через 1 минуту и 25 секунд
Цитата(Akella @ 10.12.2009,  10:43)
Цитата(Yagmort @  9.12.2009,  18:44 Найти цитируемый пост)
SELECT  vozrast Between 1 And 18

Хде ты такое вычитал О_О

нигде методом научного тыка
PM MAIL   Вверх
Данкинг
Дата 10.12.2009, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Yagmort @  10.12.2009,  13:18 Найти цитируемый пост)
я в начале писал...

А если в самом конце попробовать?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Yagmort
Дата 10.12.2009, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Все народ разобрался кому надо смотрите)))
Код

dm.ADOQ_V.Close;
dm.ADOQ_V.SQL.Clear;
dm.ADOQ_V.SQL.Add('SELECT *');
dm.ADOQ_V.SQL.Add('FROM VOZRAST_P INNER JOIN (UCHET INNER JOIN (PRICHINA_NETR INNER JOIN (KABINET INNER JOIN (DIAGNOZ INNER JOIN PACIENT ON DIAGNOZ.[id_dz] = PACIENT.[id_dz]) ON KABINET.[id_kabineta] = PACIENT.[id_kabineta])');
dm.ADOQ_V.SQL.Add('ON PRICHINA_NETR.[id_prichina_netudosp] = PACIENT.[id_prichina_netudosp]) ON UCHET.[id_uch] = PACIENT.[id_uch]) ON VOZRAST_P.[id_vozrasta] = PACIENT.[id_vozrasta] WHERE (((vozrast) BETWEEN 1 and 18))');
dm.ADOQ_V.Open;


Это сообщение отредактировал(а) Yagmort - 11.12.2009, 05:54
PM MAIL   Вверх
Akella
Дата 12.12.2009, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



[QUOTE=Yagmort,10.12.2009,  13:18]
Цитата(~FoX~ @ 9.12.2009,  20:40)
[code=sql]
Добавлено @ 13:19
Цитата(Akella @ 10.12.2009,  10:43)
Цитата(Yagmort @  9.12.2009,  18:44 Найти цитируемый пост)
SELECT  vozrast Between 1 And 18

Хде ты такое вычитал О_О

нигде методом научного тыка

Ааа, ну-ну smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


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

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


 




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


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

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