PDA

View Full Version : با قطع برق ناگهانی چیکار میشه کرد؟



س.حمیدیانفر
چهارشنبه 24 دی 1382, 21:23 عصر
سلام
آقا ما یه سیستم حسابداری داریم که از چند تا جدول اندیکس شده استفاده میکنه حالا فرض کنید وسط کار با برنامه وقتی یکی از جداول مهم وحیاتی نرم افزار رو اندکس کردیم یه دفعه برق بره یا باطری کامپیوتر نوت بوک تمام بشه :roll: :roll: :roll:

تو این گیرو دار فکر میکنید چی میشه ؟

عرض میکنم . خوشبختانه یا متاسفانه این مشکل برای یکی از برنامه های بنده پیش آمد و با کمال تعجب وقتی دوباره برنامه رو اجرا کردم دیدم ای دل غافل اصلا به هیچ عنوانی جدول عزیزمون use نمیشه و نمیتونیم ازش استفاده کنیم و مرتبا خطای آسیب دیدن فایل اندیکس رو میده حالا از دوستان عزیز خواهش میکنم راه حل های پیشنهادی خودشون رو برای حل این مسئله بفرمایند
البته بنده خدایی یه روز بهم گفت اگه با این مشکل مواجه شدی باید اندیکسهارو دوباره بسازی ولی من چون خیلی خیلی اِند فاکسپرو هستم (آره جون خودت) فقط بلدم تو فاکسپرو تحت داس اونم با دستور ساده index on ... ایندکس بسازم ولی نمیدونم اگه یه جدولی تو یه دیتا بیس ! وجود داشته باشه ما چطوری میتونیم فایل اندیکس دیتا بیس رو دوباره بسازیم
؟؟؟؟

بخشید

binyaz2003
پنج شنبه 25 دی 1382, 11:30 صبح
والا با قطع برق که نمیدونم چیکار باید کرد اما برای ایندکس ساختن فکر میکنم وقتی برای یک فیلد در قسمت طراحی بانک ایندکس رو انتخاب کنیم
خودش فایل رو میسازه!

س.حمیدیانفر
پنج شنبه 25 دی 1382, 23:44 عصر
سلام مجدد
آره عزیز دلم اینو منم میدونم ولی مشکل وقتی پیش میاد که برنامه کامل شده دست مشتریه و اصلا قرار نیست روی کامپیوتر طرف فاکسپرو نصب کنیم تا بتونیم به این روش مشکلو حل کنیم
من میخوام بدونم میشه فقط و فقط بایک سری دستور که میتونیم اونا رو اول برنامه قرار بدیم فایلهای ایندکس رو دوباره بسازیم ؟

Afshinpour
جمعه 26 دی 1382, 04:55 صبح
حمید جان منظورت رو من راستش دقیقا متوجه نشدم.

ایندکس ها رو به عنوان (free table) درست میکنی درسته ؟ میتونی همون دستور INDEX ON رو 2 بار وارد کنی و به قول معروف یک فایل رزرو درست کنی و اون رو در همچین مواقعی رینیم کنی.

ولی بهتری کار اینه که توی آپشن های نوت بوک تنظیم کنی که وقتی باطری به مثلا 30% آخر رسید آلارم بزنه و وقتی به 10% رسید وارد استند بای بشه که همچی بلایی سر برنامه ها نیاد.

برای کامپیوتر های معمولی هم که عزیز دلم UPS رو برای همین منظور درست کردن.

توی هلپ فاکس پرو نگاهی به دستور SET AUTOSAVE بنداز تقریبا به موضوع سوالت میخوره

س.حمیدیانفر
جمعه 26 دی 1382, 22:01 عصر
ممنون :wink:

amin panahi
سه شنبه 30 دی 1382, 14:46 عصر
به نظر من می تونی فایل های index ت رو یه جایی دیگه کپی کنی و هر بار که برنامه اجرا می شه اونو با دستورات فاکس دوباره توی اون پوشه ای که میخوای کپی کنی . این طوری اگه فایل های ایندکست آسیب دید هر بار خود برنامه اونا رو بازیابی می کنه .

س.حمیدیانفر
سه شنبه 30 دی 1382, 21:25 عصر
ممنون

kia1349
پنج شنبه 02 بهمن 1382, 13:27 عصر
البته پس از کپی دستورات برای بهنگام کردنش باید از دستور reindex هم استفاده کنی
من معمولا برای همچین مواقعی (مثلا در نمایشگاه کتاب که مدام قطع برق داره) بنکم رو یکبار use میکنم تا بسته بشه و اصطلاحا داده ها توش flush بشه و بعد دوباره اونو باز میکنم هرچند سربار داره ولی در عوض خیلی بهتر از پریدن اطلاعات و خراب شدن ایندکس هاست

b_tayefi
دوشنبه 06 بهمن 1382, 08:12 صبح
دوست عزیز اگر بانک شما خراب بشه اصلا use نمیشه که بتونید index بسازید یا reindex کنید یکی از موارد داشتن فایل fptاست وقتی این فایل را از dbfاصلی جدا کنید و در مسیری دور از دسترس قرار دهید بانک شما با نمیشود

راه حل : این مشکل در قطع برق یا reset شدن سیستم سرور ما در نیروگاه .... اتفاق افتاد و ما بکمک نورتون یوتیل در داس و اگر اشتباه نکنم دستور fix file یا file fix انرا اصلاح کردیم :lol:

اما در نرم افزار های طراحی شده برای بهتر و سریعتر شدن کار منویی تحت عنوان باز سازی شاخصها داریم که دران توجهی به وجود شاخص نمیشود و شاخصهای لازم از نو ساخته میشود و بانکها در انتها دوباره با شاخصها باز میگردد و همجنین در ابتدای اجرای برنامه وجود بانکها و شاخصها تست شده ( در مسیر مربوطه ) و در صورت نبودن بانکی پیغام لازم صادر شده و در صورت نبودن شاخص بدون پیغاو به کاربر ساخته میگردد .

توجه بین reindex و index on تفاوتی وجود دارد که با تجربه و انهم مخصوصا فایلهای fpt متوجه میشوید

foxerboy76
پنج شنبه 01 اردیبهشت 1384, 10:28 صبح
بهترین کاری که من توصیه میکنم اینه که ابتدای اجرای برنامه فایلهای ایندکس را پاک کنی و مجددا بسازی.
یعنی اینکه یه بخش initializing اول برنامه تعبیه کنی و هر دفعه با اجرای برنامه ایندکس ها را بسازی.
این کار خیلی منطقی و مطمینه.
من که این کار رو میکنم و من هم همین مشکل را داشتم و با این کار دیگه ندارم. :oops:االبته این کار را باید برنامه انجام دهد نه اینکه دستی بری و درستشون کنی.

arash2005
چهارشنبه 25 خرداد 1384, 15:11 عصر
سلام بر همگی
با عرض پوزش از مدیر سایت که در کار ایشان دخالت میکنم .
در مورد قطع برق اگر شما بهد از یک سری replace در بانک دستور flush رو بزارید هیچوقت در زمان قطع برق اطلاعات شما بهم نمیریزد .
موفق باشید

javad_hosseiny
چهارشنبه 25 خرداد 1384, 21:45 عصر
دستور فلاش باعث انتقال اطلاعات از جداول که بصورت موقت در حافظه رم نگهداری شده بر روی هارد می شوند (البته این نگهداری جهت افزایش سرعت کار است ولی خوب به هنگام برق رفتن باعث ضرر می شود)
اما مشکل بر روی فایلهای ایندکس است
(در مورد خوب نحوه عملکرد همانطور که دوستان نیز گفتند بهترین کار تست باز شدن جداول و فعال شدن ایندکس های در ابتدای برنامه (همان قسمت که برنامه نویسان تمامی جداول مورد نیاز را در ناحیه کاری مختلف (select) باز می کند) کنترل کند که بر اثر باز نشدن (تابع used) و تابع (IDXCOLL(1) و ایجاد خطا (on error) توسط تمهیداتی (مثلا از روی فایل خراب ابتدا پشتیبان بگیرد) و سپس توسط دستور create جدول جدید باز کند (در صورت خرابی جدول اصلی) و یا خرابی فایل ایندکس نیز با استفاده از دستور index on (که بهتر از reindex که در اینگونه موارد است) اینکار انجام شود
و اما در صورتی خود جدول آسیب دیده باشد (که این امر معمولا به هنگام خرابی فایل های cdx (ایندکس مرکب) و یا جداول که دارای فیلد یادداشت memo هستند بیشتر بوجود می آید)
در این صورت شما باید با استفاده از توابع سطح پایین فایل (دستورات fopen,fwrite,fseek,...) فایل جدول را باز کنید و تغییراتی در ساختار جدول (هدر فایل) ایجاد کنید که معمولا بیشتر قسمت ابتدای جدول (تنظیمات مربوط به تعداد رکورد جدول ) و یا قسمت معرفی فیلدها را تصحیح نمایید (و البته قبل از باز کردن مجدد فایل تغییر داده شده فایل cdx مربوطه را حذف کنید تا باز کردن جدول آن را مجددا ایجاد نمایید)
(نکته: از این روش بنده برای رفع اشکالات بوجود آمده (بصورت روتین و توسط خود برنامه) در جداول (مخصوصا cdx ها و fpt ها) استفاده می کنم و تاکنون مشکلی نداشتم و شاید دوستان دیگر الگوریتم های دیگری برای این کار داشته باشند)

mehran_337
دوشنبه 27 آذر 1385, 10:12 صبح
در برنامه اخیرم ابتدای برنامه فایلها برای باز شدن ابتدا خرابی را چک می کنند بعد باز می شوند اما وقتی خرابی فایل را تعمیر می کنند مشاهده شد که یکی فایل این پیغام را می دهد که : ابتدا باید cdx را پاک کنید بعد فایل را باز کنید.
حالا می خوام بدونم من اگه cdx سالم را در جایی کپی کرده با شم (مثلا با 100 تا رکورد) و بعد از ثبت اطلاعات (مثلا 200 تا رکورد هم بعدا اضافه بشه) cdx را کپی کنم در مسیر برنامه و reindex کنم مشکلی در نشان دادن اطلاعات پیش نمیاد؟

mehran_337
دوشنبه 27 آذر 1385, 16:03 عصر
دوباره سلام
در ادامه تاپیک بالای خودم ، در سایت یونیورسال دنبال جواب خودم بودم
یه برنامه توپ پیدا کردم . این برنامه مسیری رو که جداول قرار دارند از ما می گیره . بعد توی اون جداول هر چی تگ ایندکس باشه به همون صورت در یک فایل prg ایجاد می کنه.
خب . وقتی جداولمون به درستی طراحی شد در اخر کار از این برنامه استفاده می کنیم و prg که می ده رو بعنوان بازسازی فایلها به کار می گیریم
http://www.universalthread.com/Downloads/makecdx.zip

pooyeshpajooh
دوشنبه 27 آذر 1385, 19:05 عصر
این برنامه رو برای رفع عیب فایلهای خراب امتحان کن

rahro
سه شنبه 28 آذر 1385, 11:24 صبح
ضمن تشکراز دوستان
من در چند مورد گزارشی در خصوص از کارافتادن برنامه داشتم در حین بازدید مشاهده کردم که نام تیبلهای مربوطه از دیتابیس کلی پاک شده به عبارتی هر جند در پوشه DATA که محل ذخیره دیتابیس و تیبلهای من است دیتابیس مربوط و همچنین تیبلها وجود دارند ولی نام تیبلهای مربوطه در لیست دیتابیس من وجود ندارد و تنها نام دیتابیس خالی وجود دارد برای ترمیم مجبورا" تمامی فایلهای ایندکس رو حذف و تیبلهای مربوطه را بصورت ازاد باز کنم و دیتابیس مربوطه حذف و مجددا به وجود اورم
حال سوال
1- علت این موضوع چیست با توجه به اینکه از یوپی اس استفاده میشود

rezaTavak
سه شنبه 28 آذر 1385, 19:00 عصر
من تا حالا همچین مشکلی نداشته ام یکی از آنهایی که خراب شده منظور dct,dbc,dcx را اینجا قرار دهید.

rahro
چهارشنبه 29 آذر 1385, 11:51 صبح
من تا حالا همچین مشکلی نداشته ام یکی از آنهایی که خراب شده منظور dct,dbc,dcx را اینجا قرار دهید.
متاسفانه فعلا ندارم
باید دوباره صبر کنم تا اتفاق بیفتد

hamed_m
دوشنبه 04 دی 1385, 15:31 عصر
من سعی میکنم داده ها رو در کرسر بخونم، به این ترتیب ایندکس برای بانک لازم ندارم. برای اردر هم از دستورات اسکیوال استفاده میکنم. البته باید به سرعت و حجم داده ها هم توجه کرد. تا بحال با برنامه های کاربردی کوچک در زمینه سرعت مشکلی نداشته ام. همیشه در ابتدای برنامه تیبل ها رو یوز و پک میکنم. مشکل قطع برق هم برطرف میشه. البته کلی بار برنامه نویسی اضافه داره و سرعت اما گاهی میشه از کسری از ثانیه صرف نظر کرد.
راه غیر استانداردیه و مطمئنا اساتید باهاش موافقت نخواهند کرد اما در محیطهایی که کاربر ناوارد یا قطع برق داریم برای من خوب عمل کرده.

mehran_337
دوشنبه 04 دی 1385, 18:33 عصر
حامد جان سلام!!
هیچ معلومه کجایی؟ تکه کدهای جالب می خواهیم!!!!!!