Проблем с отваряне на CHM файлове под Vista

Няколко пъти ми се случва досега да не мога да видя съдържанието на CHM файлове. Ако се отварят от network share – причината е ясна.
Възможно е да дава странни грешки от сорта на “Navigation to the webpage was canceled”, “File not Found” и т.н. Оказа се, че не съм първият с такъв проблем (както обикновено) и решение е описано в http://blog.crowe.co.nz/archive/2007/04/13/719.aspx.
В общи линии – в Properties има бутон Unblock, след което всичко се оправя и CHM файла си е вече съвсем наред.Забележка: Ако файлът се намира на системния диск – Unblock бутона изглежда като да не работи, въпреки че не изкарва грешка. (Най-вероятно е заради правата, но можеше да изкара грешка)

Корекция на правописни грешки на български език с Office 2007

Много е приятно, когато нещата просто работят. Още по-приятно е, когато никак не се очаква да работят, пък те си работят съвсем добре 🙂

Едно от тези неща е ItaEst -една разработка на Българската Асоциация за Компютърна Лингвистика.
“ItaEst – Така е!” е система за корекция на правописни грешки и сричкопренасяне за български език за Microsoft Office 2000, XP и 2003.”
 
Лесна и бърза инсталация – работи безпроблемно и за Office 2007 (въпреки че е софтуер от 2004-та година). Лицензът е максимално опростен – може да се инсталира без никакви ограничения.
Какво по-добре от това. Опредено си заслужава да се използва!
Адресът, от който може да се изтегли е: http://www.bacl.org/itaestbg.html , размерът е под 6 MB.

Проблем с ID-тата при SQL Server Compact Edition

SQL Server Compact Edition е много добра вградена база, която може лесно да се deploy-ва на клиентски машини.
Разбира се, има ограничения – някои ти бъркат в здравето, други не чак толкова. Един проблем се оказа доста изнервящ, докато не намеря в Google подходящо решение. Накратко – ако в приложението се добавят нови записи в таблица, то те са с id-та -1, -2, -3 и т.н.
Дотук съвсем нормално и в реда на нещата.
След запис на данните – новите редове се появяват физически в базата с правилните (поредни) id-та. За съжаление – в приложението те някак си остават със старите идентификатори (-1, -2 и т.н). Ефектът е доста неприятен – ако се редактира някой от току що създадените редове и се даде запис се получава Exception, тъй като не може да намери такова id в базата за update.
Още по-изнервящо е, че същия код работи съвсем добре с SQL Express или пълния SQL.
След известно чудене и лутане в Интернет намерих решение, по-точно – едно решение.В form_Load се добавя:

eventsTableAdapter.Adapter.RowUpdated += new System.Data.SqlServerCe.SqlCeRowUpdatedEventHandler(Adapter_RowUpdated);

(тук таблицата е events, като трябва да се добави по един ред за всяка таблица, в която може да се добавят нови редове)

като самия код на метода е:

void Adapter_RowUpdated(object sender, System.Data.SqlServerCe.SqlCeRowUpdatedEventArgs e)
{
if (e.StatementType == StatementType.Insert)
{
SqlCeCommand cmd = null; cmd = new SqlCeCommand(“SELECT @@IDENTITY”, e.Command.Connection, e.Command.Transaction);

int newid = Convert.ToInt32(cmd.ExecuteScalar());

DataColumn colMasterID = e.Row.Table.Columns[“ID”];
colMasterID.ReadOnly = false;
e.Row[colMasterID] = newid;
}
}

Малко “грубо” решение, тъй като прави нова заявка към базата при вседки update, но работи. Все пак си мисля, че трябва да има и по-добро решение …
(най-вероятно refresh и прочитане отново на данните също ще работи, но не ми се струва достатъчно елегантно)