Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.12.2009, 17:11   #1
Yur@
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 29
По умолчанию Проблема с диапазоном дат

Ошибка несоответствия типов данных в выражении условия отбора
В Ассess поле 'RDate' имеет тип дата/время

Код:
procedure TForm3.Button2Click(Sender: TObject);
var startdate,finishdate:TDateTime;
begin
startdate:=DateTimePicker1.Date;
finishdate:=DateTimePicker2.Date;
dm.ADOQuery6.Active:=false;
dm.ADOQuery6.SQL.Text:='select * from client where rdate between "'+DateToStr(startdate)+'" and "'+DateToStr(finishdate)+'"';
dm.ADOQuery6.ExecSQL;
dm.ADOQuery6.Active:=true;
end;
Выбирал 'краткий формат даты' типа dd.mm.yyyy ....Не помогло
Подскажите, в чём проблема?
Yur@ вне форума
Старый 16.12.2009, 18:25   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Так попробуй:
Код:
procedure TForm3.Button2Click(Sender: TObject);
var startdate,finishdate:TDateTime;
begin
startdate:=DateTimePicker1.Date;
finishdate:=DateTimePicker2.Date;
dm.ADOQuery6.Active:=false;
dm.ADOQuery6.SQL.Clear; //желательно очищать текст предыдущего запроса
dm.ADOQuery6.SQL.Text:='select * from client where rdate between '+QuotedStr(startdate)+' and '+QuotedStr(finishdate);
dm.ADOQuery6.ExecSQL; //эта строка лишняя. Что-то одно.
dm.ADOQuery6.Active:=true;
end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось mihali4; 16.12.2009 в 18:51.
artemavd вне форума
Старый 16.12.2009, 18:48   #3
Yur@
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 29
По умолчанию

artemavd
Не катит =(
Incompatible types: 'String' and 'TDateTime'
Yur@ вне форума
Старый 16.12.2009, 19:04   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

А так:
Код:
procedure TForm3.Button2Click(Sender: TObject);
var startdate,finishdate:TDateTime;
begin
startdate:=DateTimePicker1.Date;
finishdate:=DateTimePicker2.Date;
dm.ADOQuery6.Active:=false;
dm.ADOQuery6.SQL.Clear; //желательно очищать текст предыдущего запроса
dm.ADOQuery6.SQL.Text:='select * from client where rdate between '+QuotedStr(DateToStr(startdate))+' and '+QuotedStr(DateToStr(finishdate));
dm.ADOQuery6.ExecSQL; //эта строка лишняя. Что-то одно.
dm.ADOQuery6.Active:=true;
end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 16.12.2009, 19:10   #5
Yur@
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 29
По умолчанию

Тоже не подходит
"Ошибка несоответствия типов данных в выражении условия отбора"
Yur@ вне форума
Старый 16.12.2009, 19:28   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Какого типа у вас поле, где хранится дата?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 16.12.2009, 19:36   #7
Yur@
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 29
По умолчанию

тип 'Дата/Время'
Если поставить тип 'Текстовой',то значения будут выходить за границы, указанные в DateTimePicker1,2
Yur@ вне форума
Старый 16.12.2009, 20:15   #8
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

во-первых, надо делать не ExecSQL, а Open!
а во-вторых, зачем столько танцев с бубнами если можно написать сразу подставив даты?!
Код:
procedure TForm3.Button2Click(Sender: TObject);
var startdate,finishdate:TDateTime;
begin
if dm.ADOQuery6.Active then
  dm.ADOQuery6.Close;
dm.ADOQuery6.SQL.Text:='select * from client where rdate between :p0 and :p1';
dm.ADOQuery6.ParamByName('p0').AsDateTime := DateTimePicker1.Date;
dm.ADOQuery6.ParamByName('p1').AsDateTime := DateTimePicker2.Date;
dm.ADOQuery6.Open;
end;
soleil@mmc вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с именным диапазоном tae1980 Microsoft Office Excel 32 21.08.2009 11:10
Пользовательская функция с диапазоном в качестве параметра SanSanblch Microsoft Office Excel 2 29.05.2009 17:37
работа с выделенным диапазоном nastya007 Microsoft Office Excel 5 13.03.2009 08:33
Проблема с перебором значений дат (число.месяц) Serval Помощь студентам 2 20.01.2009 22:18
Как найти количество чётных чисел диапазоном от 1 до 11? SORIK Microsoft Office Excel 3 02.01.2008 23:37