سلام
بعد از اینکه کارهای اولیه پروژه رو انجام دادیم باید کم کم بریم سراغ اتصال به پایگاه داده و انجام امور مربوط به اون. برای این کار قبل از هر چیزی لازمه که یک فرم Datamodule ایجاد کنیم.
خیلی از برنامه نویس ها شیائ مربوط به کار با پایگاه داده رو روی همون فرم قرار میدن که بهتره همه این اشیا تو Datamodule قرار داده بشن و به وسیله فرم های دیگه استفاده بشن. اینجوری مدیریت اونها ساده تر میشه و از اضافه شدن کلی شئ کم استفاده جلوگیری میشه. همچنین اتصال به پایگاه داده بهتر مدیریت میشه. نمونه یک Datamodule که من تو یکی از پروژه هام دارم روش کار می کنم تو تصویر زیر دیده میشه.
برای ایجاد یک فرم از نوع Datamodule باید از منوی File گزینه New... را انتخاب کنید و سپس از پنجره جدید قسمت سمت چپ عنوان Datamodule را پیدا کنید و انتخاب نمایید.همانند تصویر زیر :
بعد از این کار تمامی اشیائ کار با پایگاه داده خود را در این فرم قرار دهید و برای استفاده از این اشیا در فرم های دیگر باید در قسمت Uses هر فرم نام یونیت Datamodule خود را اضافه کنید. به این ترتیب به تمام اشیائ فرم Datamodule در فرم دیگر دسترسی خواهید داشت.
چنتا نکته برای کار با Datamodule هست که باید متذکر بشم :
- سعی کنید تعداد اشیا نه خیلی زیاد باشه و نه خیلی کم. منظورم اینه که برای کار های مشابه از یک شئ استفاده کنید و برای هر کار کوچیکی سریع یک شئ جدول یا کوری به Datamodule اضافه نکنید. مثلا من برای بعضی مواقع که نیاز دارم یک کوری از یک جدول بگیرم یک شئ با عنوان Temp_query ایجاد کردم و کارهای کوچیک رو با قرار دادن SQL اون در این کوری انجام میدم و بعد هم اونو میبندم و ممکنه تو یک فرم دیگه با یک کد SQL دیگه از اون استفاده کنم.
البته میشه همه کارها رو با یک شئ هم انجام داد که اونجوری هم کار سخت و دشوار میشه. این هنر و مهارت برنامه نویس هست که با بهینه ترین حالت ممکن اشیا رو مدیریت کنه و اونهایی که لازمه رو ایجاد کنه.زیاد بودن اشیا باعث گیج شدن و یا حتی اشتباه برنامه نویس هم تو استفاده از اشیائ مشابه خواهد شد.
- از شئ Connection برای ارتباط همه جداول و پرسوجو های خودتون استفاده کنید و سعی کنید تنظیمات اون را به صورت داینامیک و با استفاده از کاربر تکمیل کنید. به این صورت برنامه در محل دیگری غیر سیستم شما هم به راحتی کار میکنه.
- برای واکشی داده از جداول و یا استفاده از Stored Procedure ها از Query استفاده کنید. البته این نظر شخصی منه. میتونید جداول رو به صورت Table هم استفاده کنید ولی وقتی اطلاعات یک جدول را به صورت یک Query واکشی می کنید دستتون بیشتر باز است و خیلی راحت میتونید خروجی رو به همون صورتی که دوست دارید نمایش بدید.
- یک موردی که در Mysql من بهش برخوردم اینه که نمیشه Proceure یا Function هایی که در پایگاه داده نوشتین و می خوایین تو برنامه ازشون استفاده کنید رو با شئ TZStoredproc که فکر می کنم برای اینکار هست استفاده کنید. برای این کار باید با یک Query و فراخوانی دستور Call mysp از اونها استفاده کنید. باید به جای Mysp نام تابع خودتون رو بگذارید و بعد با یک پرانتز متغیر های ورودی و خروجی را در اون تعریف کنید و قبل از اجرا اونها رو مقدار دهی کنید و در نهایت با استفاده از EXEcsql این توابع را اجرا کنید و اگر خروجی هم دارد از طریق پارامتر ها اونها رو مشاهده می کنید.
- عنوان اشیا را مثل همیشه مرتبط بگذارید تا هنگام فراخوانی بتوانید اونها رو از هم تشخیص بدید و سردرگم نشید.
خب فعلا تا بعد
یا حق