Всем привет! Такая вот проблема. Есть две таблицы. В первой таблице есть поле key типа счетчик, во второй есть поле tab1_key типа число. Делаю следующее:
Adotable1.insert;
adotable1.fields.field[2].text:='asdf';
adotable1.fields.field[3].text:='545';
adotable1.fields.field[4].text:='345';
Adotable1.post;
Adotable2.insert;
adotable2tab1_key=adotable1key.text;
adotable2.fields.field[2].text:='asdf';
adotable2.fields.field[3].text:='6456';
adotable2.post;
Все это весит на одной кнопке в этом порядке. Иногда бывает что таблица 1 еще не успела создать запись как вторая создала, и получился разрыв связи. Не знаю от чего это зависит, толи от тормозного компа, толи еще чаво. Пробую следующее:
try
Adotable1.insert;
adotable1.fields.field[2].text:='asdf';
adotable1.fields.field[3].text:='545';
adotable1.fields.field[4].text:='345';
finally
Adotable1.post;
try
Adotable2.insert;
adotable2tab1_key=adotable1key.text;
adotable2.fields.field[2].text:='asdf';
adotable2.fields.field[3].text:='6456';
finally
adotable2.post;
end;
end;
Действительно ли будет так, что пока первая таблица не создаст запись, вторая не начнет создавать новую запись?
Или я заблуждаюсь в использовании этого алгоритма? Посоветуйте плииз...
try...finally... правильно ли сделал?
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
заблуждаешься.
блок try..finally лишь позволит корректно обработать исключение. Хотя в твойм случае ничего не изменится
блок try..finally лишь позволит корректно обработать исключение. Хотя в твойм случае ничего не изменится

-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Есть какие-нибудь соображения в этом направлении? Как заставить подождать пока не одна таблица не закончит добавление записи?
Или может кто может подсказать каким способом можно генерировать постоянно новый ключевой код? Было соображение чтобы взять цыфры даты и времени и прибавить их к какому-нибудь числу, повторения же тут исключены?
Или может кто может подсказать каким способом можно генерировать постоянно новый ключевой код? Было соображение чтобы взять цыфры даты и времени и прибавить их к какому-нибудь числу, повторения же тут исключены?
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
честно сказать не представляю что должно лежать в таблице с какими адскими индексами и триггерами, чтобы таблица не успела запостить значение... Что хоть за БД?

-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Как бы правильно объяснить, в первой таблице заполняются 26 полей, а во второй 8 полей, и вот курсор отладчика дошел до AdoTable1.post и пошел дальше, первая таблица еще не обновилась, а вторая уже заполнилась и естественно с пустым ключевым полем от первой табл., вот и получается разрыв. База в Access. Но я не говорю что каждый раз такое, но иногда проскакивает.
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
я подразумеваю это связано на прямую с производительностью компа, хотя не уверен......
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD
