|
|
|
|
#1 |
|
Участник
|
Тоже надоела ненужная синхронизация.
В результате переписал метод вот так: X++: boolean dbSynchronize(tableId tableId = 0, // 0 = all tables, non-zero is a valid table handle boolean syncAsNeeded = true, // true = objects touched in the AOT, false = unconditional synchronize boolean continueOnError = true, boolean showProgress = true ) // true = report all problems, but throw only after all tables are synchronized, false = stop synchronize after first error/problem { SqlSyncPending sqlSyncPending = new SqlSyncPending(); boolean ok; ; setPrefix("@SYS22807"); if (SQLSyncPending.databaseTouched() && Box::yesNo("Синхронизировать?", DialogButton::Yes) == DialogButton::Yes) ok = super(tableId, syncAsNeeded, continueOnError, showProgress); else { new SQLSyncPending().databaseTouched(false); ok = true; } if (ok && this.isRunningMode()) { SysApplicationSetup::saveApplicationVersion(SysApplicationSetupMode::Synhronize); // HansBred - SP4 - PS #5544 SysSQLInitDbTriggers::CheckExistsDBTriggers(); } return ok; } Может кто знает как довести до ума?
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
|
|
|
#2 |
|
MCITP
|
Цитата:
Сообщение от miklenew
Тоже надоела ненужная синхронизация.
В результате переписал метод вот так: X++: boolean dbSynchronize(tableId tableId = 0, // 0 = all tables, non-zero is a valid table handle boolean syncAsNeeded = true, // true = objects touched in the AOT, false = unconditional synchronize boolean continueOnError = true, boolean showProgress = true ) // true = report all problems, but throw only after all tables are synchronized, false = stop synchronize after first error/problem { SqlSyncPending sqlSyncPending = new SqlSyncPending(); boolean ok; ; setPrefix("@SYS22807"); if (SQLSyncPending.databaseTouched() && Box::yesNo("Синхронизировать?", DialogButton::Yes) == DialogButton::Yes) ok = super(tableId, syncAsNeeded, continueOnError, showProgress); else { new SQLSyncPending().databaseTouched(false); ok = true; } if (ok && this.isRunningMode()) { SysApplicationSetup::saveApplicationVersion(SysApplicationSetupMode::Synhronize); // HansBred - SP4 - PS #5544 SysSQLInitDbTriggers::CheckExistsDBTriggers(); } return ok; } Может кто знает как довести до ума? Когда просто синхронизиться таблица "по требованию" то "точед"==false и у вас синхронизация никогда не выполняется. В случае же изменения EDT там будет true. Т.е. надо спрашивать только тогда когда SQLSyncPending.databaseTouched()==true (ну или вообще всегда )
__________________
Zhirenkov Vitaly |
|
|
|
|
#3 |
|
Участник
|
Цитата:
Сообщение от ZVV
Это из-за вот этого if (SQLSyncPending.databaseTouched() &&
Когда просто синхронизиться таблица "по требованию" то "точед"==false и у вас синхронизация никогда не выполняется. В случае же изменения EDT там будет true. Т.е. надо спрашивать только тогда когда SQLSyncPending.databaseTouched()==true (ну или вообще всегда )Без неё у меня при каждом сохранении, даже если вообще ничего не делал, будет вылетать: "Синхронизировать?". А когда я принудительно хочу что -то синхронизировать, естественно она говорит, что изменений нет и ничего не пытается синхронизировать. В этом то и засада.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
|
| Теги |
| aot, edt, синхронизация баз |
|
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|