PDA

View Full Version : مبتدی: ثبت اموردانش آموزی برای فردانتخاب شده ازدی بی گرید



amirkazem
شنبه 08 شهریور 1393, 22:26 عصر
سلام.
دربرنامه ای که بانک آن اکسس می باشدازطریق یکی ازروشهای جستجودانش آموزموردنظررا در (دی بی گرید)(DBGride)انتخاب کرده ایم وحالامی خواهیم برای همین دانش آموزاموری ازقبیل:ثبت غیبت، ثبت مواردانضباطب، ثبت کرایه سرویس، و...راداشته باشیم.لطفاً راهنمایی بفرماییدچگونه بایداین کارانجام شود.
لازم به ذکراست دربانک اکسس برای تمامی مواردذکرشده جداولی طراحی شده وازطریق کدملی دانش آموز ارتباط جداول برقرار می باشد.ضمن این که درخودِ اکسس کوئری هایی طراحی کرده ایم که دقیقاً ازطریق فرمهاوسابفرم هااین امورراثبت می کنیم.ولی ازطریق فرمهایی که دردلفی طراحی شده ندبامشکل مواجه هستم.لطفاًراهنمایی بفرمایید.
تشکر

BORHAN TEC
یک شنبه 09 شهریور 1393, 09:26 صبح
با سلام،
خیلی راحت میشه به اطلاعات رکورد جاری دسترسی داشت و با توجه به اطلاعات بدست آمده عملیات دلخواه را انجام داد.
این هم یک مثال ساده:
var FStudentId: Integer;
begin
if (tblStudent.FieldByName('Id').Value <> null) then
begin
FStudent := tblStudent.FieldByName('Id').Value;
end;
// ...
end;
موفق باشید...

amirkazem
یک شنبه 09 شهریور 1393, 22:33 عصر
ضمن تشکرازشمادوست عزیز
BORHAN TEC
به عرض برسونم باتوجه به کدی که شمازحمت آن راکشیدیدفکرکنم بایددریک فرم دیگرکه درقسمت بالای آن مشخصات دانش آموزودرقسمت پایین آن یک (DBGride) داشته باشیم که مثلاًمواردغیبت دانش آموزموردنظرراثبت کنیم وبرای سایرمواردهم به همین شکل.
امیدوارم فکربنده درست باشد.
ضمناًاگرکمی بیشترتوضیح بدیدممنون می شوم.مثلاً نحوه ی استفاده ازکدموردنظر.

BORHAN TEC
یک شنبه 09 شهریور 1393, 22:41 عصر
با سلام،
توضیحات تکمیلی برای کسانی که ممکنه بعداً به این تاپیک مراجعه کنند: در کدی که بنده قرار دادم اصلاً اجباری وجود نداره که از TDBGrid استفاده کنیم. با این کد می توانید به اطلاعات رکورد جاری از یک جدول دسترسی داشته باشید. توجه داشته باشید که حالات مختلفی وجود داره که رکورد جاری تغییر کنه، یکی از این حالت ها انتخاب یک رکورد دیگر از یک DBGrid است که به یک جدول متصل شده است. حتی با کد نویسی و با متدهای مختلف Next و ... از یک TDOTable (با فرض استفاده از ADO) هم رکورد جاری میتونه تغییر کنه. :متفکر:


فکرکنم بایددریک فرم دیگرکه درقسمت بالای آن مشخصات دانش آموزودرقسمت پایین آن یک (DBGride) داشته باشیم که مثلاًمواردغیبت دانش آموزموردنظرراثبت کنیم وبرای سایرمواردهم به همین شکل.

به نظرم خوبه، هم ساده هست و هم قابل فهم :چشمک:

amirkazem
یک شنبه 09 شهریور 1393, 22:51 عصر
استادگرامی:توجه داشته باشیدکه بنده درطراحی بانک وایجادجداول برای هریک ازموارد(غیبت،انضباطی،آموز ی، کرایه سرویس و...)هرکدام یک جدول جداگانه طراحی کرده ام.ضمناً ارتباط جداول هم برقرارمی باشدکه دربرنامه ای که باخودِاکسس طراحی شده به خوبی کارمی کنند.
پس وقتی یک دانش آموزراانتخاب می کنیم بایدمواردی ازقبیل ثبت غیبت و...فقط برای همان دانش آموزودرجدول مربوط به همان موضوع یعنی غیبت ثبت شود.
دراین سوال بنده قصدتغییررکوردانتخاب شده راندارم.

hp1361
یک شنبه 09 شهریور 1393, 23:12 عصر
سلام

در تصویری که بالا قرار داده ای درون DBGrid به یکی از رکورد ها اشاره میکنیم(یعنی یک رکورد را انتخاب میکنیم) این رکورد معادل یک رکورد در جدول ما است(یا اینکه کوئری).

شما اشاره کردید که کلید جداول شما کد ملی دانش آموز است. لذا کار اصلی شما اینه که کدملی مورد نظر رو مشخص کنید. فرض میکنم که اطلاعات نمایش داده شده در DBGrid نتیجه جستجوی یک کوئری بر اساس اطلاعات ورودی کاربر برای جستجو هستش.

حالا میتونه نتیجه یک رکورد باشه یا بیشتر. به هر حال یک رکورد باید در DBGrid به حالت انتخاب شده باشه (یعنی کاربر انتخابش کرده باشه). حالا با استفاده از کدی Borhan tec عزیز فیلد کدملی رو میخونیم و نتیجه رو به یک فرم دیگه که مثلا مسئول ثبت غیبت هستش پاس میدیم و در اون فرم اطلاعات غیبت رو وارد کرده و سپس ذخیره میکنیم.

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

اگر باز هم سوالی بود در خدمتیم

BORHAN TEC
یک شنبه 09 شهریور 1393, 23:17 عصر
به نظر میرسه که هدف شما گرفتن راهنمایی های کلی باشه. بهتره که مشکلتون رو واضح تر توضیح بدید. توی کدهای SQL مشکل دارید یا توی کد دلفی و یا طراحی؟ :متفکر:


وازطریق کدملی دانش آموز ارتباط جداول برقرار می باشد

این مورد کار زیاد خوبی نیست، چرا که ممکنه که اوپراتور کد ملی یک دانش آموز رو اشتباه وارد کرده باشه و چند ماه بعد بخواد اون رو اصلاح کنه. از اونجایی که ارتباطات جداول رو بر اساس این فیلد بنا کردین در صورتی که ارتباطات به صورت Cascade نباشه با تغییر در مشخصات دانش آموز ارتباطات جداول از بین میره. در حالت کلی پیشنهاد می کنم که به عنوان کلید اصلی جدول از نوع AutoIncrement استفاده کنید. با این کار به قابلیت های جالبی دست خواهید یافت، مثلاً 10 رکوردی که آخر از همه اضافه شده اند و ... . به عنوان یک نکته باید عرض کنم که اگر فقط از کد ملی به عنوان فیلد کلیدی استفاده کنید و اگر رکوردها با توجه به این فیلد به صورت مرتب شده در جدول ذخیره شوند(با کمک ایندکسها) دیگر نمیتوانید به رکورهایی که آخر از همه اضافه شده اند دسترسی داشته باشید.


دراین سوال بنده قصدتغییررکوردانتخاب شده راندارم.

اگر قصد انجام عملیات CRUD (افزودن، خواندن، به روز رسانی، حذف) رو دارید مثالهای مختلفی در اینترنت وجود داره که می تونید از اونها استفاده کنید و اگر جایی به مشکل برخورد کردید اینجا سوال کنید و جواب بگیرید.

amirkazem
یک شنبه 09 شهریور 1393, 23:23 عصر
بله همانطورکه می فرماییدبنده کدملی رابه عنوان کلیداصلی قرارداده ام وممکن هم هست که کاربرکدملی رااشتباه هم واردکند.ومشکلاتی که فرمودیدقطعاًپیش می آید.ضمن اینکه دقیقاًطبق فرمایش شماتعدادی رکوردکه آخرازهمه اضافه می کردم رانشون نمی داد.مگراین که فرم مربوطه رابازوبسته می کردیم یاازبرنامه خارج شده ودوباره بازکنیم.
درهرصورت این اشتباه رخ داده وچون بااین برنامه فقط تاحالاخودم کارمی کرده ام نهایت دقت راداشته ام ومشکلی پیش نیامده .

amirkazem
سه شنبه 11 شهریور 1393, 00:31 صبح
سلام

در تصویری که بالا قرار داده ای درون DBGrid به یکی از رکورد ها اشاره میکنیم(یعنی یک رکورد را انتخاب میکنیم) این رکورد معادل یک رکورد در جدول ما است(یا اینکه کوئری).

شما اشاره کردید که کلید جداول شما کد ملی دانش آموز است. لذا کار اصلی شما اینه که کدملی مورد نظر رو مشخص کنید. فرض میکنم که اطلاعات نمایش داده شده در DBGrid نتیجه جستجوی یک کوئری بر اساس اطلاعات ورودی کاربر برای جستجو هستش.

حالا میتونه نتیجه یک رکورد باشه یا بیشتر. به هر حال یک رکورد باید در DBGrid به حالت انتخاب شده باشه (یعنی کاربر انتخابش کرده باشه). حالا با استفاده از کدی Borhan tec عزیز فیلد کدملی رو میخونیم و نتیجه رو به یک فرم دیگه که مثلا مسئول ثبت غیبت هستش پاس میدیم و در اون فرم اطلاعات غیبت رو وارد کرده و سپس ذخیره میکنیم.

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

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