Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
4 / 4 / 2
Регистрация: 13.11.2014
Сообщений: 108
Interbase

Delphi не видит поле в базе данных firebird 2.5 Dialect 3 типа varchar [1:50] массивное

12.12.2017, 20:56. Показов 2091. Ответов 7

Студворк — интернет-сервис помощи студентам
Exception class EDatabaseError with message 'IBQuery1: Field 'OPISAN' not found'.
Выдаёт мне ошибку после компиляции при обработке события, где есть любой код обращающийся к этому полю (OPISAN) в базе данных
Ну вот например такой код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm_test.Button1Click(Sender: TObject);
begin
IBQuery1.Active:=false;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('Select ID, OPISAN, NAME From ORION;');
IBQuery1.Active:=true;
ShowMessage(IBQuery1.FieldByName('NAME').AsString);
ShowMessage(IBQuery1.FieldByName('OPISAN').AsString); //если закомитим, то остановимся на case
case IBQuery1.FieldByName('OPISAN').DataType of       //даже если попробовать так
  ftString : ShowMessage('ftString');
  ftSmallint : ShowMessage('ftSmallint');
  ftInteger : ShowMessage('ftInteger');
  ftWord : ShowMessage('ftWord');
  ftBoolean : ShowMessage('ftBoolean');
  {... и т.д.}
  else
    ShowMessage('Незарегистрированный тип!');
end;
end;
Какого лешего он его не видит, в упор не понимаю, мб ошибка на поверхности и уже многие с ней сталкивались, там надо поле как то по особому составлять и т.д. и т.п., но уже многое перепробовал, ничего не помогает. Вот поле Name он выведет в message спокойно, а дальше Break и всё тут.
Ну и если просто попытаться вывести на DBGrid (пощелкая в настройках компонентов), то он его тупо проигнорирует и выведет только 2 поля, хоть как ты указывай запрос, хотя IBExpert всё спокойно выводит с запроса любого.
Миниатюры
Delphi не видит поле в базе данных firebird 2.5 Dialect 3 типа varchar [1:50] массивное   Delphi не видит поле в базе данных firebird 2.5 Dialect 3 типа varchar [1:50] массивное  
Вложения
Тип файла: rar test.rar (2.26 Мб, 6 просмотров)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2017, 20:56
Ответы с готовыми решениями:

Подключение к базе данных FireBird + Delphi XE5 + WIN64
Доброго времени суток, форумчане! Очень нужна ваша помощь! Пишу программу на Delphi XE5 и использую в ней базу данных firebird 2.5x64 и...

Firebird dialect 1 и dialect 3
Имеется ли обратная совместимость в диалектах FB? Есть БД, созданная с dialect 1. Можно ли работать с ней программе с использованием...

База FB: Необходимо поле таблицы типа Varchar изменить на значение из TextBox
Необходимо поле таблицы типа Varchar изменить на значение из текстбокса. Явного преобразования, как понял, нет. Помогите, спасибо.

7
 Аватар для drvolodko
224 / 68 / 33
Регистрация: 23.05.2014
Сообщений: 752
12.12.2017, 22:17
А вы в Ibquery1 случайно не определили список полей на этапе проектирования? Если определяли, то может выйти накладка.
0
4 / 4 / 2
Регистрация: 13.11.2014
Сообщений: 108
12.12.2017, 23:40  [ТС]
Цитата Сообщение от drvolodko Посмотреть сообщение
А вы в Ibquery1 случайно не определили список полей на этапе проектирования? Если определяли, то может выйти накладка.
Да не ничего не определенно.
если вы это имели в виду? <картинку прикрепил>
Там проект в архивчике скинул можете посмотреть.
Миниатюры
Delphi не видит поле в базе данных firebird 2.5 Dialect 3 типа varchar [1:50] массивное  
0
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
13.12.2017, 01:37
КиберСталкер21, советую вам задать сей вопрос на профильном для IB форуме.
0
 Аватар для MajentoDL
10 / 12 / 2
Регистрация: 01.09.2015
Сообщений: 105
13.12.2017, 08:39
А ты хочешь вывести массив как обычное поле? Ну, удачи
0
4 / 4 / 2
Регистрация: 13.11.2014
Сообщений: 108
13.12.2017, 09:51  [ТС]
Цитата Сообщение от MajentoDL Посмотреть сообщение
А ты хочешь вывести массив как обычное поле? Ну, удачи
ну что ж не знал, что всё будет так геморойно
...что самое интересное он это поле даже в коде не чует, ладно бы dbgrid его просто игнорил, но нет, field not found, даже когда запрос нормальный
ну в базе данных всё таки это и есть массив, на сколько я понимаю, т.е. поле - у поля тип данных строка, длиною 80, что кстати уже идёт как массив, т.к. строка это массив символов и тот же setlength одинаков что для строк, что для массивов в delphi, а тут у нас еще и двумерный массив, тобишь 50 строк по 80 символов, тип данных в принципе от этого даже не изменился, как был varchar, так и остался varchar, только с приставкой [80:50], а раньше была просто [80], т.е. всего дописав его же параметр в тип данных - всё мы вылетаем и вообще так не честно и мы не играем...
времени уже нет разведывать что да как дальше, будем выкручиваться из того, что есть, потом зададим еще и на IB форуме вопрос, интересно всё таки.
0
 Аватар для MajentoDL
10 / 12 / 2
Регистрация: 01.09.2015
Сообщений: 105
13.12.2017, 10:35
Лучший ответ Сообщение было отмечено КиберСталкер21 как решение

Решение

Это BLOB
1
4 / 4 / 2
Регистрация: 13.11.2014
Сообщений: 108
13.12.2017, 14:16  [ТС]
Цитата Сообщение от MajentoDL Посмотреть сообщение
BLOB
хорошо бы)
Но почему тогда этот участок кода не срабатывает?
Delphi
1
2
3
4
5
6
7
8
9
10
case IBQuery1.FieldByName('OPISAN').DataType of
  ftString : ShowMessage('ftString');
  ftSmallint : ShowMessage('ftSmallint');
  ftInteger : ShowMessage('ftInteger');
  ftWord : ShowMessage('ftWord');
  ftBoolean : ShowMessage('ftBoolean');
  {... и т.д.}
  else
    ShowMessage('Незарегистрированный тип!');
end;
если закомитим тот ShowMessage, ведь он на него не просто ругается, что не те данные, а ругается на то, что самого поля нет, да пусть оно будет хоть BLOB'ом хоть Variant'ом, хоть чем угодно ok, миримся с этим и пишем еще процедуру того как его затащить в поле memo, а потом из него и еще правильно обратно записать. Но где мне этот BLOB вытащить? Ведь мне даже его не дается, ничего не дается - вот в чем проблема.

Добавлено через 15 минут
Цитата Сообщение от MajentoDL Посмотреть сообщение
Это BLOB
блин тупанул)
пасиб натолкнули на мысль.
Задал в поле тип BLOB, только его Subtype указал не BINARY, а TEXT. Всё, всё норм, всё пашет)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.12.2017, 14:16
Помогаю со студенческими работами здесь

Преобразование типа данных varchar в тип данных smalldatetime привело к выходу значения за пределы диапазона
Здравствуйте. помогите пожалуйста. что может привести к этой ошибке(ошибка в заголовке темы)? DECLARE @counter int, ...

Ошибка при преобразовании типа данных varchar к int
Вообщем, есть некая хранимая процедура в SQL: create procedure new_Aut (@InventarizNomer int,@GosNomerGIBDD int, @MarkaAuto nvarchar(50),...

Ошибка при преобразовании типа данных varchar к real
Пытаюсь обновить запись в БД. Делаю так: double stavka = Convert.ToDouble(textBox3.Text); SqlCommand updateTeacher2 = new...

Ошибка при преобразовании типа данных varchar к int
Есть 3 таблицы: Покупатели - customer(id,name,city,phone,rating) поставщики - supplier(id,name,city,phone) договор -...

Ошибка при преобразовании типа данных varchar к int
Подскажите в чем дело, пару часов назад таблица работала а теперь выдает ошибку. После того как заполню и нажму добавить. Ошибка при...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru