не напрягая мозг сделал так:
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, в .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
и вышеописанные косяки исчезли.