powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Методы сохранения информации
21 сообщений из 21, страница 1 из 1
Методы сохранения информации
    #33128146
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получается у меня такая вот неприятная вещь:
работаю в форме с таблицей, входящей в базу данных. Т.е. добавляю, редактирую записи (не в гриде, просто в текстбоксах). Допустим, набрал определённое количество записей, и если после этого моргнул свет и комп перегрузился - то весь труд насмарку. Если выйти из формы (или программы), естественно закрыв при этом саму базу - всё в порядке, данные фиксируются.
Так вот, если ли какие-нибудь варианты сохранения хотя бы уже набранных записей. Ставить на кнопку "Сохранения" код закрытия и вновь открытия базы, думаю, глупо. Добавил туда функцию FLUSH, но как оказалось (при насильственной перегрузке :) компа) это ни к чему положительному не привело, данные также потерялись.
Прошу подсказать более опытных.

P.S. Вариант UPS не предлагать ;)
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33128160
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander WarlordПолучается у меня такая вот неприятная вещь:
работаю в форме с таблицей, входящей в базу данных. Т.е. добавляю, редактирую записи (не в гриде, просто в текстбоксах). Допустим, набрал определённое количество записей, и если после этого моргнул свет и комп перегрузился - то весь труд насмарку. Если выйти из формы (или программы), естественно закрыв при этом саму базу - всё в порядке, данные фиксируются.
Так вот, если ли какие-нибудь варианты сохранения хотя бы уже набранных записей. Ставить на кнопку "Сохранения" код закрытия и вновь открытия базы, думаю, глупо. Добавил туда функцию FLUSH, но как оказалось (при насильственной перегрузке :) компа) это ни к чему положительному не привело, данные также потерялись.
Прошу подсказать более опытных.

P.S. Вариант UPS не предлагать ;)

Есть два варианта решения проблемы:
1. Прямая (небуферизованная) работа с таблицей. Но это не есть гут...
2. Не накапливать записи (для пакетного сброса), а записывать запись в таблицу сразу после редактирования (естественно, применив к записи commit/TableUpdate()...)
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33128180
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Станислав C.
Есть два варианта решения проблемы:
1. Прямая (небуферизованная) работа с таблицей. Но это не есть гут...
2. Не накапливать записи (для пакетного сброса), а записывать запись в таблицу сразу после редактирования (естественно, применив к записи commit/TableUpdate()...)
1. Я вообще-то вроде напрямую с работаю, и всегда полагал, что команда REPLACE ... WITH ... должна сохранять записи.
2. А вот этом вариант мне вообще не знаком... ((
Слышал, что можно использовать буферизацию?
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33128283
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33128397
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько аксиом.

В файл-серверном приложении защитится от аварийного сбоя питания невозможно в принципе. Самое большее, что можно сделать, это уменьшить вероятность потери данных, но никак не исключить это совсем.


Стратегия работы в файл-серверном приложении направлена не на защиту от потери данных (повторюсь, это не реализуемо в принципе), а на защиту от повреждения структуры таблиц


Повреждение стуркутуры таблиц возможно в момент модификации их содержимого. Следовательно, надо стремиться к возможному уменьшению времени прямой модификации данных. Редактирование данных в буфере, а потом, одним блоком, запись изменений из буфера в исходные таблицы
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33128506
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, у меня идёт речь об локальной базе и таблицах. Ни о каких серверных приложениях речи не велось.
Мне просто нужно каким-то образом обезопасить внесенные данные, и таким образом, чтобы не закрывать и открывать с каким-то интервалом форму для сохранения данных в таблице.
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33128605
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие бы программные "навороты" ты ни делал, всегда есть шанс, что отлкючение питания произойдет в тот момент, когда пользователь внес изменение, но твой "наворот" еще не сработал.

Ну, и какой тогда смысл, во всех этих "наворотах"?

Тем более, что ты все равно не можешь управлять ВСЕМИ уровнями буферизации операционной системы. Т.е. от момента срабатывания твоего "наворота" до реального (физического) момента записи информации на диск есть некоторый промежуток времени в который тоже возможен сбой питания.

Почитай вложенные файлы. Думаю, много вопросов отпадет.
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33128739
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почитаю обязательно, спасибо за ссылку.
Но... возможно я не совсем точно обрисовал картину. Открывается форма, связанная с таблицей. В ней несколько TextBox'ов, связанных с полями этой таблицы. Кнопки на форме: "Новая запись", "Сохранение", "Редактирование", "Удаление" плюс кнопки перемещения по записям. При заполнении базы бывает выключение компа из-за света. И вся проблема в том, что весь труд и время, потраченные на забивку таблицы, оказываются зря, потому как после включения компа они не сохранились. Если изредка выходить из программы, данные конечно сохраняются (в принципе досатточно даже закрывать форму).
Так вот, чтобы не производить такие действия - можно ли добавить в Click кнопки "Сохранение" (после добавления новой или редактирвоания старой записи) код для 100%-ной записи данных в таблицу.
Я всегда думал, что APPEND BLANK ... уже предполагает добавление новой записи и её сохранение в таблице. Оказывается, что нет?
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33128814
Yras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Warlord
При заполнении базы бывает выключение компа из-за света. И вся проблема в том, что весь труд и время, потраченные на забивку таблицы, оказываются зря, потому как после включения компа они не сохранились. Если изредка выходить из программы, данные конечно сохраняются (в принципе досатточно даже закрывать форму).

По всей видимости при выключенни эл.питания просто сбивается счетчик записей. Ну выход как минимум - купить UPS.
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33128846
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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...
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33128911
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Станислав C.Уважаемый, здесь люди с Фоксом общаются уже не первый год и Вашу проблему поняли правильно и сразу :)
Да всё понятно, это я новичок в VFP. Просто я думал, что всё решается куда проще, на уровне добавления простых команд.
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33130169
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Alexander!

В VFP9 команду FLUSH несколько улучшили, до того она была скорее декоративной примочкой, т.к. не давала ОС комады реально сбросить все буфера на HDD (и соответственно данные оставались в памяти). Но судя по всему и для старых версий есть выход - SYS(1104) походу не только очищает буфер чтения (т.е. вынуждает фокс заново считывать инфу с диска), но и "сбрасывает" буфер записи. Попробуй эти команды. И обязательно ВНИМАТЕЛЬНО прочитай всё что Владимир написал - это весьма полезно для новичка.

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33139567
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вновь возвращаюсь к своему топику, дабы не открывать новый...
FLUSH в 9-ке действительно помогает с сохранением инфы. По крайней мере, сохраняется большая часть набранного (использовать буферизацию пока не пробовал). Но теперь вопрос в другом:
При непредвиденной перезагрузке компьютера (выключение света, скачок энергии и т.д.), точнее через пару-тройку таких случаев рушатся индексные файлы, и Фокс предлагает их удалить создать заново.
Как быть с этой ситуацией? Может, не включать индексы сразу, а создавать их по мере надобности программно?
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33139934
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну что, неужели никто не сталкивался с этой проблемой?
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33139965
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
C проблемой сталкивались. Но самое хорошее решение, которое устраняет причину, а не следствие (UPS) ты отвергнул в первом же своем посте.

Изменением времени подключения индекса ты ничего не изменишь, так как разрушение происходит в момент обновления таблицы, а в это время индекс обычно подключен.

Борьба с последствиями обычно выливается в рисование программы восстановления индексов и запуска ее или в ночное время, или при запуске программы, или в обработчике ошибок. Кому как больше нравится.
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33140009
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да уж... дело ясно что ничего не ясно. То есть, понятно одно 100%-ное решение - нужен УПС. Ладно, посоветую приобрести.
Всем спасибо.
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33141700
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Alexander!

Почитай FAQ на forum.foxclub.ru - там приведен пожалуй самый простой и эффективный способ восстановления индексных файлов. Хотя от порчи это никак не спасёт, но всё-же :)

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33141879
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33142356
Фотография ГенГрум
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Alexander Warlord

Я не понял из вопроса у тебя теряется 1 запись или 10-15 ?
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33142507
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Раньше терялись все набираемые записи, если не закрывать время от времени форму. Теперь, перейдя на 9-ую версию Фокса, FLUSH действительно чуток помогает. По крайней мере, сохраняется хоть часть набранной информации. К примеру, пробовал перегружать насильно: получилось - из 5 записей, сохранились 3.
Но теперь проблема с крушением индексных файлов.

За ссылку благодарю!
...
Рейтинг: 0 / 0
Методы сохранения информации
    #33142740
Фотография ГенГрум
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А попробуй в кнопке сохранить - закрыть все таблицы, а потом открыть заново. Будет дольше чем обычно но ...

Все предложения выше относится , как я понял , сохраности 1 записи. Правда я только скачал файл буду читать.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Методы сохранения информации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]