C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Табличный ввод в БД
Евгений
Отправлено: 26.05.2004, 13:01


Не зарегистрирован







Как удобнее и наиболее просто организовать табличный ввод (и правку соответственно) в БД ? Задача состоит в том, что имеются данные числовые, проще говоря матрица, размер которой может менятся как и по количеству строк, так и по столбцам. Необходимо организовать ввод скажем похожий на StringGrid, но только связанный с БД и возможностью в любой момент добавить, удалить строки/столбцы. В качестве БД будет использоваться MS Access и подключение через ADO.
Gedeon
Отправлено: 26.05.2004, 13:10


Ветеран

Группа: Модератор
Сообщений: 1742



Со строками просто, DBGrid. Со столбцами прийдется поработать с SQL ALTER Table ...
AVC
Отправлено: 26.05.2004, 13:19


Ветеран

Группа: Модератор
Сообщений: 1583



Кому что нравится. Я бы воспользовался TDBGrid для управления строками и кнопки для управления списком столбцов. В БД таблица имеет логически неограниченное число строк и заранее определенное число столбцов. Для изменеия числа столбцов таблицы можно каждый раз переделывать таблицу или создать таблицу у которой число столбцов гарантировано больше максимальной разумной потребности и ограничивать их кол-во выборкой. Более сложно — можно разработать способ отображения матрицы произвольного размера но однородной структуры на простую таблицу (типа представления многомерного масива в виде одномерного).
olegenty
Отправлено: 26.05.2004, 15:23


Ветеран

Группа: Модератор
Сообщений: 2412



Эмоциональные вы, ребят, напомню, что "живых" датасетов ADO не даёт...

а вообще, TDBGridEh, а не TDBGrid... незачем изобретать велосипед...
AVC
Отправлено: 26.05.2004, 16:15


Ветеран

Группа: Модератор
Сообщений: 1583



Ну я же и говорю — кому что нравится. Лично я работаю на своем гриде.
QUOTE
напомню, что "живых" датасетов ADO не даёт...
я не очень большой знаток ADO — пока не приходилось активно использовать но поробовал следуещее:
Бросил на форму ADOQuery, связал с DBGrid. Сетка прекрасно редакирует и добавляет записи.
olegenty
Отправлено: 27.05.2004, 07:01


Ветеран

Группа: Модератор
Сообщений: 2412



зпрос к одной таблице. ты к двум напиши.
AVC
Отправлено: 27.05.2004, 07:50


Ветеран

Группа: Модератор
Сообщений: 1583



К двум таблицам даже Oracle не решает — приходится ручками. Да и незачем перегружать систему — в результирующем запросе колонки зачастую переименованы. Такое делает Sybase если работаешь через представление и имена колонок уникальны и не переименованы.
olegenty
Отправлено: 27.05.2004, 14:54


Ветеран

Группа: Модератор
Сообщений: 2412



Ответ не правильный, см., как это делает FibPlus для Interbase/Firebird/Yaffil : у TpFIBDataSet есть св-ва: UpdateSQL, DeleteSQL, RefreshSQL и InsertSQL — заполняешь их, и хоть 10 раз у тебя там переименованы поля, а работать просто и удобно... Ничего подобного нет нигде, кроме IBX и BDE, с их UpdateObject...
AVC
Отправлено: 27.05.2004, 15:14


Ветеран

Группа: Модератор
Сообщений: 1583



А вот и нет. Ваши свойства UpdateSQL суть та же работа ручками — оригинальные имена полей и таблиц вы храните в голове. Естественно у меня эти события то же автоматизированы. А имелось в виду следующее что select содержит выборку из view, собранное из нескольких таблиц. Бросаем его на грид и редактируем. Из того с кем мне приходилось работать только сервер Sybase (подчеркиваю сервер а не клиент) сам обновил мне поля нескольких таблиц. На остальных серверах четко оговорено что обновляемая view должна выбирать из одной таблицы.
olegenty
Отправлено: 28.05.2004, 07:01


Ветеран

Группа: Модератор
Сообщений: 2412



Мы с тобой друг-друга не поняли. Я говорю — табличный-то ввод ограничен. Не важно, что ручками, важно, что я могу делать это таблично, в то время как сквозь ADO это не прёт...
Gedeon
Отправлено: 28.05.2004, 08:44


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (olegenty @ 28/05/2004, 08:03)
Мы с тобой друг-друга не поняли. Я говорю — табличный-то ввод ограничен. Не важно, что ручками, важно, что я могу делать это таблично, в то время как сквозь ADO это не прёт...

Не пойму вас какой FibPlus, какой Sybase человек сразу написал
QUOTE

В качестве БД будет использоваться MS Access и подключение через ADO.

Ничего не мешает работать кручками, написать несколько ХП(в эксес хранимые запросы или как-то так называется) на SQL и никаких собственно преимуществ др. компонентов нет, или вы думаете там оно по другому реализовано?
AVC
Отправлено: 28.05.2004, 08:48


Ветеран

Группа: Модератор
Сообщений: 1583



Если вернуться к началу темы, то я сразу говорил — "Кому что нравится". Наша с вами дискуссия постепенно переползла от выбора компонента класса Grid к компоненту класса DataSet.
QUOTE
сквозь ADO это не прёт
использование ADO — условие задачи.

Вернуться в Работа с базами данных в C++Builder