Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 0
Регистрация: 25.04.2019
Сообщений: 43

Несоответствие типов данных в выражении условия отбора

18.07.2019, 09:31. Показов 2688. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется 2 столбца в таблице Access 2010: "Текстовой" и "Числовой". Оба "обязательно для заполнения - нет". При заполнении таблицы в ручную и не внося никаких данный в эти 2 столбца, никакой ошибки не возникает. Но при попытке внести запись в таблицу через c++ builder sql запрос: Пустое поле "текстовой", всё успешно, но если попытаться внести пустое поле "числового поля" возникает ошибка в билдере "Несоответствие типов данных в выражении условия отбора". Я понимаю что можно сделать это поле текстовым и в билдере в поле "Edit2" выставить галочку "numbers only", но хочется понять причину.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.07.2019, 09:31
Ответы с готовыми решениями:

"Несоответствие типов данных в выражении условия отбора"
Ошибка несоответствия при удалении ADOQuery12->SQL->Clear(); ADOQuery12->SQL->Add("DELETE ,,, FROM WHERE...

"Несоответствие типов данных в выражении условия отбора"
Прошу помочь. Есть две основные формы: форма, где я добавляю/редактирую данные и форма для просмотра с DBGridом. Добавление работает,...

Фильтр по дате: ошибка "Несоответствие типов данных в выражении условия отбора"
Здравствуйте! База данных в Access, нужно выбрать все записи с даты (например: 10.02.2016) по дате (например: 15.02.2016) по нажатию...

13
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
18.07.2019, 10:07
xaochuk, Код создания записи в студию
0
1 / 1 / 0
Регистрация: 25.04.2019
Сообщений: 43
18.07.2019, 10:13  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
                AnsiString id="[ID]";
        AnsiString name="[Наименование подъемника]";
        AnsiString win="[Заводской номер]";
        AnsiString holder="[Владелец]";
        AnsiString date_r="[Год выпуска поъемника]";
        AnsiString m_h="[Моточасы]";
        AnsiString war="[Гарантийный случай]";
        AnsiString reason="[Суть рекламации]";
        AnsiString var15="[Дата обращения]";
 
        AnsiString var1="[RSE-11/VPOL]";
        AnsiString var2="[Компоратор]";
        AnsiString var3="[Пропорционалка]";
        AnsiString var4="[Перегруз (плата)]";
        AnsiString var5="[Джойстик]";
        AnsiString var6="[Проводка]";
        AnsiString var7="[Концевые выключатели]";
        AnsiString var8="[Кнопки]";
        AnsiString var9="[Барабан]";
        AnsiString var10="[Звуковой сигнал]";
        AnsiString var11="[Реле]";
        AnsiString var12="[СБУК]";
        AnsiString var13="[Тензодатчик]";
        AnsiString var14="[ОПГ ДН]";
 
Form1->ADOQuery1->SQL->Text="INSERT INTO Electrics ("+id+","+name+","+win+","+holder+","+date_r+","+m_h+","+war+","+reason+","+var1+","+var2+","+var3+","+var4+","+var5+","+var6+","+var7+","+var8+","+var9+","+var10+","+var11+","+var12+","+var13+","+var14+","+var15+") VALUES("+cur_max+",:Поле1,:Поле2,:Поле3,:Поле4,:Поле5,:Поле6,:Поле7,:Поле8,:Поле9,:Поле10,:Поле11,:Поле12,:Поле13,:Поле14,:Поле15,:Поле16,:Поле17,:Поле18,:Поле19,:Поле20,:Поле21,:Поле22)";
        Form1->ADOQuery1->Parameters->Items[0]->Value=Elevator_name->Text;
        Form1->ADOQuery1->Parameters->Items[1]->Value=Elevator_win->Text;
        Form1->ADOQuery1->Parameters->Items[2]->Value=Edit4->Text;
        Form1->ADOQuery1->Parameters->Items[3]->Value=Edit3->Text;
        Form1->ADOQuery1->Parameters->Items[4]->Value=Edit2->Text;
        Form1->ADOQuery1->Parameters->Items[5]->Value=CheckBox1->Checked;
        Form1->ADOQuery1->Parameters->Items[6]->Value=Edit5->Text;
        Form1->ADOQuery1->Parameters->Items[7]->Value=CheckBox6->Checked;
        Form1->ADOQuery1->Parameters->Items[8]->Value=CheckBox7->Checked;
        Form1->ADOQuery1->Parameters->Items[9]->Value=CheckBox8->Checked;
        Form1->ADOQuery1->Parameters->Items[10]->Value=CheckBox9->Checked;
        Form1->ADOQuery1->Parameters->Items[11]->Value=CheckBox10->Checked;
        Form1->ADOQuery1->Parameters->Items[12]->Value=CheckBox11->Checked;
        Form1->ADOQuery1->Parameters->Items[13]->Value=CheckBox12->Checked;
        Form1->ADOQuery1->Parameters->Items[14]->Value=CheckBox13->Checked;
        Form1->ADOQuery1->Parameters->Items[15]->Value=CheckBox14->Checked;
        Form1->ADOQuery1->Parameters->Items[16]->Value=CheckBox2->Checked;
        Form1->ADOQuery1->Parameters->Items[17]->Value=CheckBox3->Checked;
        Form1->ADOQuery1->Parameters->Items[18]->Value=CheckBox4->Checked;
        Form1->ADOQuery1->Parameters->Items[19]->Value=CheckBox5->Checked;
        Form1->ADOQuery1->Parameters->Items[20]->Value=CheckBox15->Checked;
        Form1->ADOQuery1->Parameters->Items[21]->Value=DateTimePicker1->Date;
        Form1->ADOQuery1->ExecSQL();
0
Модератор
 Аватар для D1973
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,385
Записей в блоге: 3
18.07.2019, 10:23
Цитата Сообщение от xaochuk Посмотреть сообщение
Я понимаю что можно сделать это поле текстовым
А я не понимаю, зачем такое делать... Просто, если нужный Эдит пуст - не включайте это поле в список полей в запросе - и все... А в конструкторе таблицы необходимо для этого поля убрать значение по умолчанию...
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
18.07.2019, 10:28
А если так?
C++
1
2
3
4
5
6
7
8
9
10
 Form1->ADOQuery1->Active = false;
 Form1->ADOQuery1->SQL->Text = "Select * From Electrics";
 Form1->ADOQuery1->Open();
 Form1->ADOQuery1->Active = true;
   
    Form1->ADOQuery1->Insert();
        Form1->ADOQuery1->Fields->Fileds[0]->AsString  = Edit1->Text;
        Form1->ADOQuery1->Fields->Fileds[1]->AsInteger = Edit1->Text.ToInt();
.........................................................................
        Form1->ADOQuery1->Post();
Добавлено через 2 минуты
Ну или к филдам обратиться по именам.
0
1 / 1 / 0
Регистрация: 25.04.2019
Сообщений: 43
18.07.2019, 10:30  [ТС]
'' is not a valid integer value
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
18.07.2019, 10:31
Цитата Сообщение от xaochuk Посмотреть сообщение
'' is not a valid integer value
Ну проверку организовать на пустой едит

Добавлено через 21 секунду
Или значение по умолчанию туда записать
0
1 / 1 / 0
Регистрация: 25.04.2019
Сообщений: 43
18.07.2019, 10:32  [ТС]
Просто интересно почему тогда пустое поле в "текстовую" ячейку пишется без ошибки
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
18.07.2019, 10:33
Типа
C++
1
Form1->ADOQuery1->Fields->Fileds[1]->AsInteger = Edit2->Text.ToIntDef(0)
0
1 / 1 / 0
Регистрация: 25.04.2019
Сообщений: 43
18.07.2019, 10:41  [ТС]
Просто требуется чтобы это поле было именно пустым, при отсутствии данных, чтобы в дальнейшем "0" не ввёл в заблуждение, при расчёте статистики
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
18.07.2019, 10:43
Цитата Сообщение от xaochuk Посмотреть сообщение
чтобы это поле было именно пустым, при отсутствии данных
C++
1
2
  if(Edit2->Text!="")
   Form1->ADOQuery1->Fields->Fileds[1]->AsInteger = Edit2->Text.ToIntDef(0);
0
Модератор
 Аватар для D1973
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,385
Записей в блоге: 3
18.07.2019, 10:52
xaochuk, а Вы посты через 1 читаете? Я же уже сказал, что делать надо - лично у меня все прекрасно отрабатывает, ячейка остается пустой...
0
1 / 1 / 0
Регистрация: 25.04.2019
Сообщений: 43
18.07.2019, 11:01  [ТС]
нет, все подряд читаю) просто не могу догнать как цитировать сообщения, чтобы люди понимали, кому я отвечаю) У Вас работает без каких либо условия? Просто по записи пустого поля, оно же и записывается?
0
Модератор
 Аватар для D1973
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,385
Записей в блоге: 3
18.07.2019, 11:08
Лучший ответ Сообщение было отмечено xaochuk как решение

Решение

Цитата Сообщение от xaochuk Посмотреть сообщение
У Вас работает без каких либо условия?
Цитата Сообщение от D1973 Посмотреть сообщение
если нужный Эдит пуст - не включайте это поле в список полей в запросе
конечно же с проверкой!
C++
1
2
3
4
5
6
String s;
if(Edit1->Text.Trim().Length() == 0)
   s = String().sprintf("INSERT INTO T1 (Fld4) VALUES (%s)", QuotedStr(Edit2->Text));
else s = String().sprintf("INSERT INTO T1 (Fld2, Fld4) VALUES (%s, %s)", Edit1->Text, QuotedStr(Edit2->Text));
ADOQuery1->SQL->Text = s;
ADOQuery1->ExecSQL();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.07.2019, 11:08
Помогаю со студенческими работами здесь

Несоответствие типов данных в выражении условия отбора
string query = "SELECT np FROM Par WHERE pp = 123"; OleDbCommand command = new OleDbCommand(query, myConnection); string k =...

Несоответствие типов данных в выражении условия отбора
Несоответствие типов данных в выражении условия отбора проблема с поиском по БД с буквами все норм работает а как только введешь цифру...

Несоответствие типов данных в выражении условия отбора
Доброго вечера всем присутствующим. Не подскажете в чём проблема? Код записан таким образом: Form2.ADOQuery1.Close; ...

Несоответствие типов данных в выражении условия отбора
добрый день! не подскажите в чем заключается данная ошибка Warning: odbc_execute() : SQL error: Несоответствие типов данных в выражении...

Несоответствие типов данных в выражении условия отбора
Доброго времени суток! Делаю отбор данных по дате. БД Аксесс, отбор через делфи. тип поля Date_costs - Дата/Время. На форме есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru