| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Как заставить БДЕ не откатываться? |
| Автор: han 25.9.2002, 19:16 |
| Значит проблема в следующем... Работаете вы с таблицами, удаляете записи, редактируете, а потом бац..............свет пропал.. Свет появился, включаете комп, запускаете программу, а там вся ваша работа - коту под хвост, БДЕ всё откатило назад. Тоже происходит и при снятии задачи. Вот и возникает вопрос-как заставить БДЕ не откатываться, а сохранять изменения на лету? |
| Автор: Vit 25.9.2002, 21:21 |
| Если ты работаешь из Дельфи/Билдера, то там в есть метод Flushbuffers или что-то подобное, ставишь его на событие AfterPost (и т.п.) и готово. |
| Автор: Medved 16.12.2002, 20:58 |
| сommit transaction |
| Автор: Vit 17.12.2002, 00:37 | ||
Не поможет, дело не в транзакции а в кэшировании. |
| Автор: Medved 17.12.2002, 01:03 |
| Если БД сетевая, то поможет..... |
| Автор: AntonSaburov 17.12.2002, 21:15 | ||
А какая разница ? Все равно в файл пишем. База, судя по сообщению, явно файловая. Так что, IMHO, Vit предложил самое разумное решение - Flush. |
| Автор: Medved 18.12.2002, 02:33 | ||
Во-первых, я согласен с тем что Vit предложил самое разумное решение; Во-вторых, разница большая.... если мы используем промышленную базу данных (Oracle, MS SQL и др.) то с подтверждением транзации (commit) текущие изменения отразяться/сохраняться в этой БД. |
| Автор: AntonSaburov 18.12.2002, 02:46 | ||
SQL - он и в Африке SQL. И ему как раз BDE и всякие там Flush действительно по барабану. Здесь никаких возражений. Тогда давай различать название "сетевая база" и "база под SQL". "Сетевая база" - это те же файлы, только не у тебя, родного, на локальной машине, а где-то в сети. Что в принципе уже устаревает и лучше не использовать. Я вообще советую многим ставить локально Interbase и использовать сразу его. Потом проще переходить на многопользователскую базу. Места он занимает крайне мало, предоставляет кучу удобств, и прочая. А "база под SQL" - это уже то, для чего commit transaction не помешает. Но не всегда. Разбор таких случаев можно в виде отдельного "размышления о возможностях ..." - статья получится |
| Автор: Medved 18.12.2002, 03:20 |
| Да, извеняюсь, я имел ввиду не сетевые базы данных, а промышленные... З.Ы. "База под SQL" впервый раз такое слышу.... это называется "реляционная модель" |
| Автор: AntonSaburov 18.12.2002, 04:12 | ||
"База под SQL" в принципе выражение не стандартное. Просто сразу понятно, что всей базой управлет не клиент, а "солидная" программа А вот "реляционная модель" к SQL имеет слабое отношение. В принципе и Access, Paradox и DBF тоже реляционные. "Реляционная" в изначалии своем подразумевает отношения на основе операций над множествами. Ну а SQL возник именно из этого математического аппарата. |
| Автор: Medved 18.12.2002, 04:20 | ||||
ну теперь вообще не понятно, что ты пытаешся сказать.... давай договоримся использовать официальную терминологию....
А вот здесь ты абсолютно не прав.... имеет самое прямое и непосредственное.... так как язык SQL является стандартом для реляционых баз данных. Access, Paradox - это самые что ни на есть (а не "в принципе") реляционные базы данных. а DBF - это не реляционная база данных, а формат файла для хранения данных, реляционных баз, таких как FoxPro и Dbase. |
| Автор: Vit 18.12.2002, 05:06 |
| Так, всё! Флейм пошёл, пора заканчивать |
| Автор: Oleg80([email protected]) 12.7.2004, 21:41 |
| Проблема han'а появилась и у меня. Только база обновляется каждую секунду. База хорошо индексирована. Все индексы имееют параметр maintained=true. При пропажи электричества, как я понимаю, не все мои индексы успевают обновиться. В результате при запуске программы, после перебоев с электричеством, получаю ошибку "Index out of date". Записи в базу добавляются так: Table->AppendRecord(...); Table->FlushBuffers(...); Спасибо за внимание. |