![]() |
|
![]() ![]() ![]() |
|
vinvin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 30.1.2007 Репутация: нет Всего: 1 |
Как при добавлении записи использовать значение по умолчанию, которое указано в поле (полях) для этой базы данных.
Я имею ввиду момент после ds.Insert, чтобы в котролах формы отобразились значения по умолчанию. У меня база Access, но это касается и других баз. А может быть использовать какой-нибудь другой подход? Заранее благодарен за ответ. |
|||
|
||||
Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 1 Всего: 6 |
привет.Если значение по умолчанию есть,оно автоматически должно подставляться при добавлении записи,разве нет?
Другой выход...дополнительная таблица со значениями по умолчанию ![]() -------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
vinvin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 30.1.2007 Репутация: нет Всего: 1 |
Да, я забыл сказать главное. Я работаю с ADO.
В том-то и дело, что значения по умолчанию в Dataset при добавлении не подставляются. Ведь когда мы делаем Insert, то добавление идет в курсор, расположенный у нас на машине (т.е. у меня выбран тип курсора - статический). При добавлении Dataset ничего о значениях по умолчанию в базе не знает. У самого Dataset в конструкторе полей можно указать значение по умолчанию. Ну и что получается - нужо указывать значения по умолчанию в базе, а потом еще в Dataset в модуле данных. Неужели все так делают? А для чего же тогда значения по умолчанию в базе? Получается их можно использовать только через SQL - insert? Неужели нет другого подхода? Или делать так: Пользователь нажал - Добавить. Выполнилась SQL-Insert, в Dataset сделали ds.Edit и отобразили форму редактирования деталей. Дальше - нажал сохранить - Post, нажал отменить - делаем ds.Cancel и SQL-Delete. Но это же глупость! Зачем же добавлять в базу, если пользователь еще не решил нужно это делать или нет! |
|||
|
||||
Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 1 Всего: 6 |
А ,извини, не сразу понял, о чем ты. Т.е ты хочешь увидеть значение по умолчанию до того, как эта запись будет создана в БД и это создание будет закреплено post'ом.
В таком случае я ы использовал метод ondrawcell,чтобы там при каждой перерисовке в поля,где еще нет значений добавлялась запись со значением по умолчанию. Хотя не знаю,может можно сделать чтото вроде DBGrid1.fields[0].asstring='значение по умолчанию'. -------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
vinvin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 30.1.2007 Репутация: нет Всего: 1 |
Хорошо, а как из базы, ну хотя бы Access вытащить значение поля по умолчанию?
|
|||
|
||||
vinvin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 30.1.2007 Репутация: нет Всего: 1 |
Хорошо, а как получить доступ к базе, чтобы вытащить значение по умолчанию?
В том- то и дело, что в некоторых СУБД еще можно (например в SQL сервере через таблицы метаданных), а в других, например в Accesse или никак или очень хитроумными и порой даже недокументированными способами. К тому же некоторые значения по умолчанию хранят не просто статические значения, а какую-нибудь функцию. Поэтому, тот подход, который мне казался не очень хорошим, кажется единственный выход в данном случае, т.е. сначала создавать запись с помощью того же Insert-Sql, а потом в случае отказа пользователя - удалять ее. Только в этом случае возникает проблема - какую запись показывать. Я думаю, что можно попытаться найти добавленную запись по номеру автоинкремента - 'select @@IDENTITY as [ID]' |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |