Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Несоответствие типов данных, в ​выражении условия отбора 
:(
    Опции темы
vicq
Дата 24.1.2008, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



использую дату из DateTimePicker в условии отбора, выдает ошибку "несоответствие типов данных в выражении условия отбора"

Код

NewRec.RecDate:=DateToStr(DateOfRec.Date);

 DataModule1.ADOQuery1.SQL.Clear;
 DataModule1.ADOQuery1.SQL.Add('SELECT Код_Записи FROM Запись WHERE Запись.Дата_Записи= "'+NewRec.RecDate+'"');
 DataModule1.ADOQuery1.Active:=True;


причем добавление даты выполняется и не ругается 
Код

  DataModule1.ADOQuery1.SQL.Add('INSERT INTO Запись(Дата_Записи, Время_Записи)');
  DataModule1.ADOQuery1.SQL.Add('VALUES("'+NewRec.RecDate+'", "'+NewRec.RecTime+'")');
  DataModule1.ADOQuery1.ExecSQL;



драйвер MS Jet, база Access

подскажите что делать?

Это сообщение отредактировал(а) vicq - 24.1.2008, 01:17
PM MAIL ICQ   Вверх
Komatoz
Дата 24.1.2008, 03:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 2.7.2004
Где: Ю-Сахалинск

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



Формат даты походу надо править

вот посмотри должно помочь

Это сообщение отредактировал(а) Komatoz - 29.4.2009, 10:16
PM MAIL WWW   Вверх
Frees
Дата 24.1.2008, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Код

 DataModule1.ADOQuery1.SQL.Clear;
 DataModule1.ADOQuery1.SQL.Add('SELECT Код_Записи FROM Запись WHERE Запись.Дата_Записи= :Data_Record');
 DataModule1.ADOQuery1.Prepare; 
 DataModule1.ADOQuery1.SQL.ParamByName('Data_Record').AsDate := DateOfRec.Date;
 DataModule1.ADOQuery1.ExecSQL;


а так тоже не работает?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
vicq
Дата 24.1.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



2Frees

ты немного не так написал, методы напутал
Код

  DataModule1.ADOQuery1.SQL.Add('SELECT Код_Записи FROM Запись WHERE Запись.Дата_Записи= :Date');
  DataModule1.ADOQuery1.Prepared;
  DataModule1.ADOQuery1.Parameters.ParamByName('Date').Value:= DateOfRec.Date;
  DataModule1.ADOQuery1.ExecSQL;



если я использую переменные , он пишет что "не может найти переменную", здесь тоже самое. хотя одна переменная в другом запросе работает... так и не разобрался от чего зависит..

2Komatoz
там тип входной переменной TDateTime а у меня TDateTimePicker, Делфи ругается
PM MAIL ICQ   Вверх
Rodman
Дата 24.1.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Код

  DataModule1.ADOQuery1.Close;
  DataModule1.ADOQuery1.Clear;
  DataModule1.ADOQuery1.SQL.Add('SELECT Код_Записи FROM Запись WHERE Запись.Дата_Записи= :Prm');
  DataModule1.ADOQuery1.Parameters.ParamByName('Prm').Value:= DateOfRec.Date;//проверь что в переменной DateOfRec.Date передается
  DataModule1.ADOQuery1.Open;

что так не получается... и что конкретно передается?*!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
vicq
Дата 24.1.2008, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



в переменной DateOfRec.Date передается дата в виде dd/mm/yyyy
как выглядит тип дата в Access?

а переменные SQL  Делфи напрочь не видит...
вдит только одну переменную в других 2-х запросах

Это сообщение отредактировал(а) vicq - 24.1.2008, 17:57
PM MAIL ICQ   Вверх
Rodman
Дата 24.1.2008, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Цитата(vicq @  24.1.2008,  16:45 Найти цитируемый пост)
в переменной DateOfRec.Date передается дата в виде dd/mm/yyyy

ваще-то надо dd.mm.yyyy

Код

DataModule1.ADOQuery1.Close;
  DataModule1.ADOQuery1.Clear;
  DataModule1.ADOQuery1.SQL.Add('SELECT Код_Записи FROM Запись WHERE Запись.Дата_Записи= :Prm');
  DataModule1.ADOQuery1.Parameters.ParamByName('Prm').Value:= StringReplace(DateOfRec.Date, '/', '.', [rfReplaceAll]);
  DataModule1.ADOQuery1.Open;

Цитата(vicq @  24.1.2008,  16:45 Найти цитируемый пост)
а переменные SQL  Делфи напрочь не видит...

как это?
Цитата(vicq @  24.1.2008,  16:45 Найти цитируемый пост)
вдит только одну переменную в других 2-х запросах

не понял
PM MAIL WWW Skype GTalk YIM MSN   Вверх
vicq
Дата 24.1.2008, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



создаю переменную, например вручную, при компиляции ошибка: parameter 'Per' not found

но пременные в 2-х других запросах работают

пишут что если дату загнать в SQLпеременную то всё заработает.

почему не видны переменные SQL ?
PM MAIL ICQ   Вверх
Rodman
Дата 24.1.2008, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Цитата(vicq @  24.1.2008,  17:55 Найти цитируемый пост)
создаю переменную, например вручную, при компиляции ошибка: parameter 'Per' not found

код покажи...

Цитата(vicq @  24.1.2008,  17:55 Найти цитируемый пост)
пишут что если дату загнать в SQLпеременную то всё заработает.

если передаешь через параметр, то конвертация происходит при помощи функциональности делфей

Цитата(vicq @  24.1.2008,  17:55 Найти цитируемый пост)
почему не видны переменные SQL ? 

а где ты смотришь?*
PM MAIL WWW Skype GTalk YIM MSN   Вверх
vicq
Дата 24.1.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вручную в смысле не программно
user posted image

обращение:
Код

DataModule1.ADOQuery1.Parameters.ParamByName('Date').Value:=DateTimePicker1.Date

PM MAIL ICQ   Вверх
vicq
Дата 24.1.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



разобрался =) заработало!!!
переменную SQL я реализовал вот так
Код

  DataModule1.ADOQuery1.SQL.Add('SELECT Код_Записи FROM Запись WHERE Запись.Дата_Записи= :Date');
  DataModule1.ADOQuery1.Parameters.ParamByName('Date').Value:=s; //тут присваиваю дату для сравнения в запросе, подробнее см.ниже
  DataModule1.ADOQuery1.Active:=True;

предварительно в Properties ADOQuery1 / Parameters создал переменную Date, тип выбрал ftDate
и в свойстве ParamCheck компонента ADOQuery1 поставил True

в Access дата выглядит вот так:  24012008 20:37
соответственно краткий формат 24012008
поэтому из нашей даты(24.01.2008) убираем точки
Код

  s:=DateToStr(DateOfRec.Date);
  Delete(s, 3, 1);
  Delete(s, 6, 1);


у меня получилось так. может кто и подругому сделает.
PM MAIL ICQ   Вверх
Komatoz
Дата 25.1.2008, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 2.7.2004
Где: Ю-Сахалинск

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



вот пример

Код

ADOQuery.SQL.Text:='Insert into TABL Values('''+formatdatetime('yyyy/mm/dd',strtodatetime(Edit1.text))+''')';

PM MAIL WWW   Вверх
Vas
Дата 27.1.2008, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Код

 DataModule1.ADOQuery1.SQL.Add('SELECT Код_Записи FROM Запись WHERE Запись.Дата_Записи= :DateBegin');
 DataModule1.ADOQuery1.Parameters.ParseSQL(SQL.Text, True);
 DataModule1.ADOQuery1.Parameters.ParamByName('DateBegin').Value:=Now;
 try 
   DataModule1.ADOQuery1.Open;
 except;
 end;



--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
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.0548 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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