Евгений |
Отправлено: 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 — условие задачи. |
|