Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];

Вниз

Автоинкрементное поле и 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
3-66420
Besa
2002-01-25 17:11
2002.02.21
SQL по 2 БД?


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


14-66678
Nikolay
2002-01-01 17:44
2002.02.21
Всех с наступившим!


1-66592
yuger
2002-02-05 14:04
2002.02.21
Разница между OLE и ActiveX


14-66668
SV
2002-01-01 19:33
2002.02.21
На злобу дня.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский