Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.22;
Скачать: CL | DM;

Вниз

Запрет автовставки в таблицу   Найти похожие ветки 

 
Atanas   (2007-02-06 12:25) [0]

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


 
Desdechado ©   (2007-02-06 12:36) [1]

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

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

Datasource.AutoEdit:=False


 
ЮЮ ©   (2007-02-06 12:39) [2]

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

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

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


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


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


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


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

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


 
Desdechado ©   (2007-02-06 12:54) [5]

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


 
ЮЮ ©   (2007-02-06 13:05) [6]


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

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


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

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

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

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

Table1.Tag:=1;


 
ЮЮ ©   (2007-02-06 13:25) [8]


> Atanas   (06.02.07 13:09) [7]

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


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


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


Так и есть...


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


> Desdechado
> Datasource.AutoEdit:=False


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



Страницы: 1 вся ветка

Текущий архив: 2007.04.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.119 c
2-1175196193
Riiid
2007-03-29 23:23
2007.04.22
Что в проекте испльзовал?


15-1175157168
DVM
2007-03-29 12:32
2007.04.22
Убрать dll внутрь exe


2-1175779333
voe
2007-04-05 17:22
2007.04.22
работа с текствовыми файлами.


2-1175161127
Alex7
2007-03-29 13:38
2007.04.22
Как взять данные DataSet в Clipbord, чтобы вставить в Excel


2-1175755840
Мимопроходящий
2007-04-05 10:50
2007.04.22
Преобразование строки в вид %EA%BD...