با سلام به همه استادان و دوستان
میگم میخام برنامه ای بنویسم که مشخصات دانشجو را دریافت کردهو آنها رو سورت میکنه
ولی مهم اینجاست که باید کلیدی ساخت تا چک کند مشخصات وارده تکراری نباشه ضمنا دیتا بیس من paradox هست و نمیخواهیم از دکمهkey استفاده کنیم
با سلام به همه استادان و دوستان
میگم میخام برنامه ای بنویسم که مشخصات دانشجو را دریافت کردهو آنها رو سورت میکنه
ولی مهم اینجاست که باید کلیدی ساخت تا چک کند مشخصات وارده تکراری نباشه ضمنا دیتا بیس من paradox هست و نمیخواهیم از دکمهkey استفاده کنیم
اگه اينجوري پيش برين، خودتون رو مي كشيد. بهتره به اعصابتون مسلط باشين. در ضمن كسي اينجا موظف به پاسخ به سوال شما نيست.
و اما در مورد سوالتون. خيلي بد و نا مفهوم توضيح دادين. شما نمي خواين از كليد در ديتابيستون استفاده كنيد؟ اگه اينطوريه، مي تونم دليلش رو بپرسم؟ چون طبق استاندارد و قوانين پايگاه داده، هر جدولي ميبايستي حداقل يه فيلد كليد داشته باشه. و جدولي كه فيلد كليد نداره، استاندارد نيست.
و اما اگه از طريق كد نويسي بخواين بفهميد كه آيا مشخصات دانشجو تكراري هست يا خير، بايد ابتدا توسط دستورات SQL «كه احتمالاً بلدين ديگه» مثلاً نام و نام خانوادگي دانشجو رو در بانك جستجو كنه، و سپس بيان و خاصيت RecCount رو از ADOQuery رو چك كنيد. اگه مقداري غير از صفر بود، يعني اين نام قبلاً در بانك وجود داشته.
موفق باشين
ممنون از اینکه جوابمو دادین 1.از کلید استفاده نباید کرد چون استادمون میخاد برنامه نویسی بلد شیم( بقول استادمون : اگه دست من بود مجبورتون میکردم با زبان ماشین برنامه بنویسید) 2. کوری یعنی تنبل بازی همچنین دستورات sql یعنی باید خودمون با استفاده از آرایه ها و رشته ها و خلاقیت خودمون این کار رو انجام بدیم 3.وگرنه که با چند حرکت ساده میشد برنامه رو نوشت
استادتون نگفته وقتی قراره از این جدول رکوردی حذف و یا ویرایش بشه پیغام خطا میگیرید!؟از کلید استفاده نباید کرد چون استادمون میخاد برنامه نویسی بلد شیم
همونطور که romixery هم گفتند در هر جدول باید کلید اصلی وجود دااشته باشه
البته از اونجا که قبلا شرح حال استادتون رو فرمودید درخواست شما زیاد جای تعجب نداره
برای راحت تر شدن کار خودتون شماره ی دانشجویی رو به عنوان فیلد یکتا در نظر بگیرید و قبل از ورود اطلاعات جدید، شماره دانشجویی رو چک کنید
منظورتون چيه؟ مگه نميگيد كه داده ها در بانك Paradox هستش. آرايه واسه چي ميخواين؟ والا من كه نمي فهمم چي مي گين. اميدوارم استادتون حداقل فهميده باشه.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگه ميخواين از آرايه استفاده كنيد، يه راه اينه، «البته ببخشيد ولي بايد بگم راه ابلهانه، ولي در اين مورد خاص چاره اي نيست» كه يه ركورد تعريف كنيد. و فيلدهاي ركورد رو همانند و همنوع فيلدهاي جدول داخل ديتابيستون طراحي كنيد. سپس آرايه اي به طول محدود، از اون ركورد بگيرين. بعد تمام بانك اطلاعاتي تون رو پيمايش كنيد، و دونه دونه ديتا رو داخل آرايه و فيلدهاي متناظر اون قرار دهيد.
متد جستجو ديگه كاري نداره. مي تونيد با جستجوي خطي ساده، چك كنيد و ببينيد كه آيا نامي كه جديداً مي خواهيد به بانك اضافه كنيد، قبلاً در آرايه هست يا نه، در غير اين صورت به جدولتون و هم آرايه، اضافش كنيد.
فكر مي كنم بتونيد با اين كار به اندازه كافي حس آدم آزاري استادتون رو ارضاء كنيد.
موفق باشين.
<br />
<br />
ببخشید ولی استادمون گفته اینا نباید شماره دانشجوئی داشته باشند و مثلا اول باید اسمها رو چک کنه اگه تکراری داشت بره فامیلی رو چک کنه اگه باز هم تکراری بود همینطور ادامه بده تا آخر . . . اگه آخر کار معلوم شد این تکراری هست ذخیره نکنه و پیام بده همش همین بود
ببین استادمون گفته رکورد ها بصورت بالونی حرکت کنند تا مرتب بشند و قبلش هم باید چک شده باشه که تکراری نداشته باشه یعنی فقط یک تیبل باید باشهفيلدهاي ركورد رو همانند و همنوع فيلدهاي جدول داخل ديتابيستون طراحي كنيد. سپس آرايه اي به طول محدود، از اون ركورد بگيرين. بعد تمام بانك اطلاعاتي تون رو پيمايش كنيد، و دونه دونه ديتا رو داخل آرايه و فيلدهاي متناظر اون قرار دهيد.
Last edited by ali135ugd; 06-01-2010 at 08:23.
واقعاً نمي تونستين اينو توي پس اول بدين تا بيخود اينهمه تاپيك رو طولاني نكنيم؟!!!کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خوب حالا بگين ببينم. مي تونيد از كلاسهاي دلفي استفاده كنيد يا خير. مي تونيد اين برنامه رو به صورت بازگشتي و با استفاده از TString حل كنيد.
ببينيد دوست عزيز، به طور كلي همه محدوديتهات و امكاناتي كه مي توني داشته باشي رو بگو تا بعد از اينكه برنامه رو نوشتيم، نگي كه "نه، اينطوري نمي خواستم، بايد ا...."
موفق باشين.
سلام. خوب نيازي نيست كه از كلاسهاي دلفي استفاده كني. برنامه رو برات نوشتم. البته توجه كن، من به جاي اينكه از ديتابيس استفاده كنم، از آرايه و ركورد استفاده كردم. تا بهتر بفهمي. برات يه كلاس نوشتم:
من فرض كردم كه توي جدول ديتابيست، سه فيلد به نامهاي name , family , age وجود داره. هيچ كدومم كليد نيست.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
شرح توابع كلاسها:
تابع find با گرفتن سه پارامتر نام، فاميل و سال، مي گرده و مي بينه آيا چنين فردي در جدول وجود داره يا نه. در صورت وجود داشتن، True و در غير اينصورت False رو بر مي گردونه. اين تابع كار خاصي انجام نميده، فقط شكل public تابع tblFind هست كه اون رو فراخوني مي كنه. در استاندارد كلاس نويسي، بايد به اين شكل تابع نوشت.
تابع tblFind، ليست رو پيمايش كرده و در صورتي كه نام دو دانشجو برابر بود، براي جستجوي بقيه فيلدها تابع recessive رو صدا ميزنه.
تابع recessive، كار اصلي رو انجام ميده. و دونه دونه فيلدها رو مي گرده و در صورتي كه همه فيلدها يكي بود، true و در غير اين صورت false رو بر مي گردونه.
متد insert، براي وارد كردن يك ركورد در جدول به كار ميره.
شرح متغير ها:
Table، جدول ماست كه از نوع ركورد هستش.
TBLSize، تعداد ركورد موجود در جدول هستش.
Field_Number، تعداد فيلد جدول هست. در اينجا ما سه فيلد داريم.
نحوه مقدار دهي كلاس:
متد Create اين كلاس، يه ورودي داره كه به حداكثر تعداد ركوردهاي جدولت رو مشخص مي كنه. مثلاً كد زير:
حداكثر تعداد ركوردهاي جدولت رو 10 تا ميگيره. (فضا گيري پويا)کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و اما شما چطور باهاش كار كني:
مي دونم كه شما ميخواي توي ديتابيس كار كني. پس به راحتي مي توني با استفاده از متدهاي TTable و يا ADOTable، مثل Record count يا Field از همين كلاس براي ديتابيست استفاده كني. خيلي خيلي سادست.
متن توابع رو ديگه خود تفسير كن. مشكلي داشتي بپرس:
موفق باشين.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
میگم دمت گرم romixery جان واقعا کمک خیلی بزرگی کردی من امتحانش میکنم اگه با مشکل مواجه شدم بازهم مزاحمتون میشم
میگم شرمنده ما اصلا کلاس کار نکردیم و نمیدونم متدهای ttable رو برا این کلاس چجوری باید استفاده کرد
میشه یه مثال کوچولو بزنی که این تعاریف بالا کجای برنامه و چجوری استفاده میشن
آخه ما بلد شدیم یه دکمه یا چیزی مثل اون تعریف بشه بعد روی اونا تعاریف و دستورات پیاده بشن ولی کلاس رو نمیدونم چجوریه
بازهم از اینکه وقت گزاشتین و منو قابل دونستین که جوابمو بدین ممنونم
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)