|
|
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Получается у меня такая вот неприятная вещь: работаю в форме с таблицей, входящей в базу данных. Т.е. добавляю, редактирую записи (не в гриде, просто в текстбоксах). Допустим, набрал определённое количество записей, и если после этого моргнул свет и комп перегрузился - то весь труд насмарку. Если выйти из формы (или программы), естественно закрыв при этом саму базу - всё в порядке, данные фиксируются. Так вот, если ли какие-нибудь варианты сохранения хотя бы уже набранных записей. Ставить на кнопку "Сохранения" код закрытия и вновь открытия базы, думаю, глупо. Добавил туда функцию FLUSH, но как оказалось (при насильственной перегрузке :) компа) это ни к чему положительному не привело, данные также потерялись. Прошу подсказать более опытных. P.S. Вариант UPS не предлагать ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 09:55:08 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Alexander WarlordПолучается у меня такая вот неприятная вещь: работаю в форме с таблицей, входящей в базу данных. Т.е. добавляю, редактирую записи (не в гриде, просто в текстбоксах). Допустим, набрал определённое количество записей, и если после этого моргнул свет и комп перегрузился - то весь труд насмарку. Если выйти из формы (или программы), естественно закрыв при этом саму базу - всё в порядке, данные фиксируются. Так вот, если ли какие-нибудь варианты сохранения хотя бы уже набранных записей. Ставить на кнопку "Сохранения" код закрытия и вновь открытия базы, думаю, глупо. Добавил туда функцию FLUSH, но как оказалось (при насильственной перегрузке :) компа) это ни к чему положительному не привело, данные также потерялись. Прошу подсказать более опытных. P.S. Вариант UPS не предлагать ;) Есть два варианта решения проблемы: 1. Прямая (небуферизованная) работа с таблицей. Но это не есть гут... 2. Не накапливать записи (для пакетного сброса), а записывать запись в таблицу сразу после редактирования (естественно, применив к записи commit/TableUpdate()...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 10:01:02 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Станислав C. Есть два варианта решения проблемы: 1. Прямая (небуферизованная) работа с таблицей. Но это не есть гут... 2. Не накапливать записи (для пакетного сброса), а записывать запись в таблицу сразу после редактирования (естественно, применив к записи commit/TableUpdate()...) 1. Я вообще-то вроде напрямую с работаю, и всегда полагал, что команда REPLACE ... WITH ... должна сохранять записи. 2. А вот этом вариант мне вообще не знаком... (( Слышал, что можно использовать буферизацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 10:14:05 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Несколько аксиом. В файл-серверном приложении защитится от аварийного сбоя питания невозможно в принципе. Самое большее, что можно сделать, это уменьшить вероятность потери данных, но никак не исключить это совсем. Стратегия работы в файл-серверном приложении направлена не на защиту от потери данных (повторюсь, это не реализуемо в принципе), а на защиту от повреждения структуры таблиц Повреждение стуркутуры таблиц возможно в момент модификации их содержимого. Следовательно, надо стремиться к возможному уменьшению времени прямой модификации данных. Редактирование данных в буфере, а потом, одним блоком, запись изменений из буфера в исходные таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 11:25:45 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Ну, у меня идёт речь об локальной базе и таблицах. Ни о каких серверных приложениях речи не велось. Мне просто нужно каким-то образом обезопасить внесенные данные, и таким образом, чтобы не закрывать и открывать с каким-то интервалом форму для сохранения данных в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 12:00:14 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Какие бы программные "навороты" ты ни делал, всегда есть шанс, что отлкючение питания произойдет в тот момент, когда пользователь внес изменение, но твой "наворот" еще не сработал. Ну, и какой тогда смысл, во всех этих "наворотах"? Тем более, что ты все равно не можешь управлять ВСЕМИ уровнями буферизации операционной системы. Т.е. от момента срабатывания твоего "наворота" до реального (физического) момента записи информации на диск есть некоторый промежуток времени в который тоже возможен сбой питания. Почитай вложенные файлы. Думаю, много вопросов отпадет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 12:34:06 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Почитаю обязательно, спасибо за ссылку. Но... возможно я не совсем точно обрисовал картину. Открывается форма, связанная с таблицей. В ней несколько TextBox'ов, связанных с полями этой таблицы. Кнопки на форме: "Новая запись", "Сохранение", "Редактирование", "Удаление" плюс кнопки перемещения по записям. При заполнении базы бывает выключение компа из-за света. И вся проблема в том, что весь труд и время, потраченные на забивку таблицы, оказываются зря, потому как после включения компа они не сохранились. Если изредка выходить из программы, данные конечно сохраняются (в принципе досатточно даже закрывать форму). Так вот, чтобы не производить такие действия - можно ли добавить в Click кнопки "Сохранение" (после добавления новой или редактирвоания старой записи) код для 100%-ной записи данных в таблицу. Я всегда думал, что APPEND BLANK ... уже предполагает добавление новой записи и её сохранение в таблице. Оказывается, что нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 13:19:44 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Alexander Warlord При заполнении базы бывает выключение компа из-за света. И вся проблема в том, что весь труд и время, потраченные на забивку таблицы, оказываются зря, потому как после включения компа они не сохранились. Если изредка выходить из программы, данные конечно сохраняются (в принципе досатточно даже закрывать форму). По всей видимости при выключенни эл.питания просто сбивается счетчик записей. Ну выход как минимум - купить UPS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 13:40:00 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Alexander WarlordПочитаю обязательно, спасибо за ссылку. Но... возможно я не совсем точно обрисовал картину. Открывается форма, связанная с таблицей. В ней несколько TextBox'ов, связанных с полями этой таблицы. Кнопки на форме: "Новая запись", "Сохранение", "Редактирование", "Удаление" плюс кнопки перемещения по записям. При заполнении базы бывает выключение компа из-за света. И вся проблема в том, что весь труд и время, потраченные на забивку таблицы, оказываются зря, потому как после включения компа они не сохранились. Если изредка выходить из программы, данные конечно сохраняются (в принципе досатточно даже закрывать форму). Так вот, чтобы не производить такие действия - можно ли добавить в Click кнопки "Сохранение" (после добавления новой или редактирвоания старой записи) код для 100%-ной записи данных в таблицу. Я всегда думал, что APPEND BLANK ... уже предполагает добавление новой записи и её сохранение в таблице. Оказывается, что нет? Уважаемый, здесь люди с Фоксом общаются уже не первый год и Вашу проблему поняли правильно и сразу :) Ваши представления об Append Blank, replace и т.д. как об инструментах прямой записи данных в таблицы навеяны FoxPro для ДОС. Там это было на самом деле так. С выходом VFP все несколько изменилось и таблицы теперь имеют несколько степеней буферизации (нет буферизации, пессимистическая буферизация, оптимистическая буферизация). Посмотрите настройки как среды разработки, так и каждой формы, используемой для ввода данных. Вероятно, Вы откроете для себя много нового... В среде Фокса смотрите настройки: Tools->Option->Data->Locking and Buffering Tools->Option->RemoteData Для формы ввода данных: (Right Mouse Button on caption)->Properties->Data->BufferMode и DataSession... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 13:48:16 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Станислав C.Уважаемый, здесь люди с Фоксом общаются уже не первый год и Вашу проблему поняли правильно и сразу :) Да всё понятно, это я новичок в VFP. Просто я думал, что всё решается куда проще, на уровне добавления простых команд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 14:02:46 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Hi Alexander! В VFP9 команду FLUSH несколько улучшили, до того она была скорее декоративной примочкой, т.к. не давала ОС комады реально сбросить все буфера на HDD (и соответственно данные оставались в памяти). Но судя по всему и для старых версий есть выход - SYS(1104) походу не только очищает буфер чтения (т.е. вынуждает фокс заново считывать инфу с диска), но и "сбрасывает" буфер записи. Попробуй эти команды. И обязательно ВНИМАТЕЛЬНО прочитай всё что Владимир написал - это весьма полезно для новичка. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2005, 03:54:42 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Вновь возвращаюсь к своему топику, дабы не открывать новый... FLUSH в 9-ке действительно помогает с сохранением инфы. По крайней мере, сохраняется большая часть набранного (использовать буферизацию пока не пробовал). Но теперь вопрос в другом: При непредвиденной перезагрузке компьютера (выключение света, скачок энергии и т.д.), точнее через пару-тройку таких случаев рушатся индексные файлы, и Фокс предлагает их удалить создать заново. Как быть с этой ситуацией? Может, не включать индексы сразу, а создавать их по мере надобности программно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2005, 09:47:22 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Ну что, неужели никто не сталкивался с этой проблемой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2005, 11:42:58 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
C проблемой сталкивались. Но самое хорошее решение, которое устраняет причину, а не следствие (UPS) ты отвергнул в первом же своем посте. Изменением времени подключения индекса ты ничего не изменишь, так как разрушение происходит в момент обновления таблицы, а в это время индекс обычно подключен. Борьба с последствиями обычно выливается в рисование программы восстановления индексов и запуска ее или в ночное время, или при запуске программы, или в обработчике ошибок. Кому как больше нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2005, 11:53:22 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Да уж... дело ясно что ничего не ясно. То есть, понятно одно 100%-ное решение - нужен УПС. Ладно, посоветую приобрести. Всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2005, 12:02:32 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Hi Alexander! Почитай FAQ на forum.foxclub.ru - там приведен пожалуй самый простой и эффективный способ восстановления индексных файлов. Хотя от порчи это никак не спасёт, но всё-же :) Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2005, 03:51:56 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
To Alexander Warlord Я не понял из вопроса у тебя теряется 1 запись или 10-15 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2005, 12:34:47 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
Раньше терялись все набираемые записи, если не закрывать время от времени форму. Теперь, перейдя на 9-ую версию Фокса, FLUSH действительно чуток помогает. По крайней мере, сохраняется хоть часть набранной информации. К примеру, пробовал перегружать насильно: получилось - из 5 записей, сохранились 3. Но теперь проблема с крушением индексных файлов. За ссылку благодарю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2005, 13:14:14 |
|
||
|
Методы сохранения информации
|
|||
|---|---|---|---|
|
#18+
А попробуй в кнопке сохранить - закрыть все таблицы, а потом открыть заново. Будет дольше чем обычно но ... Все предложения выше относится , как я понял , сохраности 1 записи. Правда я только скачал файл буду читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2005, 14:08:31 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1593957]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
435ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 695ms |

| 0 / 0 |
