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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2012, 18:05   #1
shadow-2005
Пользователь
 
Регистрация: 18.05.2007
Сообщений: 10
По умолчанию Ошибка "несоответствие типов данных в выражении условия отбора"

Доброго времени суток.

При использовании связки ADOConnection -> ADOQuery (access)
делаю выборку из базы
Код:
with MainDM.adoqOperTimeTurboUnit do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT Day AS Дата, ');

    ********

    SQL.Add('SteamPipe \ 60 & ":" & SteamPipe Mod 60  AS Наработка_паропроводов, ');
    SQL.Add('SumWork AS Суммарная_наработка, ');
    SQL.Add('StationNumber AS num ');
    SQL.Add('FROM OperTimeTurboUnit');
    SQL.Add('WHERE DAY BETWEEN :MinDate AND :MaxDate');
    Parameters.ParamByName('MinDate').Value := MinDate;
    Parameters.ParamByName('MaxDate').Value := MaxDate;
    Open;
  end;

выборка нормально отображается в DBGrid.

Далее пытаюсь записать в поле (в access - текстовое) значение:


with MainDM.adoqOperTimeTurboUnit do
begin
First; // переходим на первую запись
while not Eof do
begin
Edit;
FieldByName('Суммарная_наработка'). AsString := IntToStr(11);
Next;
end;
end;


и вылетаю с ошибкой "несоответствие типов данных в выражении условия отбора"!
В чем причина?

Заранее спасибо.

Последний раз редактировалось Stilet; 26.09.2012 в 21:09.
shadow-2005 вне форума Ответить с цитированием
Старый 26.09.2012, 19:46   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
FieldByName('Суммарная_наработка'). Value:=...
Так не пробовали, без задания типа поля?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 26.09.2012, 19:51   #3
shadow-2005
Пользователь
 
Регистрация: 18.05.2007
Сообщений: 10
По умолчанию

Попробовал, та же песня.

Интересно, что если написать
Код:
while not Eof do
  begin
    Edit;
    FieldByName('Суммарная_наработка').Value := IntToStr(11);
    ShowMessage(FieldByName('Суммарная_наработка').AsString);
    Next;
  end;
то сообщение '11' проходит, а вот на Next происходит ошибка.

Последний раз редактировалось Stilet; 26.09.2012 в 21:14.
shadow-2005 вне форума Ответить с цитированием
Старый 26.09.2012, 20:02   #4
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
Сообщение от shadow-2005 Посмотреть сообщение
while not Eof do
begin
Edit;
FieldByName('Суммарная_наработка'). Value := IntToStr(11);
ShowMessage(FieldByName('Суммарная_ наработка').AsString);
Next;
end;
1. а что, Post не делается?
2. а если
Код:
FieldByName('Суммарная_наработка').Value := 11;
?
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 26.09.2012, 20:12   #5
shadow-2005
Пользователь
 
Регистрация: 18.05.2007
Сообщений: 10
По умолчанию

На сколько я знаю, Next вызывает Post автоматом (но пробовал и с ним - не работает).
Поле в базе 'текстовое' писать в него 11 напрямую пожалуй неверно.

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

Последний раз редактировалось Stilet; 26.09.2012 в 21:14.
shadow-2005 вне форума Ответить с цитированием
Старый 26.09.2012, 21:16   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Next вызывает Post автоматом
Откуда такие сведения?
Есть такое понятие - autocommit, означающее сохранение результатов выполнения запроса немедленно, но оно не везде поддерживается, поскольку представляет собой ручной тормоз для программ.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.09.2012, 21:23   #7
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
Сообщение от shadow-2005 Посмотреть сообщение
Поле в базе 'текстовое' писать в него 11 напрямую пожалуй неверно.
не факт ... ой не факт)))
мы же указали .Value что уже само собой "преобразование типов"
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неопределенная функция "Environ("UserName") в выражении artlos БД в Delphi 0 15.08.2012 23:37
Ошибка: "Несоответствие требованиям" MrRockchip WordPress и другие CMS 2 14.06.2012 21:17
Ошибка не соответствие типов данных в условии отбора Dvoishnik Помощь студентам 9 25.09.2011 18:03
Элементарный "Условия отбора" Ksy Microsoft Office Access 1 24.04.2010 18:43