PDA

View Full Version : creat index key در حین اجرای برنامه



najafi_1
سه شنبه 25 فروردین 1383, 12:05 عصر
با سلام به اساتید محترم
فرض کنید یک جدول داریم ازنوع پارادکس و با استفاده از dbe کار میکنیم.
این جدول یک فیلد دارد که فیلد کلیدی است و مسلماً بر اساس آن ایندکس صورت میگیرد.
حال این ایندکس به هم ریخته و برنامه در قسمتهای دیگه که با این قسمت ارتباط دارند کار نمیده
سوال:
1 - چطور میتوانیم همانند قریما در فاکس در اینجا reindex کنیم اگه دستوری داره معرفی کنید
2- اگه اساساً بخوام ایندکس فوق الذکر رو حذف کنم و مجدداً ایندکس بسازم (از طریق کد نویسی) به چه شیوه عمل کنم؟ فیلد فوق یونیک هم هست.
3 - اطلاعاتی که از دست رفته در فایل آقا قابل برگشت هست؟
لطفا راهنمایی کنید
قبلا متشکرم

JavanSoft
سه شنبه 25 فروردین 1383, 13:34 عصر
در جداول پارادوکس استفاده از Blobفیلدها باعث خرابی آن در اثر بالارفتن اطلاعات جدول می گردد
برای Repairکردن آن از برنامه آقای یعقوبی استفاده کنید

JavanSoft
سه شنبه 25 فروردین 1383, 13:43 عصر
ساخت index از طریق کد نویسی روش 1



ALTER TABLE [dbo].[TestPdxFile] WITH NOCHECK ADD
CONSTRAINT [PK_TestPdxFile] PRIMARY KEY NONCLUSTERED
) ON [PRIMARY]
GO


ساخت ایندکس روش 2


With CrtTbl.IndexDefs Do
Add('TempDataBase.PX', 'FieldCount' ,[ixPrimary]);

CrtTbl.CreateTable;

najafi_1
چهارشنبه 26 فروردین 1383, 08:13 صبح
با سلام
جناب آقای وکیلی متشکرم
اولا آدرس برنامه آقای یعقوبی را اگر لطف کنید ممنون خواهم بود
ثانیاً در مورد این موضع راهنمای دسک تاپ نظر شما چیست آیا با راهنمایی شما مغایرت ندارد؟

CREATE INDEX enables users to create indexes on tables using the following syntax:


Paradox table users can create only secondary indexes with CREATE INDEX. Primary Paradox indexes can be created only by specifying a PRIMARY KEY constraint when creating a new table with CREATE TABLE.

Note: The index created in nonmaintained, nonunique, not case-sensitive, and in ascending order. If the table has a primary key, then a maintained index is created.


اگر بیشتر راهنمایی کنید سپاسگزار میشوم.

najafi_1
شنبه 05 اردیبهشت 1383, 13:43 عصر
جناب وکیلی منتظر نظرات جناب عالی هستم
ار پاسخ دهید ممنون میشوم.(در رابطه با متن بالا)

JavanSoft
شنبه 05 اردیبهشت 1383, 16:32 عصر
متوجه منظورتان در مورد مغایرت نشدم

najafi_1
یک شنبه 06 اردیبهشت 1383, 09:16 صبح
با سلام جناب آقای وکیلی
از ابتدا میگویم
من تعدادی table دارم که در بعضی از اونها key تعریف کرده ام و بصورت master & detail از آنها استفاده میکنم.
حال به هر دلیل در بعضی مواقع index key جداول اصلی به هم میخورد و برنامه خطا صادر میکند.
با مراجعه به راهنمای دسک تاپ عنوان میکند که شما فقط در هنگام ساخت جدول میتوانید ایندکس کی تعریف کرده و ایجاد کنید. (یعنی پس از ساخت نمیتوان ایندکس کی برای جدول ایجاد و یا آنرا بروز رسانی کرد ! به نظر من البته)
این موضوع با راهنمایی شما ایجاد تناقض برای من کرد.
لذا درخواست میکنم راهنمایی کنید.
اولاً راهی هست که اگر inkex key جدول به هم خورد آن را بتوان بروز رسانی کرد (مانند reindex در فاکس پرو)
ثانیاً آیا راهی هست که پس از ساخت جدول بتوان index key آن را مجدداً ایجاد کرد.
البته همانطور که بهتر میدانید امکان ساخت ایندکس های ثانویه پس از ساخت جدول وجود دارد.
لطفا اگر برنامه نمونه ای در این خصوص دارید و امکان در اختیار گذاشتن آن را دارید به آدرس n482000@gawab.com ارسال فرمایید.
قبلاً سپاسگذارم.
:oops:

kimia1
یک شنبه 06 اردیبهشت 1383, 10:28 صبح
ساخت ایندکس روش 2


With CrtTbl.IndexDefs Do
Add('TempDataBase.PX', 'FieldCount' ,[ixPrimary]);

CrtTbl.CreateTable;

جناب آقای وکیلی فکر کنم چون شما قصد ساخت یک کلید اصلی primary رو دارید باید کدتون را بصورت زیر اصلاح کنید


With CrtTbl.IndexDefs Do
Add( ' ', 'FieldCount' ,[ixPrimary]);

CrtTbl.CreateTable;

JavanSoft
یک شنبه 06 اردیبهشت 1383, 13:56 عصر
یعنی پس از ساخت نمیتوان ایندکس کی برای جدول ایجاد و یا آنرا بروز رسانی کرد !
این حرف اشتباه است ..من بارها و بارها اینکار را کرده ام


جناب آقای وکیلی فکر کنم چون شما قصد ساخت یک کلید اصلی primary رو دارید باید کدتون را بصورت زیر اصلاح کنید
من نام پایگاه را TempDataBaseگذاشته بودم و خودم در کد تصریح کردم که نام ایندکس همان نام پایگاه با پسوند PX باشد
اما اگر قید هم نکنید بصورت پیش فرض همین را در نظر می گیرد(مانند روش شما)

najafi_1
دوشنبه 07 اردیبهشت 1383, 11:00 صبح
جناب وکیلی
آیا امکان دارد یک نمونه کوچک به آدرس n482000@gawab.com ارسال کنید.
ممنون خواهم بود.

JavanSoft
دوشنبه 07 اردیبهشت 1383, 14:00 عصر
1) نمونه چی؟
2) اگر نمونه ای هم بتوانم خدمت شما تقدیم کنم همینجا Uploadمیکنم که همه استفاده کنند

najafi_1
سه شنبه 08 اردیبهشت 1383, 11:13 صبح
جناب وکیلی با سلام
در کدی که جنابعالی مرقوم فرموده اید از متد
CrtTbl.CreateTable;
استفاده کرده اید. همانطور که خودتان بهتر میدانید این متد جدول را مجدداً ایجاد میکند. بدیهی است که با این عمل اطلاعات موجود در فایل db از دست میرود. همه موضوع بر سر این است که در حین اجرای برنامه و با وجود اطلاعات در جدول چنانچه key آن به هم ریخت بتوان آن را با حفظ تمام داده ها ایجاد کرد.
البته بنظر خودم که برداشتی آزاد از راهنمای دلفی است ما بایستی ابتدا با متد create جدول را همراه با ایندکس های مورد نیاز ایجاد کنیم، سپس با شی bachmove‌ اطلاعات را از جدولی که key ان به هم ریخته به این جدول جدید کپی کنیم سپس جدول بهم ریخته را حذف نموده و نهایتا جدول جدید را rename کنیم.
حال اگر تعداد رکوردها بالا باشد این عملیات وقت زیادی را می گیرد.
آیا ابزاری وجود دارد که بدون روند فوق بتوان با حفظ تمام دادها key جدول را مجدداً بروز رسانی کرد.(reindex)
جناب وکیلی اگر امکان دارد
یک جدول که دارد key باشد و مقداری هم داده داشته باشد را با دستور فوق امتحان کنید.(شاید من اشتباهی عمل کرده باشم) ببینید آقا دادها در آن باقی میماند.
و اگر توانستید همان را برای راهنمایی همه upload فرمایید . باسپاس. :flower:

JavanSoft
چهارشنبه 09 اردیبهشت 1383, 12:49 عصر
چشم ...نمونه برنامه ای را پس از یافتن در هاردم Upload می کنم

moradi_am
چهارشنبه 09 اردیبهشت 1383, 16:15 عصر
آقای نجفی درست میفرمایند . CreatTable یک جدول جدید ایجاد میکند با رکورد خالی .برای این منظور باید از AlterTable‌استفاده شود که البته bde آنرا پشتیبانی نمیکند ولی در Dbisam وجود دارد .

najafi_1
شنبه 12 اردیبهشت 1383, 07:51 صبح
به قول آقای پیردوست
آ قربونش برم . قربون آدم چیز فهم.
منظورم دقیقاً‌ همین بود.
از لطف آقای کرامتی هم متشکرم (البته پس از وصول :shock: )

najafi_1
دوشنبه 14 اردیبهشت 1383, 08:09 صبح
جناب وکیلی سلام
:roll:
همچنان منتظریم.
ممنون.

najafi_1
شنبه 19 اردیبهشت 1383, 10:11 صبح
برای این موضوع آقای عربلو پاسخ خوبی در بخش ابزارها و کامپوننتها داده اند.
موضوع هم آیا ابزاری برای reindex کردن وجود دارد؟
از آقای عربلو سپاسگزارم. 8-)

شفیعی
شنبه 09 آبان 1383, 14:54 عصر
سلام
من هم دنبال برنامه ای می گردم که کار REINDEX را روی فایلهای پاراداکس انجام دهد

MiRHaDi
شنبه 09 آبان 1383, 15:15 عصر
سلام
از Create Index استفاده کن
بای

شفیعی
شنبه 09 آبان 1383, 20:45 عصر
سلام
دوست عزیز لطفا بیشتر توضیح دهید

شفیعی
جمعه 04 دی 1383, 20:08 عصر
سلام
می خواهیم بر روی بانک اطلاعاتی از نوع DBF ایندکس ایجاد نمائیم (ایندکس چند ستونی )