Без малого месяц назад я затронул тему обращения к полям DataSet. К своему удивлению, обнаружил, что, казалось бы, такая банальная тема получила “живой отклик”. Так же меня озадачил тот факт, что большинство комментаторов вполне готовы пожертвовать удобствами Code Insight и обращаться к полям с помощью FieldByName. Был высказан ряд аргументов разной степени убедительности. В свою очередь я постарался привести собственные контраргументы. Собственно, сам я почти всегда создаю поля в режиме редактирования проекта и обращаюсь к ним по имени. За исключением тех случаев, когда запрос формируется динамически в коде. Но тем не менее, вопрос того, как упростить вызов значения поля с помощью FieldByName – актуален.
Давным -давно я писал менеджер буфера обмена. Это было одним из первых моих приложений, но используемая там идея всплыла сейчас в контексте вышеописанной задачи. На досуге я набросал небольшую утилиту.
В чем суть…
Итак, на экране висит StayOnTop форма в левой части которой находится список таблиц (представлений, запросов и т.д.), а справа – набор кнопок, каждая из которых соответствует полю в таблице. При перемещении по списку таблиц набор кнопок автоматически обновляется. При нажатии на кнопку имя поля попадает в буфер обмена и вставляется в активное окно редактирования (например, редактор кода Delphi).
Таким образом, утилита избавляет разработчика от необходимости постоянно обращаться к СУБД при необходимости найти названия поля в определенной таблице. Более того, набирать название поля так же не нужно, оно может быть вставлено в код приложения буквально с помощью одного нажатия кнопки мыши. При этом, в качестве редактора кода может быть использован не только Delphi, а любая среда разработки.
Приведенное ниже приложение является не более чем прототипом, в котором пока реализовано подключение только с помощью dbGo.
После запуска приложения следует создать новое подключение к БД. В диалоге сохранения файла определить его имя (от фонаря). При этом будет создан файл с расширением .udl и на экране появится диалог подключения. Именно здесь вы можете настроить подключение к существующей БД. Сохранять и открывать, соответственно, вы можете не БД, а именно файлы подключения. После того, как вы закроете диалог программа попытается получить структуру БД. Вот, собственно, пока и все.
Что я планирую сделать.
- Добавить возможность подключения остальных СУБД (Oracle, IB, FB, MySQL и т.д.);
- Добавить возможность получения полей по пользовательским запросам;
- Добавить возможность вставки в текст данных по шаблону (например, FieldByName(‘%Field Name%’).as%Filed Type%).
Интересно ваше мнение относительно того, имеет ли подобная утилита право на существование (в качестве инструмента разработчика)?
> имеет ли подобная утилита право на существование
Думаю, что вполне имеет. Только Вы сами ей пользуйтесь, чтобы понять, на сколько оно удобно.
На вскидку: не хватает строки поиска/фильтра над списком таблиц (представьте что таблиц _очень_ много).
Мне кажется, что было бы удобно её встроить в IDE виде визарда и запускать по какому-нибудь сочетанию клавиш (мне очень нравится F6 в новых версиях Delphi).
Годная идея. Буду ждать ФБ.
Отличная идея, великолепно примиряющая защитников “провалов в памяти” (CodeInsight) и “поименщиков” (FieldByName).
Конечно, самому помнить поля таблицы несложно, поэтому FieldByName чаще всего рулит. Но! А если имена полей в таблицы придумывал другой человек? С отличными от вас лингвистическими предпочтениями?
Имхо: ждём-не дождёмся, будем пробовать!