بخاطر اینکه خیالت راحت شود بعد از هر post شما متد fullflashbuffer را صدا بزن این کار اطلاعات تحت کنترل windows را به صورت فیزیکی به هارد دیسک می سپارد
بخاطر اینکه خیالت راحت شود بعد از هر post شما متد fullflashbuffer را صدا بزن این کار اطلاعات تحت کنترل windows را به صورت فیزیکی به هارد دیسک می سپارد
البته منظورتون همون ForceFlassBuffers است که یکی از متدهای سیسون هست
نه منظورم همون fullflashbuffer که مربوطه به Table یا Query است
دیروز با یکی از بچه ها صحبت میکردم ، ایشون هنوز معتقد بودن که Dbisam وقتی برق بره با مشکل برخورد میکنه ، خدمت دوستان عرض کنم که حدود 1 ساله برنام هام رو دارم با DBIsam می نویسم ، در اوایل مشکلاتی وجود داشت (به خصوص وقتی برق می رفت) ، اما الان مدتهاست که دیگه هیچ مشکلی باهاش ندارم ، خاستم تجربیاتم رو با دوستان در میان بزارم تا دیگه کسی نگه Dbisam وقتی برق میره با مشکل برخورد میکنه :
Dbisam در بعضی از مواقع که برق میره جداولش باز نمیشن ، برای اینکه جداول باز بشن باید بهتر با متد های repair و Optimize وVerify جداول اسکن بشن ، مثلا:
Table1.RepairTable
در اینصورت حتما جداول باز میشن ، اما خوب ممکنه که یکسری از اطلاعات حذف شده باشن ، برای اینکه در این مواقع اطلاعات حذف نشه همانطوری که دوستان اشاره کردن باید خصوصیت fourcebufferflash عنصر Session رو True کرد . با این کار حتی اگر برق هم بره هیچ اطلاعاتی حذف نخواهد شد ، اما خوب ، در موارد بسیار نادری ، یه مشکل دیگه بوجود میاد ، و اون هم اینه که وقتی برق بره و پس از اسکن کردن برنامه یکسری رکورد خود به خود اضافه میشن ، برای حل این مشکل یه فیلد به جدولتون اضافه کنید ، نامش رو مثلا FieldTest بزارید . نوعش رو SmallInt و مقدار پیش فرضش رو مثلا 111 بگزارید . حالا هر بار که برنامه رو اسکن می کنید با استفاده از عنصر DBISAMUpdateSQL تمامی رکوردهایی که فیلدFieldTest شون مقدار 111 نداره را حذف کنید (توضیح اینکه وقتی رکوردها خود به خود اضافه بشن ، فیلدها مقادیر پیشفرضشون رو نمیگیرن): این هم کدش :
DBISAMUpdateSQL1.SQL[ukDelete].Clear;
DBISAMUpdateSQL1.SQL[ukDelete].Add('delete from "'+YourDataBasePath+'YourTableName"');
DBISAMUpdateSQL1.SQL[ukDelete].Add('where FieldTest=null or FieldTest<>111');
DBISAMUpdateSQL1.SQL[ukDelete].Text:=DBISAMUpdateSQL1.SQL[ukDelete].Text;
DBISAMUpdateSQL1.Apply(ukDelete);
با رعایت نکات مذکور ، دیگه هیچ مشکلی با برق رفتن ندارید.
موفق باشید.