PDA

View Full Version : خرابی header index فایلهای dbf



saeed_82
شنبه 17 اردیبهشت 1384, 19:42 عصر
من میخوام یک بانک فاکس رو تبدیل به اکسس کنم ولی وقتی فایل dbf رو میخوام بازکنم پیغام خطای زیر میاد:
corrupt table/index header
اما فایل مربوطه توی برنامه قدیمی خودش که با فاکس نوشته شده باز میشه ، لطفا یک یوتیلیتی تحت ویندوز معرفی کنید که بتونم خرابی اون رو درست کنم
ممنون!

شفیعی
شنبه 17 اردیبهشت 1384, 23:22 عصر
سلام
دوست عزیز فایل DBF ایندکس دارد اگر ایندکس دارد ایندکس آن را در فاکس پرو پاک کن بعد ببین در اکسس لود می شود شاید مشکل از فایل ایندکس باشد

saeed_82
یک شنبه 18 اردیبهشت 1384, 11:47 صبح
لود نمیشه
از این یوتیلیتی ها که بانک رو ترمیم میکنند البته نسخه رایگان سراغ ندارید؟

V60
شنبه 02 مهر 1384, 13:16 عصر
با سلام
من هم همین مشکل را دارم برای من این خطا را اعلام می کند
Invalid index descriptor.
البته من نمی خواهم تبدیل کنم به اکسس بلکه می خواهم در همان بانک اطلاعاتی را بریزم
برنامه از قبل نوشته شده است و در حال حاضر هم از ان استفاده می کنند من می خواهم برنامه ای تحت ویندوز بنویسم که بشود اطلاعات را وارد ان کرد و در برنامه فاکس هم بتوان از آن اطلاعات وارد شده استفاده کنند
با تشکر

Naficy
شنبه 02 مهر 1384, 20:22 عصر
برای ترمیم، احتمالا اگر شما فایل را درون خود دلفی باز کنید (همانجا در حالت Design ؛ خصوصیت Active شی جدول را true کنید) قاعدتا خطا می ده و می پرسه که آیا ایندکسها را حذف کند یا نه. شما هم بگویید حذفشان کند. (بعیده که هنگام تبدیل احتیاجی به ایندکسها باشه، اگر هم هست دوباره هرچی لازمه خودتون بسازین) البته همه این مطالب در هنگام باز کردن فایل با BDE رخ می دهد.

V60
دوشنبه 04 مهر 1384, 09:38 صبح
جناب نفیسی
من در هنگام باز کردن جدول در خود برنامه هم همین ایراد را از سیستم می گیرم
به نظر می رسد که نمی تواند ایندکس را بخواند , می خواستم ببینم اگر نخواهم از bde استفاده کنم می شود با ado این کار را انجام داد یا نه , فکر می کنم اخر مجبور باشم یک برنامه تحت dos بنویسم تا مشکل حل شود , اخه این جدول در برنامه سابق خود در حال کار کردن است و تحت داس هیچ مشکلی ندارد
لطفا راهنمایی کنید

Naficy
دوشنبه 04 مهر 1384, 20:11 عصر
راهنمایی به شما مرا مجبور کرد که دلفی رو اجرا کنم....! :عصبانی: :لبخند: (و چقدر از این کار متنفرم! :چشمک: )
و متاسفانه هم اکنون مشکلی در سیستم من وجود داره که نمی شه از کمپوننتهای ado استفاده کنم. :گریه: پس توضیح زیر چشم بسته نوشته شده:

یک TADOConnection روی فرم قرار دهید و رویش دوبار کلیک کنید. گزینه دوم را انتخاب و دکمه Build را بزنید. در پنجره بعدی گزینه ای که شامل کلمه ODBC Driver است را انتخاب و Next را بزنید. بازهم در بالا گزینه دوم را انتخاب و Build را بزنید. اکنون باید در پنجره ODBC باشید که کمی (فقط کمی) مشابه پنجره های بازکردن فایل است. اکنون کلید New را زده و Microsoft ODBC driver for Visual Foxpro (یا چیزی شبیهش) را انتخاب کنید و Next را بزنید. یک اسم بدهید و همینطور ادامه دهید تا ویزارد پایان یابد. سپس پنجره تنظیمات درایور باز می شود که اگر اشتباه نکنم باید ویرایش FoxPro خود و ... را انتخاب کنید. سپس همه ی دیالوگها را OK بزنید. اکنون شما باید یک اتصال از طریق ADO ساخته باشید. با گذاشتن یک ADOTable، و تنظیم خصوصیت Connection، بقیه چیزها مانند BDE پیش می رود...

ضمنا همونطور که قبلا دوستان پیشنهاد دادند، من هم توصیه می کنم از خود FoxProی تحت داس برای رفع مشکل و ترمیم کمک بگیرید. خود من تا کنون چندین برنامه تبدیل از FoxPro به ویندوز نوشته ام و تا کنون مشکل شما را نداشته ام.

در آخر هم باید بگم، من از لفظ "جناب نفیسی" چندان خوشم نمی یاد!! :لبخند: و هرچند ترجیح می دم اصلا با "نام" صحبت نشود،(و از عباراتی مثل "دوست عزیز" استفاده شود!!) اما در صورت لزوم، "آقای نفیسی" رو بیشتر ترجیح می دم!!!!!! :قهقهه: :لبخند: :قهقهه: :لبخند:

V60
چهارشنبه 20 مهر 1384, 15:52 عصر
دوست عزیز
از پاسختان متشکرم , ولی مشکل من حل نشد مشکلی که من دارم این است که می خواهم یک فایل exe بسازم و بعد ان را برای کسی میل کنم
و اون هم حر را از بر تشخیص نمی دهد که بتواند کاری غیر از اجرای آن انجام دهد , در ضمن این مسیری که شما بیان کردید من خودم هم نتوانستم انجام دهم ( البته به خدا من یک کمی حر را از بر تشخیص می دهم) ولی جایی که باید آدرس دهی داشته باشد و من فایل dbf را به ان مسیر دهد را پیدا نمی کنم
لطفا راهنمایی فرمایید.

Naficy
چهارشنبه 20 مهر 1384, 16:46 عصر
اگر همان راهی که گفتم را بروید، همانجایی که گفتم تنظیمات مربوط به فاکس پرو را می پرسد می توانید نام فایل جدول را بدهید.
اگر در رفتن راهی که توضیح دادم مشکل دارین، دقیقتر بگین کجاش رو نتونستین برین تا بتونم کمک کنم.

ضمنا چند نکته کوچک:
این راهی که گفتم برای وصل شدن به دیتابیس از طریق ado (بجای bde) است!
این کارهایی که گفتم رو شما یک بار هنگام طراحی برنامه انجام می دین. بعدش که برنامه کمپایل شد دیگه کاربرتون نیازی نیست این راه رو بره...!!!

یه حدسی می زنم که پست من رو دقیق نخوندین. ممکنه اشتباه کنم، اما بد نیست یکبار دیگه هردو پست قبلی من رو دقیق بخونین و اگر نکته یا اصطلاح نا مفهومی داره حتما بپرسین.

سید مسعود موحد
پنج شنبه 21 مهر 1384, 10:57 صبح
دوست عزیز چرا از کامپوننتهای Apollo استفاده نمی کنی مخصوص کار با DBF‌ است و بس
موفق باشی

moradi_am
پنج شنبه 21 مهر 1384, 13:51 عصر
قبل از باز کردن dbf این کد را بنویسید:
var
FHandle: Integer;
Buffer: PChar;
begin
FHandle := FileOpen('filename.dbf',fmOpenReadwrite);
FileSeek(FHandle,27,0);
FileRead(FHandle,buffer,1);
FileWrite(FHandle,buffer,1);
FileClose(FHandle);
end;
که باعث میشود ار تباط dbf با Index قطع شود و احتمالا مشکلتان حل میشود .
البته در برنامه تحت فاکس دوباره باید ایندکس را بسازید