Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запрет автовставки в таблицу


Atanas ©   (2007-02-06 12:25:00) 

Как можно запретить автоматическое добавление записи?
Например комбобокс присоединен к таблице. Если курсор расположен в конце рекордсета, то при выборе из него какого-либо значения автоматически добавится запись. Мне нужно чтобы добавить запись я мог только программно.
При этом желательно обработчик должен быть один на таблицу, а не в каждом присоединенном контроле.


Atanas   (2007-02-06 14:03:00) [1]


> Desdechado
> Datasource.AutoEdit:=False


А вы сударь подумали что этим мы запрещаем редактирование а не добавление, замечаете разницу?
Я тут по форуму посмотрел, не в первый раз наезды с вашей стороны, давайте быть повежливей.


Atanas   (2007-02-06 13:52:00) [2]


> Непонятно только как выбор в TDBCombobox-е может привести
> к вставке записи, кроме случая, когда он вообще пуст.


Так и есть...


ЮЮ   (2007-02-06 13:25:00) [3]


> Atanas   (06.02.07 13:09) [7]

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


Atanas   (2007-02-06 13:09:00) [4]

У меня такой вариант родился.
В событие BeforeInsert таблицы н.р. Table1 пишем следующее:

 if Table1.Tag=1 then
   Table1.Tag:=0
 else
   Abort;
 <далее код обработчика, если есть...>

И перед прогрммной записью в таблицу просто устанавливаем:

Table1.Tag:=1;


ЮЮ   (2007-02-06 13:05:00) [5]


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

Это возможно только на пустом DataSet-е. В дальнешем ДБ комбобокс редактирует только текущую запись. Сам он навигацией не занимается


Desdechado   (2007-02-06 12:54:00) [6]

> имхо очевидно
Тогда очевидны и ответы на твои вопросы, поэтому их задавать смысла нет.


Atanas   (2007-02-06 12:46:00) [7]

Выбор значения из комбобокса


Atanas   (2007-02-06 12:45:00) [8]


> > комбобокс присоединен к таблице
> Это как?


ДБ комбобокс через DataSource, имхо очевидно...


ЮЮ   (2007-02-06 12:39:00) [9]

в качестве
DataSet.BeforeInsert
назначить метод с однм лишь Abort;

в коде же всегда можно его обойти:

DataSet.BeforeInsert := nil;
try
 DataSet.Inasert;
 ...
finally
 DataSet.BeforeInsert := <описанный выше метод>
end;


Desdechado   (2007-02-06 12:36:00) [10]

> комбобокс присоединен к таблице
Это как?

> Если курсор расположен в конце рекордсета, то при выборе из него
> какого-либо значения автоматически добавится запись
Из него - это из комбо или из датасета?
Запись куда - в комбо или датасет?

Datasource.AutoEdit:=False


Наверх

Титульная страница Поиск, карта сайта Написать письмо