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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2013, 17:25   #1
hauk70
Пользователь
 
Регистрация: 06.05.2012
Сообщений: 22
По умолчанию Несоответствие типов данных в выражении условия отбора

Сабж, что не соответствует я так и не понял, дебагер мне все показал отлично.MSAccess + ado
Таблица Книга учета:
ID записи - счетчик
ID посетителя - числовой
Дата оплаты - дата/время
Уплачено - денежный
Оформляющий - числовой

Код:
Код:
procedure TMain_Form.AddToBook(ID:integer;cost:real;name:integer);
begin
try
with Unit1.DataModule1.FlowOfFounds_Query do
    begin
    Close;
    sql.Clear;
    SQL.Add('INSERT INTO [Книга учета] ([ID посетителя], [Дата оплаты], Уплачено, Оформляющий) VALUES (:i, :d, :c, :n)');
    Parameters.ParamByName('i').Value:=id;
    Parameters.ParamByName('d').Value:=now;
    Parameters.ParamByName('c').Value:=cost;
    Parameters.ParamByName('n').Value:=name;
    ExecSQL;
    end;
except
  on e:Exception do  Application.ShowException(E);
end;
end;

Последний раз редактировалось hauk70; 14.05.2013 в 18:18.
hauk70 вне форума Ответить с цитированием
Старый 14.05.2013, 17:42   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

какой тип у переменной cost?.
возможно попробовать
Код:
Parameters.ParamByName('d').Value:=DateToStr(now);
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 14.05.2013, 18:20   #3
hauk70
Пользователь
 
Регистрация: 06.05.2012
Сообщений: 22
По умолчанию

внес правка и выделил жирным, но все равно не работает
DateToStr(now) не помог, да и тип данных у меня дата/время же
hauk70 вне форума Ответить с цитированием
Старый 14.05.2013, 18:31   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
var d: TDateTime;

d:=Trunc(now);
Parameters.ParamByName('d').Value:=d;
или
Код:
Parameters.ParamByName('d').Value:=Date;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.05.2013, 20:36   #5
hauk70
Пользователь
 
Регистрация: 06.05.2012
Сообщений: 22
По умолчанию

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

d:=Trunc(now);
Parameters.ParamByName('d').Value:=d;
или
Код:
Parameters.ParamByName('d').Value:=Date;
ошибка на месте
hauk70 вне форума Ответить с цитированием
Старый 14.05.2013, 20:47   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

чудес не бывает.
Значит, либо поле имеет другой тип, либо Вы что-то делаете не так!

выложите скриншот структуры или (лучше) выложите архив с вашей БД.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.05.2013, 23:59   #7
hauk70
Пользователь
 
Регистрация: 06.05.2012
Сообщений: 22
По умолчанию

я понял и в тоже время ни черта не понял о_о ругается на переменную name(integer=1) при дебаге я отчетливо вижу там единицу(!!!), но он на нее ругается, а вот если тупо вписать 1 то все работает... кто подскажет что за ересь?

ЗЫ Serge_Bliznykov, вы же программист, вы должны в них верить
hauk70 вне форума Ответить с цитированием
Старый 15.05.2013, 08:41   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

чудес не бывают. А вот глюки - бывают!! )

ладно. давайте попробуем разобраться дальше...

1)
Цитата:
Несоответствие типов данных в выражении условия отбора
почему отбора? Вы же, вроде бы, вставку делаете?!

2)
Цитата:
но он на нее ругается, а вот если тупо вписать 1 то все работает
покажите код, которые работает с "вписанной единицей".


3)
Цитата:
о_о ругается на переменную name
Давайте скриншот ошибки, как именно ругается...


если долго мучится, то что-нибудь получится.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.05.2013, 09:18   #9
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

А чего не все поля в квадратных скобках?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 15.05.2013, 09:39   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
А чего не все поля в квадратных скобках?
Они не нужны если имя не содержит некошерные (типа пробела) симолы.
Код:
procedure TMain_Form.AddToBook(ID:integer;cost:real;name:integer);
begin
try
with Unit1.DataModule1.FlowOfFounds_Query do
    begin
    Close;
    SQL.Text:=('INSERT INTO [Книга учета] ([ID посетителя], [Дата оплаты], Уплачено, Оформляющий) VALUES ('
+IntToStr(id)+', Date(), '+IntToStr(cost)+', '+IntToStr(name)+')');
    ExecSQL;
    end;
except
  on e:Exception do  Application.ShowException(E);
end;
end;
Что выдает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несоответствие типов данных SeNaT БД в Delphi 1 07.05.2013 12:54
Ошибка "несоответствие типов данных в выражении условия отбора" 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