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

Вниз

DBNavigator.   Найти похожие ветки 

 
Liavik ©   (2003-11-04 12:41) [0]

Добрый день. Как при нажатии на кнопку навигатора, например, (nbInsert) инициировать следующий код
Var k:variant;
begin
DataModule1.Table2.Last;
k:=DataModule1.Table2IDDogovor.Value;
DataModule1.Table2.Insert;
DataModule1.Table2IDDogovor.Value:=k+1;
end;


 
Sandman25 ©   (2003-11-04 12:54) [1]

1. BeforeInsert

DataModule1.Table2.Last;
k:=DataModule1.Table2IDDogovor.Value;

2. AfterInsert

DataModule1.Table2IDDogovor.Value:=k+1;

Но в любом случае будет коряво.
Какая СУБД?


 
Skier ©   (2003-11-04 12:54) [2]

TDBNavigator.OnClick ?


 
Liavik ©   (2003-11-04 12:57) [3]

Да -TDBNavigator.OnClick


 
Liavik ©   (2003-11-04 13:07) [4]

Проблема в том, что по условию задания, в БД Access ключевые поля должны быть не счетчиками (ведение БД Delphi6). Нужно чтобы при нажатии на добавление записи в навигаторе программно добавлялось +1 ключевое поле таблицы. При запуске кода с buttona код работает верно.Как запустить его с помощью навигатора?


 
bon   (2003-11-04 16:35) [5]

procedure TDataForm.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);
begin
if button=nbInsert then
begin
.....
.....
.....
end;

end;


 
Liavik ©   (2003-11-05 17:11) [6]

Спасибо bon, прёт! Насколько просто!


 
Sandman25 ©   (2003-11-05 17:25) [7]

[6] Liavik © (05.11.03 17:11)

Надеюсь, потом Вы не будете спрашивать, как сделать то же самое, если запись добавляется не дбнавигатором, а нажатием стрелки вниз на последней строке дбгрида :)


 
Liavik ©   (2003-11-05 17:34) [8]

Sandman25. Постараюсь не спрашивать, и обязательно попробую сделать сам, результат скажу поже:)


 
Sandman25 ©   (2003-11-05 17:52) [9]

[8] Liavik © (05.11.03 17:34)

Можно не мучиться, я уже написал решение в [1] :)


 
Vlad ©   (2003-11-05 17:56) [10]


> Sandman25 © (05.11.03 17:52) [9]
>
> Можно не мучиться, я уже написал решение в [1] :)


Хорошая концовка, у твоего решения :)
>Но в любом случае будет коряво


 
Sandman25 ©   (2003-11-05 18:00) [11]

[10] Vlad © (05.11.03 17:56)

Если хочешь, можешь ему объяснить, что лучше запускать select max(id) from table, а в случае Key Violation в OnUpdateError устанавливать новое значение NewValue в полученное еще раз через select max(id) from table и UpdateAction := uaRetry :)


 
Vlad ©   (2003-11-05 18:13) [12]

Объяснять не буду, потому как и такой вариант тоже не лучший, имхо.
Однозначно - на кнопку навигатора лучше это не делать.
Если уж автор так не хочет делать первичный ключ счетчиком, почему бы ему не сделать его обычным полем + добавить НЕ ключевое поле (фиктивное) - счетчик, откуда и брать новые значения.
Опять же, мое мнение, что в таких вопросах лучше использовать возможности сервера, а не выдумывать что-то самому.


 
Sandman25 ©   (2003-11-05 18:23) [13]

[12] Vlad © (05.11.03 18:13)

Конечно, при наличии serial либо спец. триггеров нужно их использовать, но я посчитал, что у автора БД типа DBF.

>почему бы ему не сделать его обычным полем + добавить НЕ ключевое поле (фиктивное) - счетчик, откуда и брать новые значения.

Так у него же именно так сейчас. Или нет?



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

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

Наверх




Память: 0.49 MB
Время: 0.023 c
1-78983
WormSpy
2003-11-14 14:22
2003.11.24
pascal, runtime error 106


1-78956
boby_g
2003-11-11 21:58
2003.11.24
Функция Pos с параметром BegPos???


1-78910
kull
2003-11-10 12:17
2003.11.24
Как прочитать из stderr?


1-78926
Pepperok
2003-11-12 14:37
2003.11.24
Содержимое ListBox`a


7-79203
Cardinal
2003-09-14 19:26
2003.11.24
Hello! Кто знает, как обновить конфигурацию комп-а?