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

Вниз

Автоинкрементное поле и TUpdateSQL   Найти похожие ветки 

 
ilysha   (2002-01-27 18:43) [0]

Уважаемые !

Потребовалось переделать клиент-серверное приложение под простое - дабы шеф по вечерам мог забирать базу домой и её анализировать. На сервере стоит MySQL, а переносимые данные решил хранить в Paradox.
И вот, когда шеф дома добавляет новую запись в таблицу, а потом её редактирует, то UpdateSQL выдает ошибку, связаную с тем, что поле ID_DOC_THIS - автоинкрементное.
Сейчас я, дабы решить проблему делаю тупо - Query.Active = False, а затем True. Все дергается и замирает, но работает.
Но здается мне, что шеф начинает сомневаться в моих знаниях. Так помогите же, пожалуйста.


 
Turalyon ©   (2002-01-28 09:43) [1]

А Ты в запросах которые составил UpdateSQL выставил, что у тебя ID_DOC_THIS ключевое поле???


 
ilysha ©   (2002-01-28 12:03) [2]

Да, совершенно так.


 
Turalyon ©   (2002-01-28 12:14) [3]

Скорее всего проблемма в том, что у тебя программа пытается отредактировать автоинкрементное поле. По этому посмотри внимательно - в UpdateSQL выстави это поле как Key Field, а из Update Filed это поле надо ОБЯЗАТЕЛЬНО убрать.


 
ilysha ©   (2002-01-28 13:43) [4]

Объясню подробнее...

Создаю новую запись и делаю ApplyUpdate и CommitUpdate. Сейчас все в порядке. Но! В DBGrid значение автоинкрементного поля пусто. Если сразу же открыть запись на редактирование, то происходит ошибка, так поле-счетчик пусто.


 
Jony ©   (2002-01-28 14:07) [5]

Цитата из книги А.М.Епаничников, В.А.Епаничников. "Delphi. Базы данных":
"Применять компоненту TUpgrateSQL, так же как и запросы на добавление и изменение, не следует при работе с таблицами БД, содержащими автоинкрементные поля. В этом случае вообще лучше отказаться от использования кэшированных изменений."


 
Turalyon ©   (2002-01-28 14:21) [6]

Аааа.. есть такие грабли. Если честно, то я тоже не разобрался с этим.
А что у тебя сильно глючит при закрытии, открытии НД? Если сделать добавление через отдельную форму то и скачков в DBGrid-е не увидишь.


 
ilysha ©   (2002-01-28 16:20) [7]

re: Turalyon

И ещё как - в нескольких таблицах примерно по 1.750.000 записей и сам по себе запрос выполняется от 1 до 3 минут, а если еще постоянно закрывать/открывать, то это верная смерть.

re: Jony
Спасибо, я это читал и знал, но надеялся, что это изменилось в Delphi 6.

А есть ли в Delphi функция для генерации уникального id.
У меня есть своя - беру дату и время (всего 14 символов) и перегоняю их в hex, затем, на всякий случай, проверяю - нет ли в базе такого уникального id.

Возникает другой вопрос - а почему работает без проблем вариант с таблицей MySQL, в которой тоже есть автоинкрементное поле?


 
Turalyon ©   (2002-01-28 16:55) [8]

А есть ли в Delphi функция для генерации уникального id.
Можно самому реализовать автоинкрементное поле. Т.е. брать число последней записи и добавлять единичку. Соответственно все записи добавлять в конец (append).



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

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

Наверх




Память: 0.48 MB
Время: 0.012 c
1-66575
ctapik-net
2002-01-29 14:29
2002.02.21
Как узнать над каким итемом combobox а находится курсор?


3-66479
niks
2002-01-28 08:35
2002.02.21
VCL 8.5 от Crystal Report


14-66683
Xpdeveloper
2001-12-22 09:51
2002.02.21
А мне вот интересно ваше отношение к .NET


1-66506
IronHawk
2002-02-04 13:06
2002.02.21
Приветствую Мастеров ! Проблемы с QuickRep.Preview


4-66707
YUS
2001-12-22 05:21
2002.02.21
РЕСУРС