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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2013, 19:21   #1
helpkz
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 160
По умолчанию Несоответствие типов данных (Delphi+Access через ADO)

Добрый вечер!
Выходит ошибка:

Несоответствие типов данных в выражении условия отбора.
Вот код:
Код:
procedure TForm4.BitBtn1Click(Sender: TObject);
var count1,count2,won,draw,lose:integer;
team1,team2:string;
d:TDate;
begin

if (Edit1.Text='') or (Edit2.Text='') then begin ShowMessage('Ââåäèòå çíà÷åíèÿ!') end else

begin
team1:=DBComboBox1.Text;
team2:=ComboBox1.Text;
count1:=StrToInt(Edit1.Text);
count2:=StrToInt(Edit2.Text);
won:=0;
draw:=0;
lose:=0;
d:=MonthCalendar1.Date;
if count1>count2 then begin won:=1; end;
if count1<count2 then begin draw:=1; end;
if count1=count2 then begin lose:=1; end;
Form1.ADOQuery1.Close;
Form1.ADOQuery1.SQL.Clear;
Form1.ADOQuery1.SQL.Add('INSERT INTO matches (team1,won,draw,lose,team2,date1) VALUES (:tm1,:wn,:dr,:lo,:tm2,:dt)');
Form1.ADOQuery1.Parameters.ParamByName('tm1').Value:=team1;
Form1.ADOQuery1.Parameters.ParamByName('wn').Value:=won;
Form1.ADOQuery1.Parameters.ParamByName('dr').Value:=draw;
Form1.ADOQuery1.Parameters.ParamByName('lo').Value:=lose;
Form1.ADOQuery1.Parameters.ParamByName('tm2').Value:=team2;
Form1.ADOQuery1.Parameters.ParamByName('dt').Value:=d;
Form1.ADOQuery1.ExecSQL;
Form4.Close;
В Access стоит тип Дата


Почему ругается?
helpkz вне форума Ответить с цитированием
Старый 01.04.2013, 20:02   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

А Вы самим параметрам типы не зафиксировали случайно? А то может у Вас в свойствах запроса dr, например, объявлен как integer, а поле в таблице - текстовое.

Хотя возможно, что из-за чисто программного объявления draw: integer такая ситуация. Вопрос: почему Вы уверены, что дело именно в дате?

Ставьте точку останова на строчке формирования запроса и смотрите, что там получается в тексте после передачи параметров.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 01.04.2013, 20:26   #3
helpkz
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 160
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
почему Вы уверены, что дело именно в дате?
Без даты все работает. Попробовал поставить Showmessage на переменную "d", там формат: dd.mm.yy, и в Access тот же.
helpkz вне форума Ответить с цитированием
Старый 01.04.2013, 20:37   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

d: TDateTime;

d:=Trunc(MonthCalendar1.Date);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.04.2013, 21:21   #5
helpkz
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 160
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
d: TDateTime;

d:=Trunc(MonthCalendar1.Date);
Работает! Спасибо большое!
helpkz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка "несоответствие типов данных в выражении условия отбора" shadow-2005 БД в Delphi 6 26.09.2012 21:23
SQL. Несоответствие типов данных Xaenar БД в Delphi 1 22.06.2012 00:17
несоответствие типов данных Constellation Общие вопросы Delphi 4 28.06.2011 08:46
несоответствие типов Rin БД в Delphi 7 11.01.2011 14:27
Открытие(подключение) уже существующей базы данных MS Access через ADO Moel БД в Delphi 7 24.10.2007 16:57