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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2013, 17:37   #1
Sanuch89
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 17
Вопрос Смена типа поля в Fields Editor

Здравствуйте!

Очень интересует один вопрос.
У нас есть компонент TTable. В его свойствах указываем БД и таблицу. Вызываем его Fields Editor и добавляем туда поля с этой таблицы (DataSet'a). При этом типы полей устанавливаются автоматически.

Мне нужно узнать какие действия происходят в этот момент, какие функции или процедуры вызываются на нижнем уровне.

Для чего мне это нужно? Чтобы знать какие методы нужно переписать. Создаю свой компонент TTable на основе TDataSet и хочу чтобы при добавлении полей с Fields Editor типы устанавливались такие как мне нужно.

Заранее спасибо!
Sanuch89 вне форума Ответить с цитированием
Старый 18.08.2013, 18:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Кажется что эта статья может помочь: http://articles.org.ru/docum/dataset1.php
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.08.2013, 21:01   #3
Sanuch89
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 17
По умолчанию

Спасибо, Виталий! Добротная статья. Вот только ответ на свой вопрос я там не нашёл.

Внутри кода тип для поля определяется тот, что мне нужен (при вызове MyTable1.Fields[0].DataType вижу тот тип, который должен быть, например ftBoolean).

А вот если через Fields Editor создавать поля, то тип поля остается прежним (TSmallIntField), а нужно TBooleanField.
При таком варианте ДатаСет даже ругается, мол ожидал значение поля типа SmallInt, а получаю Boolean (т. к. внутри тип поля изменился на булевский, но он не совместим с типом TSmallIntField, созданым Fields Editor на автомате).

Где-то должен быть какой-то метод, к которому взывает Fields Editor при определении типа поля... Эх, знать бы какой...
Sanuch89 вне форума Ответить с цитированием
Старый 18.08.2013, 21:26   #4
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

В своем наследнике DataSet нужно перекрыть метод GetFieldClass.

Последний раз редактировалось Vapaamies; 19.08.2013 в 17:26.
Vapaamies вне форума Ответить с цитированием
Старый 19.08.2013, 10:36   #5
superedward
Форумчанин
 
Аватар для superedward
 
Регистрация: 27.11.2012
Сообщений: 190
По умолчанию

метод AddField, вызываемый run-time, должен решить проблему
superedward вне форума Ответить с цитированием
Старый 19.08.2013, 12:31   #6
Sanuch89
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 17
По умолчанию

Спасибо всем! Решил через Field Mapping. Теперь надобность в перегрузе GetFieldClass отпала
Sanuch89 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение типа поля Ericnex БД в Delphi 1 06.09.2012 10:54
выборка со смненой типа поля illyuziy Помощь студентам 4 09.12.2011 11:28
Анализ возможного типа поля Виталий Желтяков SQL, базы данных 2 17.10.2011 11:51
Изменение типа данных для поля Diamand Microsoft Office Access 6 04.03.2010 23:36
Смена типа данных?? Agrophena Паскаль, Turbo Pascal, PascalABC.NET 4 17.11.2007 16:29