Russian Qt Forum

Qt => Общие вопросы => Тема начата: crocus от Март 13, 2007, 02:45



Название: Валидная запись даты в settings
Отправлено: crocus от Март 13, 2007, 02:45
не напрягая мозг сделал так:
Код:
mod_query.setQuery( "SELECT Update_time from tbl_check_mod WHERE Name = 'tbl_agency';" );
date_mod_agency = mod_query.record(0).value(0).toDateTime();
date_modup_agency = settings.value( "tbl_agency" ).toDateTime();
if (!date_modup_agency.isValid())
settings.setValue("tbl_agency", date_mod_agency);

в settings получаем:
Код:

....
tbl_agency=@Variant(\0\0\0\x10\0%r\x8e\x2\xb4yp\xff)
....

мне то все равно как записано, хоть иероглифами, лишь бы считывала программа, но уже в таком коде:
Код:
QSqlQueryModel mod_query;
QSettings settings ( QSettings::IniFormat, QSettings::UserScope, "RealtorPlus", "agency" );
settings.beginGroup("updater");
mod_query.setQuery( "SELECT Update_time from tbl_check_mod WHERE Name = 'tbl_agent';" );
date_mod_agent = mod_query.record(0).value(0).toDateTime();
date_modup = settings.value( "tbl_agent" ).toDateTime();
if (!date_modup.isValid())
settings.setValue("tbl_agent", date_mod_agent);

if (date_mod_agent <= date_modup){
serverFile("tbl_agent.sql");
settings.setValue("update", true);
}
mod_query.setQuery( "SELECT Update_time from tbl_check_mod WHERE Name = 'tbl_agency';" );
date_mod_agency = mod_query.record(0).value(0).toDateTime();
date_modup_agency = settings.value( "tbl_agency" ).toDateTime();
if (!date_modup_agency.isValid())
settings.setValue("tbl_agency", date_mod_agency);

if (date_mod_agency <= date_modup_agency){
serverFile("tbl_agency.sql");
settings.setValue("update", true);
}

mod_query.setQuery( "SELECT Update_time from tbl_check_mod WHERE Name = 'tbl_flats'" );
date_mod_flats = mod_query.record(0).value(0).toDateTime();
date_modup_flats = settings.value( "tbl_flats" ).toDateTime();

if (!date_modup_flats.isValid())
settings.setValue("tbl_flats", date_mod_flats);

if (date_mod_flats <= date_modup_flats){
serverFile("tbl_flats.sql");
settings.setValue("update", true);
}
settings.endGroup();


после первого вызова
Код:
serverFile("tbl_agency.sql");

порой происходит затуп, ошибок не выдает, но и serverFile("tbl_agency.sql"); serverFile("tbl_flats.sql"); не выполняются.
Лечится - если в "settings" удалить строки с этими датами, т.е. даже  не лечится, а до какого-то времени работает корректно - потом снова косяк, причем бессистемно.
Вопрос: может надо QString переводить вида "YYYY-mm-dd"?? или не  лучший выбор запись и  чтение в одной функции??? и в целом прислушаюсь к рекомендациям как уйти от дублирования.


Название: Валидная запись даты в settings
Отправлено: crocus от Март 15, 2007, 05:48
Ну точно разделил чтение и запись settings, в .ini записываю
Код:
tbl_agency=2007-02-26 12:36:22
tbl_agent=2007-03-15 12:41:22
tbl_flats=2007-03-15 12:43:14
и вышеописанные косяки исчезли.