Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Почему не выполняется SQL-запрос / 9 сообщений из 9, страница 1 из 1
16.08.2003, 12:23
    #32238184
var_max
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не выполняется SQL-запрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Привет.
Подскажите в чем дело? Почему не выполнется SQL-запрос?

procedure TForm1.Button1Click(Sender: TObject);
begin
DataSource1.DataSet:= ADOQuery1;
With ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM Хабаровск');
SQL.Add('WHERE  month  BETWEEN  "'+DateEdit1.EditText+'" AND "'+DateEdit1.EditText+'"');
Open;
end;
end;
 --------> Выдает ошибку: НЕСООТВЕТСТВИЕ ТИПОВ ДАННЫХ В ВЫРАЖЕНИИ УСЛОВИЯ ЗАПРОСА
 

Если убрать кавычки  "дата" , то

procedure TForm1.Button1Click(Sender: TObject);
begin
DataSource1.DataSet:= ADOQuery1;
With ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM Хабаровск');
SQL.Add('WHERE  month  BETWEEN  '+DateEdit1.EditText+' AND '+DateEdit1.EditText+'');
Open;
end;
end;

 -------> В этом случае выдается др. ошибка: ЧИСЛО СОДЕРЖИТ СИНТАКСИЧЕСКУЮ ОШИБКУ
 
Пробовал вместо DateEdit1.EditText вставлять конкретные даты:
SQL.Add('WHERE  month  BETWEEN  "01.04.2003" AND "30.07.2003"');
Опять выдается ошибка как в первом случае!!!
Таблица Хабаровск храниться в Access, полю month присвоен краткий формат даты.
Заранее спосибо.
...
Рейтинг: 0 / 0
16.08.2003, 12:34
    #32238187
zDIV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не выполняется SQL-запрос
Я не силен, но что такое month, может быть это не дата (например, целое), и, вообще что за СУБД, допускающая Хабаровск, скажи, пожалуйста, любопытно.
А так, по сообщению, напрашивается, что month по типу не соответствует x1 и x2 (кстати, попробуй, например, month > x1, для "однозначности" сообщения об ошибке). Даже если соответствует, вдруг, все дело в разделителе-точке...
...
Рейтинг: 0 / 0
16.08.2003, 12:49
    #32238194
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не выполняется SQL-запрос
[month]
...
Рейтинг: 0 / 0
16.08.2003, 14:16
    #32238222
NightSpider
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не выполняется SQL-запрос
Если СУБД Access, то понятно - он не переваривает длату в таком видею Дата хранится почти как флоат, т.е. реал, целая часть - дата, дробная - время. Что за СУБД?
...
Рейтинг: 0 / 0
16.08.2003, 15:20
    #32238243
MrAlex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не выполняется SQL-запрос
Код: plaintext
1.
2.
3.
SELECT *
FROM Хабаровск
WHERE  month  BETWEEN  # 04 / 01 / 2003 # AND # 07 / 30 / 2003 #


Дата задается в таком виде #MM/DD/YYYY# ну или #MM/DD/YY#

zDIV писал:
и, вообще что за СУБД, допускающая Хабаровск, скажи, пожалуйста, любопытно


Access позваляет большие вольности, в том числе и название таблиц и полей на русском языке.
...
Рейтинг: 0 / 0
16.08.2003, 15:21
    #32238244
MrAlex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не выполняется SQL-запрос
Но лучше все-таки такие вещи делать через параметры.
...
Рейтинг: 0 / 0
16.08.2003, 15:24
    #32238246
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не выполняется SQL-запрос
Для Access
SQL.Add('WHERE month BETWEEN +DateValue("'+DateEdit1.EditText+'") AND DateValue("'+DateEdit1.EditText+'")');
...
Рейтинг: 0 / 0
16.08.2003, 16:05
    #32238267
var_max
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не выполняется SQL-запрос
---------->СУБД - Access
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Большое спасибо Cat2
Так все работает:
procedure TForm1.Button1Click(Sender: TObject);
begin
DataSource1.DataSet:= ADOQuery1;
With ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM Хабаровск');
SQL.Add('WHERE  [month]  BETWEEN  DateValue("'+DateEdit1.EditText+'") AND DateValue("'+DateEdit2.EditText+'")');
Open;
end;
end;
...
Рейтинг: 0 / 0
18.08.2003, 12:05
    #32238809
Papka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не выполняется SQL-запрос
>MrAlex

Вот это верно. А если и параметры по типу удут DateTime, то вообще проблем не будет.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Почему не выполняется SQL-запрос / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]