0 / 0 / 0
Регистрация: 17.08.2024
Сообщений: 13
RAD XE3+

Ошибка: Type mismatch for field 'quantity', expecting: WideString actual: LargeInt

18.08.2024, 17:01. Показов 1260. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Использую Delphi 11 Comunity Edition. Подключаюсь к базе данных SQLLite через компонент FDConnection.
Подключаю таблицу ProductionTable через компонент FDQuery ну и связываю с DBGrid через DataSource.

Когда в таблице имеются данные, я через редактор (FieldEditor) добавляю все поля из таблицы ( команда Add all fields).
Запускаю приложение, все прекрасно работает.

Потом удаляю все данные из таблицы и при перезапуске программы возникает вот такая ошибка:

Project App.exe raised exception class EDatabaseError with message 'ProductionTable: Type mismatch for field 'quantity', expecting: LargeInt actual: WideString'.
Приходится снова лезть в редактор, удалять поле quantity и добавлять его снова через команду Add all fields.
Программа снова запускается, в таблице как и положено отсутствуют записи. Как только записи появляются в таблице при перезапуске моей программы снова возникает ошибка:

Project App.exe raised exception class EDatabaseError with message 'ProductionTable: Type mismatch for field 'quantity', expecting: WideString actual: LargeInt'.
Текст запроса такой:

SQL
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
SELECT
 
production.organizationID,
production.departmentID,
production.realEstateID,
production.productID,
production.trademarkID,
production.productionTechnologyID,
production.startDate,
production.finishDate,
CAST(SUM(production.quantity) AS NUMERIC(15, 3)) AS quantity,
products.displayName AS product,
trademarks.displayName AS trademark,
currencies.displayName AS currency,
realEstate.displayName AS realEstate,
productionTechnologies.displayName AS productionTechnology
 
FROM production
LEFT JOIN products ON products.ID = production.productID
LEFT JOIN trademarks ON trademarks.ID = production.trademarkID
LEFT JOIN currencies ON currencies.ID = production.currencyID
LEFT JOIN realEstate ON realEstate.ID = production.realEstateID
LEFT JOIN productionTechnologies ON productionTechnologies.ID = production.productionTechnologyID
 
GROUP BY
production.organizationID,
production.departmentID,
production.realEstateID,
production.productID,
production.trademarkID,
production.productionTechnologyID,
production.startDate,
production.finishDate,
products.displayName,
trademarks.displayName,
currencies.displayName,
realEstate.displayName,
productionTechnologies.displayName
 
HAVING SUM(production.quantity) <> 0
Т. е. именно ошибка в вычисляемом поле.
Какая то ошибка в приведении типов, программа пугается, когда видит пустую запись.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.08.2024, 17:01
Ответы с готовыми решениями:

Ошибка в ADOQuery: Type mismatch for field 'phisical_io', expecting: LargeInt actual: BCD
Товарищи ситуация такая: есть стандартная ADOQuery, которая забирает данные из поля bigint, соответственно в Query это поле прописывается...

Ошибка при переходе от БД Access к SQL Server "Type mismatch for field 'Дата', expecting: DateTime actual: WideString"
Здравствуйте! Взял готовый проект с СУБД Access и перегнал БД с помощью Microsoft SQL Server Migration Assistant for Access в БД SQL...

MySql. Ошибка: Type mismatch for field...
Для доступа к Mysql юзаю MyDAC. Обнаружилась проблема, возникающая при выборке: Поле имеет формат fkData. Теперь самое интересное) ...

10
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
18.08.2024, 18:52
тут скорее всего без минимального проекта не помочь
0
0 / 0 / 0
Регистрация: 17.08.2024
Сообщений: 13
18.08.2024, 19:41  [ТС]
Ну тут проблема в том, что он ожидает WideString вместо LongInt или наоборот, LongInt вместо WideString.
Почему не могу понять.
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
19.08.2024, 01:23
Цитата Сообщение от Elfix Посмотреть сообщение
Ну тут проблема в том, что он ожидает WideString вместо LongInt или наоборот, LongInt вместо WideString.
Почему не могу понять.
И никто не сможет понять
Цитата Сообщение от krapotkin Посмотреть сообщение
без минимального проекта
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,425
Записей в блоге: 3
19.08.2024, 04:51
Цитата Сообщение от Elfix Посмотреть сообщение
Потом удаляю все данные из таблицы
БД предназначена для хранения данных. Вот и храните, а удалять их не надо. Почти никогда не надо: случаи, когда действительно "надо", можно пересчитать по пальцам.

Добавлено через 2 минуты
Цитата Сообщение от Elfix Посмотреть сообщение
программа пугается, когда видит пустую запись
А поле quantity у Вас, случайно, не создано как NOT NULL?
0
0 / 0 / 0
Регистрация: 17.08.2024
Сообщений: 13
19.08.2024, 09:45  [ТС]
Поле quantity это NOT NULL с DEFAULT 0.
Но суть не в этом. Речь не идет о записи, где это поле NULL.
Речь идет о том, что вся запись отсутствует и программа почему то начинает ждать от него тип WideString или LargeInt.
Это похоже.на какой то глюк Delphi. Но я не понимаю как его решить.

Данные в базе никуда не исчезают. Но когда срабатывает условие HAVING SUM(production.quantity) <> 0 возникает отсутствующая запись.
Ну и очень спорное утверждение не удалять никаких записей из таблицы, потому что возникает ошибка приведения типов.
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,425
Записей в блоге: 3
19.08.2024, 10:17
Цитата Сообщение от Elfix Посмотреть сообщение
очень спорное утверждение не удалять никаких записей из таблицы, потому что возникает ошибка приведения типов
Не надо привязывать мои слова только к Вашей проблеме. Я говорю "не удалять" не из-за какой-то там ошибки, а только потому, что я, в принципе, противник физического удаления данных из таблиц БД.
Цитата Сообщение от Elfix Посмотреть сообщение
Это похоже.на какой то глюк Delphi.
т.е. непосредственно в СУБД запрос работает корректно?
0
0 / 0 / 0
Регистрация: 17.08.2024
Сообщений: 13
19.08.2024, 20:50  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
т.е. непосредственно в СУБД запрос работает корректно?
Да, конечно. Я сейчас провел эксперимент. Вообще удалил все поля из редактора полей. И все заработало без каких-либо ошибок. Но и в DBGrid конечно все поля выгрузились, включая сервисные, которые пользователю видеть не следует.

Что же делать тогда с этой ошибкой? Не пользоваться редактором полей? А как тогда устанавливать DisplayWidth и DisplayLabel ставить? Опять же с видимостью полей играть...
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
19.08.2024, 21:56
мне обычно всегда хватало свойств, которые устанавливаются в гриде )
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,425
Записей в блоге: 3
20.08.2024, 05:55
Цитата Сообщение от Elfix Посмотреть сообщение
Что же делать тогда с этой ошибкой?
Ну вот, таки, снова приходим все к тому же заключению:
Цитата Сообщение от krapotkin Посмотреть сообщение
тут скорее всего без минимального проекта не помочь
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
21.08.2024, 01:59

Не по теме:

Вот меня всегда бесило это "наличие двух бакалейных лавок на одной улочке". Поля датасета и колонки дбгрида.


Цитата Сообщение от Elfix Посмотреть сообщение
Что же делать тогда с этой ошибкой?
У нас именно этой ошибки нет. Она возникает в вашем коде, которого мы не видим полностью.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.08.2024, 01:59
Помогаю со студенческими работами здесь

Ошибка при компиляции: cannot pass object of non-trivial type 'System::WideString' through variadic method
Код. String NotesWind1 = &quot;?&quot;; String NotesWind2 = &quot;Пользователь: &quot;; if(MessageBox(0, String().sprintf(L&quot;%s&quot;,...

Ошибка 13:Type mismatch
Ошибка 13:Type mismatch Здравствуйте,если не сложно посмотрите и скажите,что же я делаю не так?

Ошибка 26: Type mismatch
помогите исправить данную ошибку, 15/11 (выдает после Maximum(a, ) USES CRT,progr7; Type dmyarray = Array Of Integer; VAR ...

Ошибка 13 type mismatch
Помогите пожалуйста разаобаться с ошибкой в коде.Буду признателен. Ошибка 13 type mismath Public Sub zapsuk() Dim i...

Ошибка Type Mismatch
Здравствуйте, нам консультанты составили калькулятор в excel и честно говоря пропали. У нас к сожалению нет программистов по VBA. А...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru