![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| p0s0l |
|
|||
|
Unregistered |
table1.Filter := {тут выражение};
table1.Filtered := true; table1.First; while not table1.EOF do table1.Next; Вот такая процедурина виснет. А виснет потому что после того как указатель попрыгает последовательно где-то по 10-20 записям возвращается в начало таблицы. Table1 - Paradox, с активным вторичным индексом по обычному Integer-полю. Если индекс отключить, то все ОК, но мне индекс нужен. Как быть ? И еще: table2.Append; // Занесение данных table2.Post Это выдаёт ошибку "Key violation", хотя в table2 Primary Index - поле AutoInc. Как же тогда может выскочить Key violation ? Причем эти глюки возникают крайне редко, но возникают, база - около 20000 записей. Ну второй случай я привел так просто, он решается путем ручного увеличения поля. А первый я не знаю как обойти. Может кто-нибудь знает как обойти первый глюк и из-за чего вообще они возникают ? |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Использовать Query и SQL проблемы исчезнут, и первая и вторая. А также после post попробовать ставить метод FlushBuffers
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Дак SQL - это тормознее раза в 2-3 получается, у меня SQL запрос получился секунд 10...
А это не приемлимо. А FlushBuffers - у меня таблица регулярно открывается и закрывается, так что этого не надо. -------------------- С уважением, г-н Посол. |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Это слишком долго, скорее всего нужные индексы отсутствуют, т.к. запрос должен проходить не медленнее, чем досупом через таблицу... -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
это Вит актуально только для клиент-серверной модели БД. С локальными БД "доступ через таблицу" будет работать гораздо шустрее. -------------------- |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
У меня тоже вылетала такая ошибка. Я обнаружил, что у меня вызывается метод POST два раза подряд. Посмотри, может у тебя после добавления записи происходит переход на другую, а при этом метод POST вызывается автоматически. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Нет, там все в порядке. Программа работает идеально где-то неделю, а потом - раз и вылезает глюк. Хотя до появления глюка эта часть программы работала нормально, и эта процедурина используется довольно часто. Но индекс отключишь - и глюка как не бывало, может работать сколько угодно. В ручную же пересортировывать всю таблицу - это больше часа получается, поэтому без индекса нельзя.
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
2p0s0l, что-то вообще непонятное.... Чую нутром где-то сам недосмотрел.... -------------------- |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
2Pegas, говорю ведь, деалю table1.next - и глючит, где я тут ошибся ? table1 с маленькой буквы написал ?
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Запости исходник. А еще лучше на мыло пришли. -------------------- |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
2Pegas:
Смотри: работает прога нормально некоторое время, потом вылазит глюк (предположим что даже по моей вине). Беру там же на месте пишу НОВУЮ прогу, которая только и делает что: table1.Open; table1.IndexName := 'ix1'; table1.Filter := '...'; table1.Filtered := true; while not table1.eof do table1.next Прога виснет и как я уже писал из-за того что, например, после записи №10 идет №15, №500, №1246, потом снова №10, №15, №500, №1246, №10 и т.д. вечно Т.е. сама таблица каким-то образом стала глючной, я вот про че говорю. Я не знаю, что нужно написать, чтобы добиться этого глюка ? Что я делал с таблицами, дак это все стандартные методы типа open, append и т.д. Ты хочешь одним взглядом на исходник (~7000 строк) определить правильность моей программы ? Если хочешь, то я тебе его вышлю, но это тебе ничего не даст, т.к. глюк вылазит где-то после недели использования программы, а ты будешь этим заниматься ? Я пытался у себя дома заставить появиться этот глюк - но нет, не появляется. А там где стоит эта программа, где её и юзают - там-то он и вылазит как назло. Вооще у меня давно уже такое желание - плюнуть на тэтэйблы и написать все это дело вручную. Будет спокойнее и намного (как я думаю) быстрее. Тогда уж если глюк и будет - то моей вине, а щас я уверен на 99% - что с BDE не все ОК. Как я думаю, если я что-то не так делаю с таблицей, BDE не должен мне давать делать этого, а ведь дает (если все-таки я деляю чо-то неправильное), или же сам мне подгавнивает потихонечку... -------------------- С уважением, г-н Посол. |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Прошу только не обижаться, но на 99% уверен, что проблема как раз-то не в BDE. (не потому что BDE безгрешный, просто у меня на счет этой проблеммы есть свои предположения)
Мне не надо высылать весь исходник, а вышли:
Т.е. эту маленькую программку, и саму таблицу. Я уверен, что найду ошибку. -------------------- |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
2Pegas: Только подожди недельку, а то мне надо закачать себе то эту таблицу (я вожусь прямо там на месте, на дискете её не притащить).
-------------------- С уважением, г-н Посол. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |