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

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

Непонятки с запросом [D7, ADO + MsAccess]


Страницы:   1 2 3

Ozone ©   (2004-07-15 06:58:00) 

Выполняю такой запрос:

UPDATE TABLE_NAME
SEL FIELD_NAME = 1
WHERE (ClientID = :ID)
AND  (:PicTime BETWEEN BeginD and EndD)


Делаю:

//TADOQuery

Active := false;
Parameters.ParamValues['ID'] := ...;
Parameters.ParamValues['PicTime'] := ...;
ExecSQL;


Выдает ошибку - "Отсутствует значение одного или нескольких параметров".

Такой запрос с тем же вызовом проходит на ура:

SELECT *
FROM TABLE_NAME
WHERE (ClientID = :ID)
AND  (:PicTime BETWEEN BeginD and EndD)


Где я чего не усмотрел?


Ozone   (2004-07-15 11:51:00) [1]

NAlexey ©   (15.07.04 11:30) [44]

Ничего что тобой перечислено там не наблюдается.
А насчет статического запроса - попробую.


Johnmen   (2004-07-15 11:50:00) [2]

>NAlexey ©   (15.07.04 11:42) [45]

Ну почему же. Очень даже естественно. Ведь проверка на вхождение в диапазон, а не на точное совпадение...


NAlexey   (2004-07-15 11:42:00) [3]

>Johnmen ©   (15.07.04 10:11) [30]
Хм... По моему это както неестественно. Всеравно что написать так:
select * from Table where 1 in (Field1, Filed2, Filed3). Короче ч.з одно место.


NAlexey   (2004-07-15 11:30:00) [4]

>Ozone
Такой вопрос. Какие значения принимают поля BeginD и EndD. Есть ли записи у которых BeginD равно EndD и есть ли записи у которых EndD меньше BeginD.

>А что думаете по-поводу Ozone [14]?
А думаю я вот что, надо попробывать подставлять значения не через параметры, а напрямую, т.е написать статичный запрос, посомтреть какие значения есть в таблице, вставить их напрямую в запрос и выполнить.


bushmen   (2004-07-15 11:29:00) [5]

> Johnmen ©   (15.07.04 11:23) [42]

Как звучит в оригинале, сказать не могу - нет англоязычного офиса под рукой


Johnmen   (2004-07-15 11:23:00) [6]

>bushmen ©   (15.07.04 11:19) [41]

Спасибо переводчикам с незаконченным средним...:)))


bushmen   (2004-07-15 11:19:00) [7]

> Johnmen ©   (15.07.04 09:53) [22]

Наконец, добрался до справки по Access. Там написано:

"Оператор Between...And
Определяет принадлежность значения выражения указанному диапазону. Этот оператор можно использовать в инструкциях SQL.

Синтаксис:

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

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

значение_1, значение_2  Выражения, задающие границы диапазона. "


Ozone   (2004-07-15 11:12:00) [8]

Хорошо, привожу как в Access'e

1:
Number    - Счетчик
ClientID  - Числовой
CTime     - Дата/Время
Path      - Текстовый

2:
SessionID - Счетчик
ClientID  - Числовой
BeginD    - Дата/Время
EndD      - Дата/Время
SError    - Числовой


bushmen   (2004-07-15 11:09:00) [9]

> Ozone ©   (15.07.04 11:03) [37]

И у тебя их быть не может. Ты пытаешься перечислить типы, к которым ты приводишь значения в Дельфях. А я тебя просил описать структуру так, как она представлена в Access'e


Johnmen   (2004-07-15 11:08:00) [10]

>Ozone ©   (15.07.04 11:03) [37]
>А у меня вот есть - значь я обенный? И ошибки у меня особенные?

Тебе кажется, что есть... Потому, что путаешь никак не связанные вещи: средство разработки программ Delphi с его типами TField, TIntegerField etc, и базу данных с таблицами, типа Аксесс etc...


Ozone   (2004-07-15 11:03:00) [11]

Johnmen ©   (15.07.04 10:57) [36]

:) А у меня вот есть - значь я обенный? И ошибки у меня особенные?


Johnmen   (2004-07-15 10:57:00) [12]

>Ozone ©   (15.07.04 10:53) [35]

Таких типов полей табл. не существует в природе...:)


Ozone   (2004-07-15 10:53:00) [13]

1:
Number    - TAutoIncField
ClientID  - TIntegerField
CTime     - TDateTimeField
Path      - TWideStringField

2:
SessionID - TAutoIncField
ClientID  - TIntegerField
BeginD    - TDateTimeField
EndD      - TDateTimeField
SError    - TIntegerField


bushmen   (2004-07-15 10:47:00) [14]

> Ozone ©   (15.07.04 10:34) [32]

Привиди, пожалуйста полностью структуру таблицы


Johnmen   (2004-07-15 10:39:00) [15]

А поле SError в таблице у тебя какого типа?


Ozone   (2004-07-15 10:34:00) [16]

bushmen ©   (15.07.04 10:13) [31]

TIntegerField


bushmen   (2004-07-15 10:13:00) [17]

А поле SError у тебя какого типа?


Johnmen   (2004-07-15 10:11:00) [18]

>NAlexey ©   (15.07.04 09:57) [26]
>Потому как какой смысл писать:
>select * from Table where 2 between 1 and 3...

Ты несколько не прав...
То, что ты привел - бессмысленно. Но совсем не бессмысленно
select * from Table where 2 between field1 and field2...


Ozone   (2004-07-15 10:06:00) [19]

bushmen ©   (15.07.04 10:03) [27]

То же самое...


Ozone   (2004-07-15 10:05:00) [20]

NAlexey ©   (15.07.04 09:57) [26]

Все когда-то бывает в первый раз...

А что думаете по-поводу Ozone [14]?


Страницы:   1 2 3

Наверх

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