Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.08.2024
Сообщений: 13
RAD XE3+

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

18.08.2024, 17:01. Показов 1211. Ответов 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
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 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 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
19.08.2024, 01:23
Цитата Сообщение от Elfix Посмотреть сообщение
Ну тут проблема в том, что он ожидает WideString вместо LongInt или наоборот, LongInt вместо WideString.
Почему не могу понять.
И никто не сможет понять
Цитата Сообщение от krapotkin Посмотреть сообщение
без минимального проекта
0
Модератор
 Аватар для D1973
9928 / 6465 / 2457
Регистрация: 21.01.2014
Сообщений: 27,420
Записей в блоге: 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
9928 / 6465 / 2457
Регистрация: 21.01.2014
Сообщений: 27,420
Записей в блоге: 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
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
19.08.2024, 21:56
мне обычно всегда хватало свойств, которые устанавливаются в гриде )
0
Модератор
 Аватар для D1973
9928 / 6465 / 2457
Регистрация: 21.01.2014
Сообщений: 27,420
Записей в блоге: 3
20.08.2024, 05:55
Цитата Сообщение от Elfix Посмотреть сообщение
Что же делать тогда с этой ошибкой?
Ну вот, таки, снова приходим все к тому же заключению:
Цитата Сообщение от krapotkin Посмотреть сообщение
тут скорее всего без минимального проекта не помочь
0
пофигист широкого профиля
4770 / 3205 / 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 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru