دلفی و دیتابیس

saalek110

Well-Known Member
http://www.aachp.ir/post.aspx?no=94
اتصال به پایگاه داده SQL Server در دلفی - ارائه شده توسط مسعود اقالیمی

تصال پایگاه داده از نوع SQL Server در دلفی با استفاده از فناوری ADO شرکت Microsoft همانند اتصال پایگاه داده Access است، با چند تفاوت که به آنها اشاره می شود. دقت شود که ابتدا باید نرم افزار SQL Server نصب شده و در حال اجرا باشد.

دلفی را باز کرده و یک پروژه Application ایجاد می کنیم. از پانل ADO یک جزء ساخت ADOConnection و یک ADOTable روی فرم می گذاریم. از قسمت Data Access یک DataSource و از قسمت Data Control یک DBGrid روی فرم قرار می دهیم. روی ADOConnection دو بار کلیک کرده و Build را انتخاب می کنیم:

b1.jpg

در صفحه DataLink Properties گزینه Microsoft OLE DB Provider for SQL Server را انتخاب می کنیم.

b2.jpg

دکمه Next را کلیک می کنیم و در صفحه بعد سه قسمت به صورت 1، 2 و 3 وجود دارد: در گزینه 2 دو حالت وجود دارد که اگر در هنگام نصب SQL Server وارد شدن به DB را به صورت Use Windows NT Integrated Sequrity (حالت پیش فرض) انتخاب کرده باشیم، این گزینه را انتخاب می کنیم. و گرنه گزینه دوم را انتخاب کرده و Uesrname و Password را که برای وارد شدن به پایگاه داده تعریف کرده ایم وارد می کنیم.

b3.jpg

در گزینه 3 از منوی کشویی نام پایگاه داده مورد نظر را انتخاب کرده OK را کلیک می کنیم. اکنون خاصیت Login Prompt جزء ساخت ADOConnection را False کرده و خاصیت Connected آنرا True می کنیم. خاصیت Connection جزءساخت ADOTable را به ADOConnection1 تنظیم کرده و از خاصیت TableName آن نام جدول مورد نظر خود را انتخاب کرده و خاصیت Active آنرا True می کنیم. روی DataSource هم کلیک کرده و خاصیت DataSet آنرا روی ADOTable مورد نظر تنظیم می کنیم. اکنون اگر روی DBGrid کلیک کرده و خاصیت DataSource آن را به DataSource مورد نظر مقدار دهی کنیم، اطلاعات جدول مورد نظر را مشاهده خواهیم کرد.


=================================

آموزش وصل شدن به دیتابیس
بانک اطلاعاتی SQL Server
تهیه کننده : Soldier
http://www.divshare.com/download/3948144-1d7
صد کیلو.
فارسی و مصور.
 

saalek110

Well-Known Member
آموزش کامل نحوه تنظیم و اتصال پایگاه داده SQL Server 2000 با دلفی
نویسنده : بابک احدی
http://www.divshare.com/download/3948294-7b4
یک مگا زیپ شده.
یک و نیم مگا آنزیپ شده. فایل word .
فارسی مصور.

سالک : من توانستم با روش آقای احدی وصل بشوم
ولی ممکنه شما دچار مشکلاتی بشوید که در زیر توضیح می دهم.


اول اینکه نمی دونم آقای احدی گفته بود که صفت connection ابزار ADOTable1 را باید برابر ADOConnection1 قرار دهیم یا نه. که من چنین کردم.
دوم اینکه صفت تیبل ADOTable1 هم باید نام تیبلی باشد که قبلا در sql server ایجاد شده باشد.
سوم : وقتی صفت Active ابزار ADOTable1 را true می کنیم نباید خطا بده. یعنی بعد تنظیم دو صفت بالا باید این صفت true بشه.

چهارم اینکه در قسمت اول آموزشهای ایشان در یک پنجره دو اسم babak وارد شده که بهتره به توضیحات تاپیک :
دیتابیس با سی شارپ
مراجعه کنید تا بدانید babak دومی چی باید باشد.
عکس زیر از اون تاپیکه:

c5.gif

گویا وقتی می خواهید به sql server دیفالت دسترسی پیدا کنید گذاشتن بک اسلش و نام نمونه هم لازم نیست.
به توضیحاتی از کتاب:
inside sql server 2000
by Kalen Delaney
توجه کنید:
When you install multiple SQL Server instances on a single machine, only one instance is the "default" instance. This is the SQL Server that is accessed in the same way that SQL Servers in previous versions were accessed—by supplying the machine name as the name of the SQL Server. For example, to use the Query Analyzer to access the SQL Server on my machine called KALESSIN, I just type KALESSIN in the SQL Server text box in the Connect To SQL Server dialog box. Any other instances on the same machine will have an additional name, which must be specified along with the machine name. I can install a second SQL Server instance with its own name—for example, SQL2000. Then I must enter KALESSIN\SQL2000 in the initial text box to connect using Query Analyzer.

 

saalek110

Well-Known Member
منبع:
http://torent.wordpress.com/programming/delphi/sql-delphi/

وصل کردن پایگاه داده ی SQL به برنامه های دلفی

1. ابتدا به Enterprise manager در SQL رفته و به صورت زیر جدول مورد نظر را در پایگاه داده ی مورد نظر ایجاد می کنیم :

a1.jpg

2. دلفی را باز کرده و به سربرگ ADO در نوار اجزای دلفی رفته و جزء ADO Query را به روی فرم انتقال دهید و همچنین به سربرگ Data Access رفته و جزء Data Source را به روی فرم انتقال دهید همچنین نیز می توانید به سربرگ Data Control رفته و یک DBGrid برای نشان دادن اطلاعات به روی فرم انتقال دهید :

a2.jpg

3. حال می ماند که اجزا را به هم وصل کنید به صورت زیر: الف: برای مقدار دهی صفت Connection String از جزء ADOQuery در قسمت Use Connection String گزینه ی Build را بفشارید و از پنجره ی باز شده و در لیست نمایش داده شده گزینه ی مربوط به SQL Server را انتخاب کرده و بر روی Next کلیک می کنیم.

a3.jpg

در تب جدید زینه ها را بصورت زیر در می آوریم البته بجای نام پایگاه داده که در اینجا BitTorrent است شما باید نام پایگاه داده ی خوتان را انتخاب کنید:

a4.jpg

سپس پنجره ها را ok کنید . 4. به قسمت صفات یا همان Object Inspector از شی ADOQuery رفته و صفت SQL آن را باز کرده و مطابق میل خود دستورات لازم را در آن بنویسید وآن را نیز ok کنید برای عنوان مثال در اینجا می نویسیم Select * from btt . سپس صفت Active را به true تغییر دهید و به سراغ DataSource بروید و صفت DataSet را به ADOQuery ای که روی فرم ذاشته بودیم تغییر می دهیم .و سپس به صفت DataSource از شی DBGrid رفته و آن را به DataSource مورد نظر تغییر می دهیم .

5. حال میتوانید حاصل کارتان را در زیر ببینید و یا اینکه برنامه ی خود را اجرا کرده و آنگاه حاصل کارتان را ببینید:


a5.jpg

سالک : من از روش بالا رفتم و موفقیت آمیز بود.
 

saalek110

Well-Known Member
http://barnamenevisanemena.blogfa.com/8511.aspx

با عرض سلام و خسته نباشید.


دفعه قبل الگوریتمی برای سوئیچ کردن بین دو حالت false , true بعضی از زیرشاخه های کامپوننت های دلفی براتون نوشتم. این دفعه می خواهم چند تا از تجربیات خودم را راجع به برنامه نویسی بانک اطلاعاتی ارائه بدهم.

۱. برای بانکهای معمولی که قرار است کاربران برای مدت طولانی از آن استفاده کنند سعی کنید حتما از موتور بانک اطلاعاتی Ado (با استفاده از اکسس و اکسل و ... ) استفاده کنید. به دلیل این که توابع بیشتری برای کار با داده ها دارد. ضمنا سرعت دستیابی اطلاعات هم بیشتر است.

۲. در زمان طراحی هیچ گاه خاصیت Active شئ مرتبط با بانک مثل (AdoTable, Table, ...) را True نکنید. حتما در زمان اجرا و هنگام کد نویسی در صورتی که لازم بود بانک را باز و فعال کنید و هنگامی که دیگر نیازی به فعال بودن بانک ندارید حتما آن را ببندید. مثلا در رویداد OnClick دکمه ای که کار باز کردن بانک را انجام می دهد بنویسید:

کد:
If AdoTable1.Active<>true then

AdoTable1. open;
و در هنگامی که کارتان با بانک تمام شد بنویسید
کد:
If adotable1.active=True then

adotable1.close;
۳. برای ایجاد ارتباط بین دو جدول بانک اطلاعاتی حتما ابتدا با دستورات فوق باز بودن و فعال بودن بانکها را تست کنید. سپس با متد Edit هر دو بانک را در وضعیت DsEdit قرار دهید. و در نهایت با استفاده از متد Insert بانکی که قرار است اطلاعات به آن منتقل شود را آماده کنید. و سپس کافی است که فیلدهای قابل نسبت دادن دو بانک را به هم انتساب دهید. نمونه کد زیر را ببینید.
کد:
If Adotable1.active<>True then

adotable1.open;

If Adotable2.active<>true then

Adotable2.open;

Adotable1.edit;{ Ekhtiari ast }

with Adotable2 do 

begin

  fieldbyname('name'):=adotable1.fieldbyname('fname');

  fieldbyname('tel'):=adotable1.fieldbyname('Mobile');

  try 

     post;

    except

    showmessage('Eror in save ');

end;

end;
نوشته شده توسط عباس فتحی
 

saalek110

Well-Known Member
http://asad707.persianblog.ir/

شاید همیشه با این موضوع روبرو بوده اید که در یک برنامه بانک اطلاعاتی که از dbgrid استفاده می کند تغیر اندازه و موقعیت و... dbgrid که بوسیله کاریر اعمال می شود بعد از اجرای مجدد برنامه یا باز کردن مجدد فرم دوباره تغیر می کند که این این امر باعث ناراحتی کاربران می شود برای جلوگیری از اینکار می توان از دستورات زیر استفاده کرده و مشخصات ستونهای آن را در داخل یک فایل ذخیره و در هنگام اجرای مجدد برنامه یا نمایش مجدد فرم دوباره آن مشخصات را از طریق آن فایل بازنشانی کرد.

برای ذخیره کردن
کد:
DBGrid1.Columns.SaveToFile('filename.txt') ;
برای بازنشانی مجدد
کد:
DBGrid1.Columns.LoadFromFile('filename.txt') ;

سالک: من در رویدادهای آنکلوز و آنلود امتحان کردم. ولی یکبار باید در رویداد آنلود نباشه تا برنامه بتونه اجرا بشه. چون باید یک بار برنامه اجرا بشه تا فایل بوجود بیاد تا بار بعد بتونه موقع لود از فایل بخونه.
در ضمن من عرض ستون ها را تغییر دادم که به درستی در فایل ذخیره شده بود.
 

saalek110

Well-Known Member
منبع:
http://torent.wordpress.com/programming/delphi/sql-delphi-2/

کد نویسی SQL در دلفی


سلام

همونطور که می دونید اتصال SQL به دلفی کارهایی داره و نیز کدنویسی آن هم کارهای مخصوص به خودش ، پس ما در اینجا مثالی را طراحی کرده ایم که با دنبال کردن آن انشاالله خواهید توانست به خوبی کد نویسی کنید ، پس مرحله به مرحله پیش می رویم:



1. این مرحله اتصال برنامه ی دلفی به SQL است که شما باید طبق نوشته ی قبل این کار را انجام دهید - در ضمن در این مثال از جدول و صفات نوشته ی ( اتصال SQL به دلفی) استفاده می شود.



2. button هایی را مطابق شکل زیر برای کد نویسی روی فرم قرار می دهیم - متن ها برای اضافه نمودن و ویرایش کردن - add برای اضافه کردن - Delete برای حذف کردن و edit هم نیز برای ویرایش.

c4.jpg

3. برای event کلید add داریم:
کد:
ADOQuery1.SQL.Add(’insert into btt(id,name)values(’+edit1.Text +’,'+#39+edit2.Text +#39+’)');

ADOQuery1.ExecSQL ;

 

 

ADOQuery1.SQL.Clear ;

ADOQuery1.SQL.Add(’select * from btt’);

ADOQuery1.open ;
در کل کد event به قول خودمون کلیک شدن به دو قسمت تقسیم می شود ، یکی انجام عمل روی جدول و دیگری برگرداندن اوضاع به حالت اول زیرا در صورت ماندن کد عملیات در صفت SQL ممکن است در بقیه ی جاها به مشکل بر بخوریم. فکر کنم . حتما می پرسید که چرا برای به اجرا در آوردن دستور SQL از دو دستور متفاوت استفاده کردم ، این کار برای این است که برای دستورات عملیاتی مانند: درج ، ویرایش و حذف و بعضی دیگر باید از دستور ADOQuery1.ExecSQL ; استفاده نمود و برای نشان دادن یک دیدگاه از پایگاه داده نیز از دستور ADOQuery1.open ; باید استفاده کرد. دلیل استفاده از#39 این است که اگر صفتی از جدول ما از نوع کاراکتر یا متن باشد باید درون کاما قرار گیرد و همانطور که می بینید در دلفی کاما وظیفه ی دیگری هم بر عهده دارد و آن هم نیز جدا کننده ی رشته می باشد به همین دلیل ما باید کاری می کردیم که در نهایت و در درون فیلد SQL در کنار رشته دو کاما قرار گرفته باشد ، البته عدد 39 نیز کد اسکی کاما (’) می باشد و به جای عبارت #39 که وظیفه ی تولید کاراکتر کاما را بر عهده دارد می توان از chr(39) نیز استفاده کرد ، و همانطور که در کد بالا می بینید فیلد id که عدد می باشد نیازی به کاما ندارد ولی فیلد name که رشته می باشد برایش کاما لازم است.

4. برای کلید edit داریم :
کد:
ADOQuery1.SQL.Add(’update btt set id=’+edit1.Text +’,name=’+#39+edit2.Text +#39);

ADOQuery1.ExecSQL ;

 

 

ADOQuery1.SQL.Clear ;

ADOQuery1.SQL.Add(’select * from btt’);

ADOQuery1.open ;
این کد هم تقریبا شکل کد کلید add می باشد که فقط در عبارت ویرایش آن تفاوت دارد و همچنین قوانینی را که در بالا برای add ذکر کردیم برای این دکمه و همچنین برای delete صحت دارد.

5. واما کد کلید delete نیز به این شکل می باشد :
کد:
ADOQuery1.SQL.Add(’delete from btt where id=’+inttostr ( ADOQuery1.Fields[ 0].asinteger ));

ADOQuery1.ExecSQL ;

 

 

ADOQuery1.SQL.Clear ;

ADOQuery1.SQL.Add(’select * from btt’);

ADOQuery1.open ;
فقط مواظب باشید که اگه از دستور where استفاده نکنید همه اطلاعات جدول شما حذف خواهد شد - من برام یکی دو دفعه این اتفاق افتاد .



6. خوب در آخر گفتین که برای Access از کدوم گزینه استفاده کنیم؟ عرضم به حضورتون که چند تا بالاتر از گزینه ی مربوط به sql server گزینه ای با نام Microsoft jet 4.0 ole db provider است که برای استفاده از Access استفاده می شود.



ببخشید بچه ها سایت فایل زیپ آپلود نمی کرد پسوندشو doc کردم تا آپلود کنه فقط بعد از دانلود پسوندشو به zip تغییر بدین . یادتون نره!!



دانلود برنامه

سالک : برای دانلود برنامه به سایت اصلی بروید.
و برنامه بالا را من نساختم فعلا.فقط نقل کردم.
 

saalek110

Well-Known Member
http://torent.wordpress.com/programming/delphi/sql-delphi/

اتصال SQL به دلفی

وصل کردن پایگاه داده ی SQL به برنامه های دلفی

1. ابتدا به Enterprise manager در SQL رفته و به صورت زیر جدول مورد نظر را در پایگاه داده ی مورد نظر ایجاد می کنیم :

d1.jpg

2. دلفی را باز کرده و به سربرگ ADO در نوار اجزای دلفی رفته و جزء ADO Query را به روی فرم انتقال دهید و همچنین به سربرگ Data Access رفته و جزء Data Source را به روی فرم انتقال دهید همچنین نیز می توانید به سربرگ Data Control رفته و یک DBGrid برای نشان دادن اطلاعات به روی فرم انتقال دهید :

d2.jpg

3. حال می ماند که اجزا را به هم وصل کنید به صورت زیر: الف: برای مقدار دهی صفت Connection String از جزء ADOQuery در قسمت Use Connection String گزینه ی Build را بفشارید و از پنجره ی باز شده و در لیست نمایش داده شده گزینه ی مربوط به SQL Server را انتخاب کرده و بر روی Next کلیک می کنیم.

d3.jpg

در تب جدید زینه ها را بصورت زیر در می آوریم البته بجای نام پایگاه داده که در اینجا BitTorrent است شما باید نام پایگاه داده ی خوتان را انتخاب کنید:

d4.jpg

سپس پنجره ها را ok کنید . 4. به قسمت صفات یا همان Object Inspector از شی ADOQuery رفته و صفت SQL آن را باز کرده و مطابق میل خود دستورات لازم را در آن بنویسید وآن را نیز ok کنید برای عنوان مثال در اینجا می نویسیم Select * from btt . سپس صفت Active را به true تغییر دهید و به سراغ DataSource بروید و صفت DataSet را به ADOQuery ای که روی فرم ذاشته بودیم تغییر می دهیم .و سپس به صفت DataSource از شی DBGrid رفته و آن را به DataSource مورد نظر تغییر می دهیم .

5. حال میتوانید حاصل کارتان را در زیر ببینید و یا اینکه برنامه ی خود را اجرا کرده و آنگاه حاصل کارتان را ببینید:

d5.jpg

 

saalek110

Well-Known Member
http://www.smaj.blogfa.com/post-63.aspx

دلفی اس کیوال سرور - Delphi Sql server

جهت برقراری ارتباط دلفی با sql server حتما می دونید راه حل های متفاوتی در دلفی وجود دارد . و هر کدام بستگی به کارا ما دارد. چند نوع اس کیو ال سرور در دلفی قابلیت ارتباط دارند. از انواع آنها می توان microsoft sql server - interbase - mysql را نام برد. رایج ترین نحوه اتصال به sql server از طریق ADo می باشد . البته راه دیگر برای اتصال DBEXPRESS می باشد.خود در اینجا اشاره ای به ADO داریم و کامپوننت های آن را معرفی می کنیم :

d6.jpg

از چپ به راست :

adoconnection : برای اتصال به اس کیو ال سرور

adocommand : برای اجرای یک دستور اس کیو ال بروی سرور

adodataset : برای دسترسی به جداول - ویوها - روال ها و یا اجرای یک پرس و جو کاملترین ابزار ado است که هر دو کار adotable , adoquery را انجام می دهد.

adotable : برای دسترسی به یک جدول

adoquery : برای اجرای یک پرس و جو

adostoredproc : برای فراخوانی یک روال بروی سرور بکار میرود.

RDSconnection : برای اتصال به یک لایه دیتابیس دیگر بکار میرود.
 

saalek110

Well-Known Member
http://forum.niksalehi.com/showthread.php?t=25360

پايگاه داده ها در دلفي

ارتباطات در پايگاه داده ها
1 . ارتباط يك به يك : بدين مفهوم است كه يك جدول داراي ركورد متناظر در جدول ديگر است .
مثال ) شخص و مشخصات بيمه :
به ازاي هر شخص تنها يك مشخصه بيمه وجود دارد و بر عكس . در جدول , زماني مي تواند اين ارتباط را شامل شود كه فيلد هاي كليد اصلي در دو جدول متناظر و هم تعداد باشند و يا هر Index اي كه ارتباط از طريق آن صورت مي گيرد .
نكته :در هر DBMS ارتباط بين دو فيلد در جدول , زماني قابل شكل گيري است كه نوع دو فيلد يكسان باشد .
2 . ارتباط يك به چند : اين ارتباط بين دو جدول بدين مفهوم است كه به ازاي هر ركورد در جدول اصلي , هر ركورد در جدول Detail وجود خواهد داشت . اين ارتباط ما بين دو جدول زماني قابل ايجاد است كه تعداد فيلد كليد اصلي در جدول Detail (Lesson ) بيشتر از فيلد هاي كليد اصلي Master ( Student ) باشد .
مثال ) به ازاي هر دانشجو در جدول Student , n درس در جدول Lesson وجود دارد .

نكته :به ازاي انتخاب هر ركورد در جدول Master , ركورد هاي مربوط در جدول Detail نمايش داده مي شود كه اين سرعت عمل در تعداد ركورد هاي بالا محسوس تر است . اگر بخواهيم اين عمل را بدون ارتباط توسط خودمان انجام دهيم بسيار كند و طاقت فرسا است .

نكته : با وجود ارتباط , DBMS از قبول داده هاي غير مجاز جدول Detail جلوگيري مي كند . براي مثال در صورتي كه بخواهيم درسي را كه براي دانشجويي كه وجود ندارد انتخاب كنيم پيغامي خطا مبني بر ورود داده غير مجاز به ما مي دهد .

3 . ارتباط n به n : ارتباط بين دو جدول زماني پياده سازي مي شود كه به ازاي هر ركورد در يك جدول , n ركورد در جدول ديگر و به ازاي هر ركورد در جدول دوم , n ركورد در جدول اول وجود داشته باشد . مانند ارتباط بين دو جدول Student و Teacher .
براي اينكه بتوانيم بين دو جدول ارتباط n به m ايجاد كنيم مي بايست از جدول سومي به منظور ايجاد ارتباط استفاده مي كنيم كه جدول سوم حاوي حداقل فيلد هاي كليد اصلي دو جدول ديگر است .


clip_image092.gif





كليد اصلي در جدول :
كليد اصلي در يك جدول فيلد يا فيلد هايي است كه داراي دو شرط زير هستند :
1)منحصر به فرد هستند .
2) تهي (Null ) نباشد .
كليد خارجي در جدول :
كليد خارجي در يك جدول عبارت است از فيلد يا فيلد هايي كه در جدول ديگر به عنوان كليد اصلي وجود داشته باشد . براي مثال در دو جدول student و Lesson , Std-id در جدول ديگر (Lesson ) به عنوان كليد خارجي محسوب مي شود .

clip_image093.gif



نحوه عمليات پايگاه داده ها در نرم افزار دلفي :
براي ارتباط با هر DBMS در دلفي مي توانيم از صفحات كنترل ADO , Data Access , Data Control استفاده نماييم .در هر برنامه پايگاه داده ها در دلفي به صفحه كنترل Data Control نياز داريم اما مي توانيم از بين صفحات Data Access و ADO يكي را انتخاب كنيم .

ملاك انتخاب چيست ؟
1 . قابليت با هر DBMS موجود .
2 . سرعت عمل بالاتر .
3 . ميانچي كمتر (Interface ) .
4 . عدم نياز به ابزار هاي DBMS .



صفحه كنترل ADO
clip_image095.jpg


1 . شي ADO Connection

clip_image097.jpg

توسط اين شي مي توانيم به هرگونه DBMS متصل شويم و هيچ گونه Interface ( مانند Base ConnectedOpen Data ) نياز نداريد .

نحوه ارتباط با DBMS :
1 . كليك كردن بر روي Connection String و انتخاب گزينه Use Connection String .
2 . انتخاب گزينه Build .
3 . در صورتي كه بخواهيم از DBMS , Access استفاده كنيم , گزينه Microsoftjet 400OLE DB Provider را انتخاب مي كنيم .
4 . كليد Next و فايل DB مورد نظر را انتخاب كرده و OK مي كنيم .
5 . مشخصه Connected در ADO Connection را TRUE مي كنيم .( در صورت برقراري درست ارتباط ما قادر به اين كار خواهيم بود )
نكته: سعي شود هميشه فايل DB در مسير فايل اجرايي انتخاب شود (همان جايي كه برنامه وجود دارد .


2 . شي ADO Table
clip_image099.jpg

توسط شي ADO Table مي توانيم به جدول موجود در DB ارتباط برقرار نماييم .

نحوه ارتباط با جدول :
1 . مشخصه Connection مربوط به ADO Table را به ADO Connection مربوطه كه به DB مورد نظر Link شده است , متصل كنيد .
2 . مشخصه TableName را به نام جدول مورد نظر تنظيم کنيد .
2 . در صورتي كه مراحل قبل درست انجام شده باشند مي بايست بتوانيم Active مربوط به ADO Table را True كنيد .


3 . شي ADO Query
clip_image101.jpg

توسط اين شي مي توانيم بصورت ايستا يا پويا عمليات هاي مختلف مربوط به يك پايگاه را انجام دهيم كه همان دستورات SQL مي باشند. در اين شي كافيست مشخصه هاي Connection ( همانند ADOTable ) و SQL ( دستورات SQL ) و Active ( براي باقي ماندن ارتباط و عمل انجام شده در SQL مي بايست اين مشخصه True شود .)
مثال)اطلاعات دانشجوياني را نشان دهيد كه حرف اول نام خانوادگي آنها a يا g باشد .

select * from student where stdfamily like 'a%’ or stdfamily like 'g%'

مثال)ركوردهايي از جدول Student را نشان دهيد كه نام خانوادگي آنها احمدي است .

select * from student where stdfamily = 'ahmadi ‘
مثال) ركوردهايي از جدول Student را نشان دهيد كه سن دانشجو كمتر از 25 سال است . select * from student where age<25

مثال)ركوردهايي از جدول Student را نشان دهيد كه كه سن دانشجو بين 20 و 25 است .
select * from student where age >20 and age<25
select * from student where age between 20,25







صفحه كنترل Data Access
clip_image103.jpg

در اين صفحه به منظور برقرار کردن ارتباط بين پايگاه داده با اشيا ، از شي DataSource استفاده مي كنيم .

شي Data Source

clip_image105.jpg

در اين قسمت ما بايد مشخصه Data Set آن را معادل ADO Tabel ( يا ADO Query ) قرار دهيم .

صفحه كنترل Data Control
clip_image107.jpg

از طريق اين صفحه مي توانيم كنترلي بر روي جدول مورد نظرمان انجام دهيم .
در مجموع نحوه تنظيم کردن ارتباط اين اشيا با جدول مورد نظر توسط دو مرحله صورت مي پذيرد :
الف . تنظيم مشخصهDataSource شی به DataSource جدول .
ب . تنظيم مشخصه DataField شی به Field مورد نظر در جدول .

1 . شي DB Grid
clip_image109.jpg

توسط اين شي مي توانيم اطلاعات موجود در پايگاه داده مربوط رابه صورت يك جدول مشاهده ،Insert ، Edit نماييم .





2 . شي DB Navigator
clip_image111.jpg

توسط اين شي مي توانيم عمل خاصي بر روي داده هاي موجود در جدول انجام دهيم .
اين عمليات عبارتند از :

1 . Refresh record : به روز رساني رکورد.
2 .Cancel record : ناديده گرفتن تغييرات .
3 .Post record : ذخيره رکورد.
4 .Edit record :ويرايش رکورد.
5 . Delete record : پاك كردن رکورد.
6 .Insert record : درج رکورد.
7 .Last record : آخرين رکورد.
8 .Next record : رکورد بعد .
9 . Previos record : رکورد قبل .
10. First record : اولين رکورد.


3 . DBText و DBMemo وDBImage

اين اشيا همانند همتاهای خود در صفحه Standard هستند . ، با اين تفاوت که با تنظيماتي که اشاره شد ، مي توان مستقيما به Field های جدول دسترسي داشت . به اين ترتيب که مي توان مقدار فيلدها را در آنها Load نمود و يا مقداری را به جدول منتقل نمود .


دسترسی به مقدار فيلدها توسط FieldByName
مي توان مقدار يک فيلد را با استفاده از اين متود بدست آورد . اين متود هنگامي مفيد است که نام فيلد مورد دستيابی را بدانيم ، اما در زمان طراحي به جدول دسترسي نداشته باشيم . برای استفاده ، بايد DataSource و نام فيلد مورد دستيابی را بداننيد و نام فيلد را به عنوان آرگومان به اين متود بفرستيد . برای دستيابي يا تغيير مقدار فيلد ، نتيجه را با استفاده از توابع تبديل نوع ، به نوع داده مورد نياز تبديل نماييد .
Tabel1 . FieldByNAme('StdId').AsString:=edit1.text ;

نحوه جستجو براي يك يك ركورد در جدول
ما مي توانيم بر اساس يك يا چند فيلد , عمل جستجو را در ركوردهاي يك جدول انجام دهيم . براي اين منظور مي توانيم از دستور Locate با شكل كلي زير استفاده كنيم .
Adotablename.locate('field name ',field value ,[option])
مفهوم Field value
بيانگر مقدار فيلدي است كه جستجو بر اساس فيلد مورد نظر , بر اساس آن مقدار انجام مي شود .
پارامتر Option
بيانگر نوع جستجو بر روي فيلد مورد نظر است كه داراي دو حالت زير مي باشد :

clip_image112.gif
clip_image113.gif
Option Locase Insensitive
Lopartial Key
clip_image114.gif


Lopartial key بيانگر نام فيلدي است كه مي خواهيم جستجو در مبناي آن انجام شود .
Locase Insensitive زماني استفاده مي شود كه بخواهيم تمامي مقدار را براي فيلد مورد نظر وارد كنيم . براي مثال براي فيلد Stdname نامي مانند Ali مي بايست كامل وارد شود .
از عبارت Alopasia Key زماني استفاده مي كنيم كه بخواهيم با وارد نمودن يك قسمت از مقدار مورد نظر نيز اين عمل انجام شود .
مثال ) با استفاده از يك Button بعنوان Search و يك Edit box به نام E1 , ركوردي از جدول Student را نشان دهد كه شماره دانشجويي مربوط به دانشجو برابر با مقداري باشد كه در E1 وجود دارد .

ADOTable1.locate ('stdid ', E1.text ,[locaseinsensitive] )

خروجي اين دستور در صورت پيدا نمودن عنصر مقدار True و در غير اين صورت False مي باشد . ما مي توانيم طبق اين روال , در صورت پيدا نشدن ركورد مورد نظر , پيغام مناسبي را به كاربر بدهيم .
توسط دستور زير مي توانيم به مقدار يك فيلد اطلاعاتي از ركورد هاي جاري , از جدول مشخص دسترسي داشته باشيم .
ADOTable.fieldbyname( ‘ fieldname ' ).as string
as floatas integer
دستورات جستجوي گفته شده در بالا كارا نيست . بهترين روش براي جستجو و يا هر گونه عمليات پايگاه داده اي , استفاده از دستورات SQL است .براي استفاده از اين دستورات مي بايست به جاي ADO Table از شي ADO Query استفاده كنيم .

در خواست هاي پويا :
تا بحال در خواستهاي استفاده شده در دلفي از نوع درخواستهاي ايستا بوده است.ما مي توانيم در خواستها را در دلفي به گونه اي پياده سازي كنيم كه حالت پويا را بخود بگيرند.

مثال)برنامه اي بنويسيد كه در جدول طراحي بتوانيم به دنبال به دنبال ركوردهايي بگرديم كه سن آنها برابر با مقداري باشد كه در Edit1 كاربر وارد مي كند .
بر روي Search , click كرده و كد زير را تايپ مي كنيم :
ADOQuery1.active := false;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.add( ' select * from student where age = '''+ Edit1.text + ''' ' )ADOQuery1.active := true ;

نحوه ارتباط 1 به n در دلفي
براي اين منظور مي بايست نخست ارتباط بين دو پايگاه داده و دو جدول را با استفاده از ابزار زير پياده سازي كنيم :
يك عدد ADO Connection ، دو عدد ADO Table ، دو عدد Data Source .

مراحل ايجاد رابطه
مشخصه Master Source جدولي را كه به عنوان جدول Detail شناخته مي شود (Lesson ) برابر با Data Source مربوط به جدول Master (Student ) قرار دهيم .
توسط مشخصه Master field ( مربوط به جدول Detail ) مي توانيم فيلد كليد خارجي را از جدول انتخاب و سپس كليد Add را فشار مي دهيم و در نهايت كليد Ok را مي زنيم .
با اين عمليات ارتباط 1 به n در دلفي پياده سازي مي شود .

در خواست هاي اتصالي (Join Query )
همانطور كه مي دانيد , مي توانيم بجاي خواستن يك درخواست از يك جدول , اطلاعات را از چند جدول در خواست كنيم . در اين حالت از مفهوم Join استفاده مي شود .

مثال ) مشخصات دانشجويان و دروس مربوط به آنها را نشان دهيد كه شماره دانشجويي آنها برابر با مقداري باشد كه در E1 وارد شده است .
If E1.text <> ' ' then
Begin
Q1.active := false ;
Q1.SQL.clear;
Q1.SQL.add ('select student.stdid , student.stdname ,
student.stdfamily , lesson.lessonid ,
Lesson.score from student , lesson where
student.stdid = lesson.stdid and
Student.stdid = ‘’’ + E1.text + ‘’’’ ) ; End

مثال) مي خواهيم به منظور تست يك سري در خواست ها و رفع اشكال آنها , بياييم بصورتيكه Query به زبان SQL را در يك Memo به نام M1 وارد نموده و سپس با زدن كليك Run Query , Query مورد نظر اجرا شده و خروجي آن مشاهده شود .
Q1.active : = false ;
Q1.SQL.clear ;
Q1.SQL.add ( M1.lines.text ) ;
Q1.active := true ;
مثال) ركوردهايي از جدول Student را كه سن آنها بين دو مقداري كه در E1 و E2 به سيستم داده مي شود .
Q1.active := false;
Q1.SQL.clear ;
Q1.SQL.add ( ' select * from student where age between ''' + E1.text + ''' and ''' + E2.text + '''' ) ;
Q1.active := true ;

روند كلي براي استفاده از اشيا Data Base در دلفي
ما مي توانيم در هر فرم به ازاي جداول و در خواست هاي مورد نياز در همان فرم اشيا را قرار دهيم . اما عيب اساسي در اين روش افزونگي بار جداول در خواستي است و نيز غير متمركز بودن داده ها بين جداول است .
بهترين روش براي نوشتن يك پروژه برنامه نويسي در دلفي برنامه مربوط به پايگاه داده استفاده از يك فرم ثابت به نام Data Module براي تمامي اشيا مربوط به پايگاه داده هاست يعني شي ADO Connection و ADO Table و ADO Query و Data Source .
پس از ساخت اين فرم , تمامي ارتباطات جداول در فرم هاي مختلف مي بايست به اشيا موجود در اين فرم ارجاع داده شود .براي مثال : در صورتيكه بخواهيم به يك شي اي به نام Table 1 در اين فرم مشترك ( Main Data ) دسترسي داشته باشيم از دستور MainData.Table1 استفاده مي كنيم .

نكته : براي ارتباط بين فرم ها در دلفي مي بايست نام Unit فرم مورد نظر در فرم جاري Uses شود . براي مثال : اگر نام Unit مربوطه به فرم MainData , MainDataU باشد , مي بايست اين نام را در فرمي كه مي خواهيم توسط آن به فرم MainData دسترسي داشته باشيم Uses كنيم .

مراحل ساخت و استفاده فرم مشترك Data Module
الف . منوي File - گزينه New .
ب . انتخاب Data Module .
در اين مرحله فرم Data Module با نام پيش فرض خود دلفي نشان داده مي شود .ما مي توانيم نام فرم نشان داده شده را براي فهم بهتر به نام MainData تبديل كنيم و نيز در هنگام ذخيره سازي آن , آنرا با نام MainDataU ذخيره كنيم .
بعد از مراحل فوق و ساخت فرم مورد نظر , مي توانيم اشيا مورد نياز براي پايگاه را در اين شي قرار دهيم .

انتقال محتويات يك جدول به يك جدول ديگر
فرض كنيد دو جدول به نام هاي T1 و T2 با فيلد هاي يكسان موجود است . به فرض فيلد هاي جدول Student كه عبارتند از Stdfamily , Stdname , Stdid مي خواهيم اطلاعات موجود در T1 را به T2 منتقل كنيم . برنامه زير را براي اين منظور مي توانيم استفاده كنيم :
Q1.Active := false ;
Q1.SQL.Cleae;
Q1.SQL.add (delete from T2);Q1.active := true ;
( Q1.execsql : = true ; )
Q1.first;
While not T1.eof do
Begin
T2.insert ;
T2.fieldbyname ( ' Stdid ' ).asstring : = T1.fieldbyname ( ' Stdid ' ).asstring ;
T2.fieldbyname ( ' Stdname ' ).asstring := T1.fieldbyname ( ' Stdname' ).asstring ;
T2.fieldbyname ( ' Stdfamily ' ).asstring := T1.fieldbyname ( ' Stdfamily ' ).asstring ;
T2.post ;
T1.next ;
End ;

نكته : براي فعال كردن SQL در Update و Insert و Delete به جاي Active := True از Execsql استفاده مي شود .
نكته : هر گاه كه اطلاعات يك جدول عوض شود براي آن كه اطلاعات واقعي آن را مشاهده كنيم مي بايست جدول را يك بار از حالت فعال خارج , سپس آن را مجددا فعال كنيم :
T2.active := false ;
T2.active := true ;

انتقال محتويات يك جدول به يك فايل دلخواه
مي خواهيم اطلاعات جدول Student را به فايل Student.txt به درايو C منتقل كنيم .براي اين منظور به صورت زير عمل مي كنيم :
Var f : textfile ;
Begin
Assignfile ( f , 'c :\ Student.txt ' )Rewrite (f);While not T1.eof doBegin
Writeln ( f , T1. filedbyname('Stdid').asstring +
+‘‘+T1.filedbyname ( 'Stdname ' ).
Asstring +t1.fieldbyname('stdfamily')
.asstring '');
t1.next;
end;
closefile (f);


انتقال محتويات يك فايل به يك جدول دلخواه
مي خواهيم اطلاعات يك فايل را كه با يك Format مشخص مي باشد وارد يك جدول نمونه نماييم . تكه برنامه زير براي اين عمل مناسب است :
Var f : textfile ;
s:string ;
Begin
Assignfile ( f , 'c : Student.txt ' ) ;
Rewrite (f);
While not eof (f ) do
Begin
Readme ( f , s ) ;
T1.insert ;
T1.filebyname ( ' Stdid ' ).asstring := copy ( s , 1,6) ;
T1.filebyname ( ' Stdname ' ).asstring := copy ( s , 1,20) ;
T1.filebyname ( ' Stdfamily ' ).asstring := copy ( s , 1,25) ;
T1.post ;
End;
Closefile ( f ) ;
End ;

برخي دستورات مقدماتي SQL

1 . Create Table : ايجاد جدول .
Create Table " Employee.db"
{
lst_name CHAR( 20 );
first _ name CHAR ( 15 ) ;
PRIMARY KEY (lst_name , first _ name )
}
2 . Drop Table : حذف جدول .
Drop Table " Employee.db "


3 . Select : بازيابي داده ها از جدول .
Select lst _ name from employeeTable
4 . Delete : حذف يک يا چند رديف از جدول .
5 . Insert : اضافه نمودن يک يا چند رديف به جدول .
6 . Order by : مرتب نمودن رديفهای بازيابی شده .
7 . Group By : ترکيب رديفها يا مقادير مشابه ستونها در يک رديف .
8 . Lower : تبديل تمامي کاراکترها در يک ستون جدول به حروف کوچک .
9 . Upper : تبديل تمامي کاراکترها در يک ستون جدول به حروف بزرگ .
10. AVG : محاسبه مقدار متوسط يک ستون .
11. MAX : محاسبه برگترين مقدار يک ستون عددی .
12.Min : محاسبه کوچکترين مقدار يک ستون عددی .
13. Sum : محسابه مجموع مقادير يک ستون عددی .
14. Count : شمارش تعداد رديفهای بازيابی شده .
15.Cast : تبديل مقدار يک ستون به نوع داده معين .
 

saalek110

Well-Known Member
سالک: در این تاپیک همه تمرینها تابحال با ADO بود. ولی روشهای دیگری هم هست.
در نقل قول زیر به مقایسه دو روش می پردازیم. ولی مطالب زیر یک نظر است برای اطلاعات بیشتر به منابع دیگر هم مراجعه کنید.


منبع:
http://www.iran-eng.com/showthread.php?t=28917


چرا bde چرا ado
---------------------------
bde
مزایا :
سازگاری کامل و 100% با پارادوکس و اینترابیس
سرعت و کارایی بالا تر فقط در ارتباط با بانک اطلاعاتی فوق در مورد تک کاربر
راحتی کار کردن
کامپوننت bachmove برای همزمانی داده ها
مستندات ان در help دلفی کامل است با مثال های متعدد

معایب
نیاز به نصب دارد
در مورد اس کیو ال خیلی کند است
در مولتی یوزر ها مشکل دارد
استاد دیتا خراب کردن است ( دیتای حجم زیاد) بخصوص در پاردوکس
امکان اتصال به همه نوع بانک اطلاعاتی را ندارد
امکان مدیریت ترانزکشن در سطح دیتا بیس در زمان اجرا را ندارد

ado
مزایا
نیاز به نصب ندارد برنامه های دلفی که از این اتصال استفاده میکنند standalone هستند
سرعت و کارایی بالا در شبکه ها
سرعت و کارایی بالا در اس کیو ال سرور
امکان مدیریت ترانزکشن در سطح دیتا بیس در زمان اجرا را دارد
اتصال به همه نوع بانک اطلاعاتی

معایب
کند بودن در تک کاربره
کامپوننت bachmove ندارد
کار با ان نسبت به bde کمی سخت تر است
مستندات ان در help دلفی کامل نیست
بعضی ابزارهای دلفی انرا ساپورت نمیکنند مثا quickreport designer ,rave

اینها همه موضوع نیستند ها ! گفتم یه سیخونکی به این قضیه زده باشیم
 

saalek110

Well-Known Member
منبع:
lkfuhttp://www.noody.mihanblog.com/Cat/5.aspx



ClientDataSet چیست؟


در دلفی در قسمتی که ابزار Data Access هست یک کنترلی به نام ClientDataSet وجود دارد. ClientDataSet در واقع یک Table هست که در هنگام اجرای برنامه (یا دقیقتر هنگام استفاده از آن) در حافظه Load میشه و می تونید در اون اطلاعاتی را بینویسید یا از اون اطلاعاتی رو بخونید. ازمزایای استفاده از ClientDataSet اول سرعت بالای دسترسی به اطلاعات هست. (بدلیل اینکه شما روی Memory کار میکنید) و دیگر اینکه میتونید اطلاعات رو در یک فایل جداگانه بصورت کاملا مستقل نگه داری کنید و در جاهای دیگه هم از این فایل استفاده کنید.


البته کاربردهای دیگری در برنامه نویسی Multi-tier و همچنین برنامه نویسی برای Server هم دارد که در این مقاله به اونها پرداخته نمیشود.


طریقه استفاده از ClientDataSet.


خوب بریم سر اصل مطلب. من سعی میکنم که با ارائه یک مثال همه جانبه امکانات این روش را برای شما بیان کنم. اول باید فیلدهایی که می خواهیم اطلاعات در آن قرار گیرد را ایجاد کنیم. شما میتونید فیلدهای ClientDataSet را هم در حالت Design time و هم در Run Time تعریف کنید. در حالت زمان طراحی (Design time) برای ایجاد فیلدها باید از FieldDefs collection editor استفاده کنید. حال در دلفی (من با دلفی 7 این مقاله را نوشتم و کلیت ماجرا فرقی نمیکند) یک فرم جدید باز کنید و از قسمت DataAccess کنترل ClientDataSet را روی فرمتون قرار بدین. حال روی ClientDataSet1 کلید کنید و در قسمت Object inspector به قسمت FieldDefs بروید. در اینجا فیلدهای که می خواهید را ایجاد کنید.


در این مثال فیلدهای را با خواص زیر ایجاد کنید: (برای ایجاد فیلدها گزینه Add New و کلید Ins را بزنید)


1- name: ID; DataType: ftInteger;


2- name: First Name; DataType: ftString; size: 20;


3- name: Last Name; DataType: ftString; size: 25;


4- name: Date of Birth; DataType: ftDate;


5- name: Active; DataType: ftBoolean;

در ضمن شما میتونید خاصیت (Attribute) هر فیلد را نیز تایید کنید مثلا faRequired که نشان میدهد این فیلد باید حتما دارای مقدار باشد تا قابل ذخیره شدن باشد. یک سری خاصیتهای دیگر هم هست که می تویند در Help دلفی در موردش اطلاعات بیشتری کسب کنید. حالا که فیلدها ایجاد شد با DataSet رو بسازیم. برای اینکار در حالت زمان طراحی روی ClientDataSet کلیک راست کنید و گزینه Create DataSet رو انتخاب کنید. خوب حالا DataSet روی حافظه ایجاد شد ولی هنوز داخل هیچ فایلی ذخیره نشده است. دوباره کلیک راست کنید و یکی از حالتهای ذخیره فایل رو انتخاب کنید مثلا MyBase Xml Table یا binary MyBase اگر هم در فیلدهاتون مقادیر Unicode دارید که فارسی هم دارند میتونید از گزینه MyBase Xml UTF8 استفاده کنید.


خوب تا اینجا فیلدها رو ایجاد کردیم و آنها را داخل یک فایل هم ذخیره کردیم که اگر شاخه ای که فایل را در آنجا ذخیره کیرده اید را ببینید می تونید فایل مذکور رو پیدا کنید. اگر هم XML آشنایی ندارید میتونید فایل Xml بسازید و اونو نگاه کنید مطمئنم که همه چیز در مورد Xml دستتوت میاد...


خوب حالا بصورت زیر در کد برنامتون میتونید این فایل رو کنترل کنید که اگر وجود داشت باز بشه و اگر نه آنرا ایجاد کنه و بعد در حافظه Load بشه.
کد:
procedure TForm1.FormCreate(Sender: TObject);

const

  DataFile = 'mydata.xml';

begin

ClientDataSet1.FileName := ExtractFilePath(Application.ExeName) + DataFile;

if FileExists(ClientDataSet1.FileName) then

  ClientDataSet1.Open

else

  ClientDataSet1.CreateDataSet;

end;

ایجاد فیلدها در حالت زمان اجرا (Run Time):


برای اینکار دو روش وجود دارد. اولی که خیلی هم راحت و ساده هست استفاده از Add با Syntax زیر است:
کد:
procedure Add(const Name: String; DataType: TFieldType; 

  Size: Integer = 0; Required: Boolean = False);

ایی متد دو پارامتر اجباری و دو پارامتر اختیاری دارد. Name و DataType اجباری هستند که باید برای هر فیلدی مقدار دهی شوند و Size و Required برای همه لازم نیست مقدار دهی شوند که اگر شما در حالت Design time کار کنید متوجه هر کدوم از این پارامترها می شود.


کد زیر هم برای ایجاد فیلدها در زمان اجرا می باشند:
کد:
procedure TForm1.FormCreate(Sender: TObject);

const

  DataFile = 'mydata.xml';

begin

ClientDataSet2.FileName := 

  ExtractFilePath(Application.ExeName) + DataFile;

if FileExists(ClientDataSet2.FileName) then

  ClientDataSet2.Open

else

  begin

    with ClientDataSet2.FieldDefs do

    begin

      Clear;

      Add('ID',ftInteger, 0, True);

      Add('First Name',ftString, 20);

      Add('Last Name',ftString, 25);

      Add('Date of Birth',ftDate);

      Add('Active',ftBoolean);

    end; //with ClientDataSet2.FieldDefs

    ClientDataSet2.CreateDataSet;

  end; //else

end;
در کد بالا اگر فایل وجود داشته باشد که باز میشود ولی اگر وجود نداشته باشد ایجاد میگردد. فرقی که اینجا با کد قبلی داره اینست که در کد قبلی اگر فایل وجود داشت باز میشد ولی اگر وجود نداشت فایل ایجاد میشد یعنی فرض بر این بود که فیلدها ایجاد شده اند. (چون اگر فیلدها را در زمان طراحی برنامه ایجاد کنید همواره با ClientDataSet باقی خواهند ماند و می توان در هنگام اجرا برنامه به آنهامقدار داد و از آنها استفاده نیز کرد ولی امکان ذخیره سازی وجود ندارد و با بسته شدن برنامه اطلاعات آن نیز از بین می رود ولی فیلدها و تعریف آنها باقی خواهند ماند)


روش دوم برای ایجاد فیلدها در زمان اجرای برنامه استفاده از متد AddFieldDef هست که Syntax زیر را دارد:
کد:
function AddFieldDef: TFieldDef;

برای استفاده از این روش هم میتونید از کد زیر استفاده کنید:

کد:
procedure TForm1.FormCreate(Sender: TObject);

const

  DataFile = 'mydata.xml';

begin

ClientDataSet2.FileName := 

  ExtractFilePath(Application.ExeName) + DataFile;

if FileExists(ClientDataSet2.FileName) then

  ClientDataSet2.Open

else

  begin

    with ClientDataSet2.FieldDefs do

    begin

      Clear;


 
      with AddFieldDef do

      begin

        Name := 'ID';

        DataType := ftInteger;

      end; //with AddFieldDef do

      with AddFieldDef do

      begin

        Name := 'First Name';

        DataType := ftString;

        Size := 20;

      end; //with AddFieldDef do

      with AddFieldDef do

      begin

        Name := 'Last Name';

        DataType := ftString;

        Size := 25;

      end; //with AddFieldDef do

      with AddFieldDef do

      begin

        Name := 'Date of Birth';

        DataType := ftDate;

      end; //with AddFieldDef do

      with AddFieldDef do

      begin

        Name := 'Active';

        DataType := ftBoolean;

      end; //with AddFieldDef do

    end; //with ClientDataSet2.FieldDefs

    ClientDataSet2.CreateDataSet;

  end; //else

end;
فکر کنم دیگه احتیاجی به توضیح نداره و خود کد گویای همه چیز هست.


ذخیره اطلاعات


اگر شما مقدار FileName را در خود ClientDataSet را به یک فایل خاص ست کرده باشید اطلاعاتی که در ClientDataSet داشته باشید به فایل مورد نظر منتقل می شود. اینکار وقتی که ClientDataSet رو Close کنید یا اینکه Destroy بشه بطور اتومات انجام میشه ولی شما خودتون هم می تونید با استفاده از متد SaveToFile اینکار انجام بدین که Syntax اون به شکل زیر است:
کد:
procedure SaveToFile(const FileName: string = ''; 

 Format TDataPacketFormat=dfBinary);

همونطور که در بالا میبینید هر دو پارامتر اختیاری هست. اگر FileName رو مقدار ندید همون مقداری که در Property خود ClientDataSet تعریف شده در نظر گرفته میشه و اگر Format رو مقدار ندید مقدار dfBinary در نظر گرفته میشه که مانند همون نوع فایل binary MyBase هست و اگر مقدار dfXML رو بدید فرمت Xml MyBase را در نظر میگیرد که فایل را با فرمت XML ذخیره میکند.
 

hafez2

New Member
سلام عرض میکنم خدمت آقای اقالیمی..مطالب خوبی ارسال کردین..ممننونم...بگ محمدی هستم..همکلاسیتون...موفق باشید.
 

babak869

Member
آموزش کامل نحوه تنظیم و اتصال پایگاه داده SQL Server 2000 با دلفی
نویسنده : بابک احدی
http://www.divshare.com/download/3948294-7b4

سالک : من توانستم با روش آقای احدی وصل بشوم
ولی ممکنه شما دچار مشکلاتی بشوید که در زیر توضیح می دهم.


اول اینکه نمی دونم آقای احدی گفته بود که صفت connection ابزار ADOTable1 را باید برابر ADOConnection1 قرار دهیم یا نه. که من چنین کردم.
دوم اینکه صفت تیبل ADOTable1 هم باید نام تیبلی باشد که قبلا در sql server ایجاد شده باشد.
سوم : وقتی صفت Active ابزار ADOTable1 را true می کنیم نباید خطا بده. یعنی بعد تنظیم دو صفت بالا باید این صفت true بشه.

چهارم اینکه در قسمت اول آموزشهای ایشان در یک پنجره دو اسم babak وارد شده که بهتره به توضیحات تاپیک :
دیتابیس با سی شارپ
مراجعه کنید تا بدانید babak دومی چی باید باشد.
عکس زیر از اون تاپیکه:

c5.gif

گویا وقتی می خواهید به sql server دیفالت دسترسی پیدا کنید گذاشتن بک اسلش و نام نمونه هم لازم نیست.
به توضیحاتی از کتاب:
inside sql server 2000
by Kalen Delaney
توجه کنید:
با سلام به همه دوستان عزیز و باتشکر از رعایت حق نشر مطالب با ذکر منبع.ممنون از کار قشنگ شما
دوستان اگه در استفاده از اون راهنما مشکلی دارید میتونید مستقیما از طریق پیغام خصوصی انجمن یا در همین تاپیک مشکلتون رو مطرح کنید.با کمال میل آماده پاسخگویی هستم.
برای مورد اول باید عزض کنم که حتما باید خاصیت connection از عنصر ADOTable رو به ADOConnection خودتون متصل کنید در غیر اینصورت اصلا جدولتون قابل اتصال به پایگاه داده نخواهد بود.
بله در بخش TableName عنصر ADOTable1 هم باید نام جدولی رو که در SQLServer ایجادکردید ببینید و انتخاب کنید.
قاعدتا اگه تمام تنظیمات رو درست انجام داده باشید نباید هیچ پیغام خطایی داشته باشید و اگه یه عنصر DbGrid روی فرم قراربدید و خاصیت DataSource اونو به دیتاسورس جدولتون ارتباط بدید باید تمامی اطلاعات جدول رو مشاهده کنید.

در مورد استفاده از نام ؤ دوبار در آموزش :اولا که این نام اختیاریه و من از babak اول بعنوان معرف (کاملا اختیاری) . babak دوم هم نام دیتابیسی هست که در SQLServer ساختم و میتونه این 2 اسم هم متفاوت باشه!

منظورتون از اسلش رو متوجه نشدم.کجای مقاله اینو نوشتم؟لطفا راهنمایی کنید.

برای دریافت مقاله هم میتونید از آدرس زیر هم دریافت کنید چون ادرس بالا گویا ف ی ل ت ر شده :
http://delphi-magic2.persiangig.com/samples/SQL_Delphi.rar/download
با آرزوی موفقیت برای همه دوستان خوبم
در ضمن اگه نیاز به راهنماییهای تخصصی تر دارید میتونید از انجمن ما هم بازدید بفرمایید :
انجمن تخصصی ایران دلفی
www.IranDelphi.ir
 

hdnsoft

Well-Known Member
سلام ، من یک سوالی داشتم ، چطور میشه تو دلفی یک برنامه تحت شبکه یا حداقل یک دیتا بیس تحت شبکه طراحی کرد مثلن یه یوزر از یک برنامه استفاده کنن ؟ یا اطلاعات رو در یک بانک مشترک ذخیره کنن ؟
 

babak869

Member
سلام ، من یک سوالی داشتم ، چطور میشه تو دلفی یک برنامه تحت شبکه یا حداقل یک دیتا بیس تحت شبکه طراحی کرد مثلن یه یوزر از یک برنامه استفاده کنن ؟ یا اطلاعات رو در یک بانک مشترک ذخیره کنن ؟

برای کسب اطلاعات بیشتر لطفا به این آدرس کراجعه کنید.اونجا توضیحات کاملی درباره ساختن برنامه تحت شبکه نوشتم
www.IranDelphi.ir
موفق باشید
 

samirasamadi

New Member
سلام.من یک برنامه با دلفی ساختم که چند تا بانک اطلاعاتی اکسس داره ولی وقتی saveمیکنم و تو کامپیوتر های دیگه اجرا میکنم خطای بانک میده و مسیر بانک درست نیست.مسیر فایل رو چطوری باید بدم که همه جا اجرا بشه؟نیاز به جواب فوری.
 

the_king

مدیرکل انجمن
سلام.من یک برنامه با دلفی ساختم که چند تا بانک اطلاعاتی اکسس داره ولی وقتی saveمیکنم و تو کامپیوتر های دیگه اجرا میکنم خطای بانک میده و مسیر بانک درست نیست.مسیر فایل رو چطوری باید بدم که همه جا اجرا بشه؟نیاز به جواب فوری.

اون بانک اطلاعاتی هاتون یه ConnectionString داره که برنامه از طریق اون به بانک اطلاعاتی متصل میشه. یه رشته است با تعدادی پارامتر،
اینکه داخلش چه پارامتر هایی باشه بستگی به نوع بانک اطلاعاتی و موتور اش داره اما در کل مسیر فایل بانک اطلاعاتی تون هم داخلش هست.
این ConnectionString نباید یک متن ثابت و تغییر ناپذیر باشه، باید موقع اجرا شدن برنامه تون از طریق یک فرم یا بصورت خودکار تغییر پذیر باشه.

فرضا اگه بانک اطلاعاتی YourDatabase در یک پوشه ای به نام DB کنار فایل exe برنامه شما است، مسیر بانک اطلاعاتی تون در ConnectionString رو می توانید
اینطوری تعیین کنید :
کد:
'...;Data Source=' + ExtractFilePath(Application.ExeName) + 'DB\YourDatabase' + ';...'

مسیر (ExtractFilePath(Application.ExeName جایی است که برنامه شما اجرا میشه.
 

samirasamadi

New Member
ممنون بابت جوابتون.ولی میشه یه مقدار بیشتر توضیح بدید چون من اولین بارمه با دلفی کار میکنم.یعنی این کدی که شما گفتید رو کجا بنویسم؟آدرس بانکم رو توی ADOConnection ندم؟
 

جدیدترین ارسال ها

بالا