Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

Как работает Field Editor?   Найти похожие ветки 

 
DmitryNekl   (2004-05-20 12:53) [0]

Хочу создать подобие Field Editor, чтобы работал в run-time (для настройки приложения, чтобы при изменении структуры базы не нужно было перекомпилировать).

Глобальный вопрос: как это сделать? Может, кто уже делал?

Вопрос более конкретный: Как в Field Editore организованы загрузка и удаление полей? Мне кажется, что используется (на примере Query) Query.Fields... но как он удаляет? Какой метод используется? У меня не получилось ни с remove, ни с clear...

Буду благодарен как за ответы на вопросы, так и за ссылки по теме.


 
Vlad ©   (2004-05-20 12:59) [1]


> DmitryNekl   (20.05.04 12:53)  

Для этого посылается запрос к базе, DataSet получает новый набор полей.
Подробнее см. TFieldDefs.Update, можешь посмотреть реализацию в VCL


 
Соловьев ©   (2004-05-20 13:20) [2]


> для настройки приложения, чтобы при изменении структуры
> базы не нужно было перекомпилировать

СУБД? если клиент-сервер - VIEW читать до потери сознания
универсальный способ - 3-х звенная архитектура


 
DmitryNekl   (2004-05-20 14:00) [3]

СУБД - MySQL в инете. Представления отсутствуют :(

Спасибо большое за ответы. Будут еще мысли - пишите! :)


 
DmitryNekl   (2004-05-20 14:18) [4]

2 Vlad.

"Свойство FieldDefs (имеющее тип TFieldDefs) для существующей таблицы содержит информацию обо всех полях таблицы. Эта информация доступна только в режиме выполнения и хранится в виде массива экземпляров класса TFieldDef, хранящих данные о физических полях таблицы (т.о. вычисляемые на уровне клиента поля не имеют своего объекта TFieldDef)."

Поскольку в редакторе полей можно создавать и вычисляемые поля, и lookup-ные поля - там используется не TFieldDefs... :(
Есть ли какие еще варианты?


 
Курдль ©   (2004-05-20 14:21) [5]


> универсальный способ - 3-х звенная архитектура

Это не универсальный метод, а тупиковый. Не вижу для него никакого практического применения, кроме изоляции БД от ВЭБ.


> для настройки приложения, чтобы при изменении структуры
> базы не нужно было перекомпилировать

Не могу себе представить приложение, нормально работающее после изменения структуры базы. Это как понимать? Если у меня на форме редактирования были поля "Ф","И","О" и лэйблы к ним соответствующие, то они, откуда ни возьмись (без перекомпиляции), перетекут в поля "Страна", "Город", "Улица", "Дом", "Квартира" и "Телефон"?


 
Vlad ©   (2004-05-20 14:27) [6]


> Курдль ©   (20.05.04 14:21) [5]
> Это не универсальный метод, а тупиковый. Не вижу для него
> никакого практического применения, кроме изоляции БД от
> ВЭБ.

Не стоит так категорично выражать свои мнения. Трехзвенка тут хоть и не совсем к месту, но у нее гораздо больше плюсов чем ты думаешь.


> DmitryNekl   (20.05.04 14:18) [4]

Ничего не понял. Зачем тебе лукап-поля, если у тебя только поменялась структура базы ? Какова вобще цель твоей задачи ?


 
DmitryNekl   (2004-05-20 14:39) [7]

2 Курдль.

При работе программы я хочу на (изначально пустую) форму редактирования помещать динамически создаваемые элементы типа BDEdit и т.д.


 
Соловьев ©   (2004-05-20 14:45) [8]


>  [6] Vlad ©   (20.05.04 14:27)


> [5] Курдль ©   (20.05.04 14:21)

Как раз 3-х звенная архитектура не зависит не только от стурктуры БД но и от самой СУБД. Как раз то что нужно автору , у которого меняется структура БД.


 
DmitryNekl   (2004-05-20 14:48) [9]

2 Vlad.

Цель - делаю систему управления сайтом. Периодически вношу изменения в структуру базы, и приходится в куче мест переделывать настройки руками. Задолбало. Хочу, чтобы все окна редактирования, TFields и т.д. создавались/настраивались автоматом. Т.е.: допустим, добавилось в таблицу (MySQL) новое поле, или изменился тип предыдущего. Автоматически создаются TFields, если нужно - настраиваю свойства DisplayLabel, DisplayWidth, Visible - и все сразу без ручной работы отображается как надо.

Lookup-ные и вычисляемые поля - как для сохранения общности, так и для удобства работы с окнами редактирования.


 
Курдль ©   (2004-05-20 14:55) [10]


> Задолбало.

Это не повод калечить приложение "настраиваемыми без компиляции окнами редактирования".
Зато это хороший метод для смены профессии!


 
DmitryNekl   (2004-05-20 15:00) [11]

2 Курдль.

Спасибо за конструктивный ответ :). Кстати, я не профессиональный программист, а любитель, пишу прогу не для кого-то, а для себя.

Тем не менее, я, как и все талантливые люди, ленив - и потому хочу эту занудную работу автоматизировать. Это плохо?

И почему приложение будет искалечено? С дизайном могут быть некоторые трудности... но все решаемо! Завести файл с настройками, один раз визуально после изменения структуры расставить все компоненты и запомнить координаты в этом файле... Может, я чего принципиального не вижу?


 
Курдль ©   (2004-05-20 15:15) [12]


> Завести файл с настройками, один раз визуально после изменения
> структуры расставить все компоненты и запомнить координаты
> в этом файле... Может, я чего принципиального не вижу?

Ага! :)  Этот файл назывется ".DFM"


 
Vlad ©   (2004-05-20 15:18) [13]


> DmitryNekl   (20.05.04 14:48) [9]
> 2 Vlad.
>
> Цель - делаю систему управления сайтом. Периодически вношу
> изменения в структуру базы

Такой подход, ИМХО, не есть гуд. Сам себе задачу усложняешь.
Базу для начала проектируют как следует, а потом уже занимаются разработкой клиента. Тогда не будет возникать таких проблем как у тебя. А ты хочешь сделать чуть ли не интеллектуальную систему, знаешь сколько ты на это времени потратишь ? И самое главное овчинка будет ли стоить выделки ?
Совет: забей пока не поздно.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.052 c
14-1085816437
Knight
2004-05-29 11:40
2004.06.13
Как правильно прилипание окна сделать?


3-1085382118
31512
2004-05-24 11:01
2004.06.13
Одна "сущность" не вписывается в рамки БД!


1-1086119585
Lvs
2004-06-01 23:53
2004.06.13
Время


1-1086071689
new
2004-06-01 10:34
2004.06.13
Чтение файла


6-1082617656
TOleg
2004-04-22 11:07
2004.06.13
Что это за ошибка - "500 Invalid Port Command"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский