Главная страница
    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.47 MB
Время: 0.01 c
8-79071
NetKnight
2003-07-27 22:13
2003.11.24
Определение времени и битрейта файла


3-78776
St@syan
2003-11-05 14:18
2003.11.24
Как сделать статистику, по определенному столбцу?


4-79241
BFG
2003-09-25 14:06
2003.11.24
Копирование ntuser.dat


4-79236
Zergling
2003-09-24 06:29
2003.11.24
Загрузка иконки из ресурсов


4-79238
SH
2003-09-25 19:25
2003.11.24
Не работает enumprocesses





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский