![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Летит база от ShotDown, глюк сортировки, неверная сортировка [D7, Paradox]
Bee-Bee © (2006-02-24 10:53:00)Такой глюк! Заносятся значит в DB записи, мнооого записей! После чего Чубайс дергает рубильник и свет выключается! И вот тут то я понимаю (после очередного запуска программы), что надо вводить все заново!!!! как можно этого избежать! или в крайнем случаи востановить базу данных каким то образом???
И ишо вопрос! надо сделать автоматическую сортировку записей! Ключевое поле отпадает сразу т.к. есть совпадения! Индексированное поле вообще запрещает редактировать базу! сортировка програмным путем долгая и не всегда эффективная! что делать???
Да ишо!!! при ключевом (уникальном) поле в таблице сортировка происходит по возрастанию! Пробовал изменить сортировку в TTable, не выходит!!! Подскажите что делать!!!
Neo Trinitron (2006-02-27 11:13:00) [1]Bee-Bee, чесно говоря я уже не могу привести ни одного весомого аргумента использования компонента TTable. TQuery - вот что работает действительно интересно, при том если будешь писать клиента Oracle, MS Sql и пр. (клиент-сервер, короче), то TTable практически лишит твой клиент той самой изюминки для которой вся каша заваривалась. Sql не так сложен чтобы его не юзать в повседневной программерской жизни. Чесно говоря вся работа в Database Decktop могла быть заменена на Sql строку order by поле desc. Удач.
evvcom (2006-02-27 11:03:00) [2]
> После чего Чубайс дергает рубильник и свет выключается!
Все беды от Чубайса, оказывается! Ах, он рыжий лис!
Bee-Bee (2006-02-26 18:30:00) [3]Да забыл при неУникальном поле ставить Key на поле по которому хотим сортировать не надо!
И сортировка происходит и на редактирование не ругается!!!
Bee-Bee (2006-02-26 18:28:00) [4]Значит вот! сам разобрался с проблеммой!
Есть два типа полей (уникальное и неуникальное)
сортировка производится по разному!
Уникальное поле (создание таблицы в DataBaseDesktop):
Задаем этому полю ключ (знак * на столбце Key)
Далее выбираем в поле Table Properties - Secondary Index
жмем define и создаем индекс для нашего ключевого поля
Ставим галочки Unique, MaINTAINED, и если упорядочить по убыванию, то Descending
сохраняем
заходим в делфи и делаем настройки в TTable ---- IndexName=имя индекса которое мы создали
неУникальное поле (создание таблицы в DataBaseDesktop):
Все тоже самое, только создаем новое поле (например "cod") с типом "+" и ставим * на его "Key" и при создании Secondary Index не ставим галку на Unique
Вот и вся проблемма :)
Bee-Bee (2006-02-25 11:35:00) [5]Спасибо за помощь!!! очень благодарен!
Desdechado (2006-02-24 20:42:00) [6]> Пока будешь искать UPS добавь в программу
а потом заставь и винду сбросить буфера на диск, а то ведь она тоже кэширует
так себе (2006-02-24 20:15:00) [7]Пока будешь искать UPS добавь в программу:
procedure TForm1.Table1AfterPost(DataSet: TDataSet);
begin
DbiSaveChanges(table1.handle);
end;
Максимум - потеря последней записи при отключении эл.питания.
Потеря записей при эл.сбое происходит из-за того, что в локальных базах Paradox метод Post записывает данные не на жесткий диск, а только в память. Приведенная выше строка кода после вызова метода Post для каждой записи записывает содержимое буфера BDE на жесткий диск. Можно также использовать для этой цели метод TDBEDataSet FlushBuffers, например:
procedure TForm1.Table1AfterPost(DataSet: TDataSet);
begin
Table1.FlushBuffers;
end;
Этот метод можно также вызывать и при обработке события AfterDelete.
Desdechado (2006-02-24 18:23:00) [8]> можно ли делать ключевое поле неуникальным
В библиотеку тебе надо, а не в форум.
Ключи бывают разные, по одним можно, по другим нельзя.
Bee-Bee (2006-02-24 17:59:00) [9]
> 1. Реиндексация рулит! Попробуй после сбоев позапускать:
> 95 из ста - поможет.
>
> 2. Может я чего путаю, но когда создаёшь таблицу, в ней
> можно указывать ключ и порядок сортировки. Почему бы не
> юзать TQuery? Сразу все проблемы с сортировкой отпадут!
> И ещё глядишь, быстрее заработает (Хотя DB...разве что DCOM.
> ..)!
Тогда ответный вопрос! как делать переиндексацию програмно в делфях?
И насчет ключа! порядок сортировки указываю, но ему поровну! он все равно по возрастанию сортирует??? и можно ли делать ключевое поле неуникальным???
Neo Trinitron (2006-02-24 11:50:00) [10]1. Реиндексация рулит! Попробуй после сбоев позапускать: 95 из ста - поможет.
2. Может я чего путаю, но когда создаёшь таблицу, в ней можно указывать ключ и порядок сортировки. Почему бы не юзать TQuery? Сразу все проблемы с сортировкой отпадут! И ещё глядишь, быстрее заработает (Хотя DB...разве что DCOM...)!
Desdechado (2006-02-24 11:10:00) [11]> свет выключается! как можно этого избежать
Поставить генератор и/или UPS. Вот если б сгорела мамка, ты какие вопросы задавал бы?
> Индексированное поле вообще запрещает редактировать базу!
Наглая деза. Использовать TQuery+TUpdateSQL. Индекс может быть как по возрастанию, так и по убыванию, а также по нескольким полям.
PS и не надо так орать