PDA

مشاهده نسخه کامل : دلفی و دیتابیس



saalek110
سه شنبه 14 اسفند 1386, 19:49
دلفی و دیتابیس

saalek110
سه شنبه 14 اسفند 1386, 19:52
فهرست:

saalek110
سه شنبه 14 اسفند 1386, 20:00
http://www.1padideh.com/index_files/essay27.htm

آموزش دلفی— درس 1
امید ولی محمدی

در این مقاله سعی شده بطور کاربردی نحوه ارتباط با یک دیتابیس ( Access) و دیدن رکوردهای جدول مورد نظر و امکان حذف , اضافه و ویرایش رکوردهای آن آموزش داده شود . برای ارتباط ما از تکنولوژی ADO استفاده کرده ایم .

از برگه ADO کامپوننت ADOConnection را انتخاب و بر روی فرم قرار می دهیم . خاصیت ConnectionString کامپوننت یاد شده را انتخاب و از پنجره Data link properties گزینه Mocrosoft Jet 4.0 OLEDB provider را انتخاب و دکمه next را کلیک می کنیم .


http://irdelphi.250free.com/g/g1/a9/d1.gif

در قسمت بعد که همان برگه Connectin پنجره data link properties می باشد , دیتابیس خود را انتخاب می کنیم ( گزینه اول ) . قسمت username و password را خالی می گذاریم . در صورت کلیک کردن دکمه test connection و برقرار بودن ارتباط پیغام test connection successed خواهد آمد .

بعد از بستن پنجره data link properties خاصیت Login promt کامپوننت ADOConnetcion1 را False می کنیم تا در هنگام True کردن خاصیت Connected پنجره username و password ظاهر نشود . حالا Connected را True می کنیم .


http://irdelphi.250free.com/g/g1/a9/d2.gif

سالک : می توانید در عکس بالا فقط shop.mdb را باقی بگذارید تا با انتقال پوشه پروژه به همراه فایل دیتابیس مشکل آدرس دهی پیدا نشود.

-----------------------------------------
از برگه ADO کامپوننت ADOTable را بر روی فرم قرار می دهیم .

خاصیت Connection را ADOConnection1 انتخاب می کنیم . حال خاصیت Tablename شامل جداول دیتابیس ما می باشد . جدول مورد نظر را انتخاب می کنیم .

سالک: بله. باید ADOTable اضافه شود و صفت Connection آن برابر ADOConnection1 شود و صفت تیبل آن به یکی از تیبل های دیتابیس تنظیم شود.(اگر ADOConnection1 درست وصل شده باشد اتوماتیک نام تیبلها ها لیست می شود و ما فقط انتخاب می کنیم.) و صفت Active ابزار ADOTable را در آخر اگر True کنیم نباید اررور دهد.




http://irdelphi.250free.com/g/g1/a9/d3.gif

می توانستیم برای ارتباط با یک جدول از ADOQuery هم استفاده کنیم . انتخاب ADOQuery این مزیت مهم را دارد که می توانستیم از دستورات SQL هم استفاده کنیم . استفاده از ADOQuery را در مقاله بعدی آموزش خواهیم داد.
سالک : در حقیقت در این حالت ADOQuery به جای ADOTable نقش بازی می کند. در ADOTable ما صفت Table را تنظیم کردیم ولی در ADOQuery می آییم صفت SQL را مثلا به :


select * from table1

تنظیم می کنیم و بعد صفت Actice را True می کنیم.
بعد هم DataSource را به ADOQuery وصل می کنیم(قبلا به ADOTable وصل بود.)
صفت Active ادوکوئری بعد دستکاری دیتاسورس ممکنه فالس بشه که مجدد ترو کنید.




***************************************
تا اینجا ما با دیتابیس ارتباط برقرار کرده ایم . همینطور به کمک ADOTable توانسته ایم به جدول مورد نظر متصل شویم . برای دیدن رکودهای جدول انتخاب شده ساده ترین و معمول ترین راه استفاده از DBGrid می باشد .

***************************************
برای اینکار به برگه Data Access رفته و کامپوننت Datasource را روی فرم قرار می دهیم . خاصیت DataSet کامپوننت یاد شده را ADOTable1 انتخاب می کنیم .


http://irdelphi.250free.com/g/g1/a9/d4.gif

و حالا سراغ برگه Data Contorol می رویم . کامپوننت Dbgrid را بر روی فرم قرار می دهیم و اندازه آنرا تنظیم می کنیم . خاصیت DataSource کامپوننت Dbgrid را DataSource1 انتخاب می کنیم . اگر خاصیت Active کامپوننت ADOTable را True کنید رکوردهای جدول خود را در DBGrid خواهید دید .


http://irdelphi.250free.com/g/g1/a9/d5.gif

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

اما چند کار دیگر لازم است که انجام دهیم . اول خاصیت BIDImode کامپوننت DBGrid را dbRightToLeft انتخاب می کنیم , تا نمایش رکوردهای ما از راست به چپ شود . بر روی DBGrid1 کلیک راست می کنیم و از menu گزینه اول یعنی Columns Editor را انتخاب می کنیم , تا پنجره مربوط به آن ظاهر شود .

Add All Fields را انتخاب می کنیم تا تمامی فیلدهای جدول مورد نظر نمایش داده شود . این قسمت در شکل زیر با فلش نمایش داده شده است .


http://irdelphi.250free.com/g/g1/a9/d6.gif

بعد از اضافه کردن فیلدها , هر کدام را که انتخاب کنیم خاصیت های آنرا می توانیم مشاهده و تغییر دهیم . برای مثال ما Caption Title فیلدهای جدول مان را در اینجا فارسی کرده ایم . شکل بالا

شما می توانید color , Width و دیگر مشخصات فیلد انتخاب شده را هم تغییر دهید .

برای حذف و اضافه و ویرایش می توانیم از کامپوننت DBNavigator که در همان برگه Datacontorols است استفاده کنیم . برای متصل کردن DBNavigator که در همان برگه Datacontorols است استفاده می کنیم .

برای متصل کردن DBNavigator به DBGrid کافیست Datasource DBNavigator1 را Datasource1 انتخاب کنید .

همانطور که دیدید در هیچ کدام از قسمت های فوق از کد نویسی استفاده نکردیم .

حالا برنامه ما برای نمایش , حذف , اضافه و ویرایش رکوردهای جدول آماده است . فقط مانده RUN کردن برنامه .

موفق باشید .

saalek110
سه شنبه 14 اسفند 1386, 20:13
سالک: پروژه بالا تمام شد و تشکر می کنم از نویسنده آن جناب امید ولی محمدی.
ولی چند تا نتیجه گیری شخصی من می کنم و شما خودتان با بررسی ها یا مطالعات بعدی ببینید درست گفتم یا نه.

اولی این که وقتی به یک فایل اکسس وصل بشیم یک فایل در هارد ما کنار آن ایجاد می شود که شکل قفل دارد. شاید این فایل که بعد دیس کانکت خودبخود محو می شود یک راهنما باشد. حتی در موقعی که پروژه دلفی run نشده و در حالت طراحی است این کانکت شدن را داریم. وقتی با نرم افزار اکسس میکروسافت هم وصل شویم همین قفل می آید.

دومین نتیجه گیری این است که کنترلهای ADOConnection و ADOTable حکم رابط بین نرم افزار ما و دیتابیس است و DataSource حکم مثلا مرکز سرویس دهی است که با کنترلهای ADOConnection و ADOTable پشتیبانی می شود.
ابزار DataGrid و کلا همه ابزارهای تب Data Controls برای نمایش هستند.


http://irdelphi.250free.com/g/g1/a9/d7.gif

saalek110
چهارشنبه 15 اسفند 1386, 00:00
در ادامه بحث پروژه بالا نگاهی می کنیم به پنجره Object TreeView


http://irdelphi.250free.com/g/g1/a9/e1.gif

من در پروژه جناب امید ولی محمدی آمدم (( ادو کوئری )) هم اضافه کردم و دیتاسورس را به آن وصل کردم.

نگاه کنید که (( ادو کانکشن )) چون ساقه درخت عمل می کند و (( ادو کوئری)) و (( ادو تیبل)) دو شاخه آن هستند.
و (( دیتاسورس)) هم چون میوه ای روی شاخه (( ادو کوئری )) نشسته.

حالا من این میوه را از این شاخه جدا می کنم و روی شاخه دیگر قرار می دهم. با تغییر صفت DataSet ابزار مذکور یعنی ((دیتاسورس)).- شکل زیر:



http://irdelphi.250free.com/g/g1/a9/e2.gif

می بینید که حالا ((دیتاسورس )) وابسته به (( ادو تیبل )) است و نه (( ادو کوئری)).

در شکل بالا همچنین می بینید که (( DBGrid )) را وارد این شاخه ها نکرده اند. احتمالا برای اینکه شلوغ نشه ولی می دانید که این ابزار هم توسط صفت DataSource خود به DataSource1 وصل است.

saalek110
چهارشنبه 15 اسفند 1386, 00:16
اما بیاییم درخت خود را کمی تغییر دهیم.
هم (( ادو کوئری)) و هم (( ادو تیبل)) دارای صفت ConnectionString هستند.
پس بیایید صفت Connection آنها را که قبلا به ADOConection وصل بود را برداریم و کانکشن استرینگ را تنظیم کنیم.
حالا درخت ما به این شکل در می آید:


http://irdelphi.250free.com/g/g1/a9/e3.gif

و اگر یکی را فقط جدا می کردیم به این شکل میشد:



http://irdelphi.250free.com/g/g1/a9/e4.gif



http://irdelphi.250free.com/g/g2/a1/c1.gif
عکسی از :
Teach Yourself Borland Delphi 4 in 21 Days
http://www.cesis.lv/learn/delphi/ch16.htm

saalek110
چهارشنبه 15 اسفند 1386, 10:59
در تمامی مباحث بالا ما کدنویسی نداشتیم و با تنظیم صفات ابزارها آنها را به هم وصل می کردیم.

در (( ادو کوئری)) یک خط دستور sql استفاده شد. در زیر آورده می شود:


select * from table1

معنای آن این است که :


انتخاب کن( select )
تمامی فیلدها(ستونها) ( * ) را
از ( from )
تیبل 1 .



در تاپیک :

آموزش و سوالات مربوط به استفاده از دستورات Sql در دلفی (http://www.majidonline.com/forum/showthread.php?t=92506)

که فرهاد عزیز زحمتش را کشیده اند می توانید به طور پیشرفته تری این مباحث را دنبال کنید.

همچنین کتاب زیر را می توانید مطالعه کنید:

راهنمای دستورات sql
http://www.divshare.com/download/3948201-8e1
صد کیلو.
فارسی.
---------------------------
Sams Teach Yourself SQL in 10 Minutes, Third Edition

حجم : 320 کیلو.
http://www.divshare.com/download/4479634-4c0
-------------------------
کار با mysql و آموزش دستورات sql :
http://www.divshare.com/download/4403335-91a
نیم مگا.
96 صفحه.
فارسی.
=============================================

دو تا فایل کوچک پیدا کردم آپلود کردم. شاید به مباحث این تاپیک مربوط باشه. دویست سیصد کیلو هستند.
-------------------
http://www.divshare.com/download/4396185-0ed
adosql.rar

-------------------
http://www.divshare.com/download/4396269-156
odbcsql.rar

-=====================
یکی دیگه:
363 KB
Transact SQL Cookbook.rar
http://www.divshare.com/download/4396417-093
------------------
این شاید همون باشه ولی آپلود کردم.
حجمش دقیقا همونه یعنی 363 .
Oreilly.Transact.Sql.Cookbook.eBook-LiB.rar
http://www.divshare.com/download/4396448-adc
--------------------------
Oracle Database 10G Sql.rar
حجم : 837 کیلو
http://www.divshare.com/download/4396605-71d
--------------------------
Oreilly.SQL.Tuning.eBook-LiB.rar
حجم : 977 کیلو.
http://www.divshare.com/download/4396647-d4c

کلی کتاب sql هم اینجا هست.
http://www.flazx.com/category7.php
این صفحه مخصوص sql است.
برای mysql اینجا را ببینید:
http://www.flazx.com/category63.php

سایت دیگر هم که نمی تونم لینک بدهم مستقیم pdfchm دات کام است که باید عضو بشید تا لینک دانلود مجانی آشکار بشود. که خودش هم کتابهای جدید را ئی میل می زنه برای شما.

http://www.developercenter.ir/forum/showthread.php?t=1587

راهنمای استفاده از پایگاه داده Mysql (به زبان فارسی)

saalek110
چهارشنبه 15 اسفند 1386, 11:00
http://www.divshare.com/download/3955632-677


delphi_database_application_developers_book.pdf
کتاب مفیدی برای دیتابیس. انگلیسی.
حجم : حدود 1 مگا.

saalek110
چهارشنبه 15 اسفند 1386, 13:09
منبع:
http://www.aachp.ir/post.aspx?no=84

کار با بانکهای اطلاعاتی در دلفی - ارائه شده توسط مسعود اقالیمی


در این بخش می خواهیم به پر كاربردترین و پراستفاده ترین مبحث در دلفی، یعنی برنامه نویسی بانك های اطلاعاتی، بپردازیم. امید است كه با آموزش گام به گام بتوانیم به طور كامل و كاربردی این بحث طولانی و سنگین را توصیح دهم.

مروری بر ADO
ADO و یا به عبارتی ActiveX Data Object رابط كاربری سطح بالای مایكروسافت برای دستیابی به بانك های اطلاعاتی است. ADO - كه بر اساس فناوری OLE DB مایكروسافت پیاده سازی شده است - علاوه بر دستیابی به بانك های اطلاعاتی رابطه ای و غیر رابطه ای، دستیابی به پست الكترونیكی و فایل سیستمها و اشیاء شخصی را فراهم می سازد. اگر بخواهیم از Access یا از Sql Server مایكروسافت استفاده كنیم، ADO قطعا مزایای بسیاری برای ما خواهد داشت. اما نكته منفی در مورد ADO آنست كه در Linux یا سیستم های عامل دیگر قابل استفاده نیست.

مدل برنامه سازی ADO بر پایه چند شیء استوار است، كه روشهایی را برای دستیابی به انواع منابع داده ای فراهم می سازند. برخی از این اشیاء به قرار زیرند:

شیء Connection كه نمایانگر اتصال به منابع داده ای با استفاده از رشته های اتصال است.
شیء Command كه امكان كار بر روی منابع داده ای را فراهم می سازند. مانند: عملیات حذف، درج، پرس و جو، بروز رسانی و . . .
شیء Recordset كه نتیجه فرمان Query است. هر Recordset را می توان یك جزء ساخت Table یا Query در نظر گرفت.
چند جزء ساخت كه در برنامه ها و مثالهای آتی استفاده خواهیم كرد را به طور خلاصه معرفی می كنیم:

اجزای ساخت تب Data Control

این اجزای ساخت كه Data-Aware نامیده می شوند، اجزای ساختی هستند كه عموما مشابه آنها را در تب standard می بینیم. اما به گونه ای تغییر یافته اند تا محتوای داده های یك Dataset را نمایش یا تغییر دهند. به عنوان مثال از DBEDIT و DBDEMO برای نمایش یك ركورد استفاده می شود. اما از DBGRID زمانی استفاده می شود كه بخواهیم محتـوای كل یك Dataset را نمایش دهیم.

بیـــشتر این اجزای ساخت را می توان به وســـــیله همان اجزا ساخت موجود در تب Standard پیاده سازی كرد. لذا از آنها به جز DBGRID كمتر استفاده خواهیم كرد.

اجزا ساخت تب Dataset

دلفی برای ایجاد برنامه های كاربردی مبتنی بر ADO چهار جزء Dataset معرفی كرده است:


TADODataset
TADOTable
TADOQuery
TADOStoredProc

تمام این اجزا برای بازیابی، نمایش و تغییر داده ها طراحی شده اند، که می توانند از طریق خصوصیت Connection string خود مستقیماً با منبع داده ها ارتباط برقرار كنند.

جزء ساخت Data Source

این جزء ساخت مكانیزمی برای مرتبط كردن اجزای ساخت Dataset به اجزا ساخت Data-Aware - كه داده ها را نمایش می دهند - فراهم می سازد.

برقراری اتصال با بانك اطلاعاتی
همانطور كه عنوان شد اگرچه هر جزء ساخت Dataset خود مستقیماً می تواند به بانك اطلاعاتی وصل شود، اما ما برای این منظور از جزء ساخت ADOConnection موجود در تب ADO استفاده می كنیم. در این صورت اجزاء Dataset به جای برقراری ارتباط مستقیم با بانک اطلاعاتی به این جزء متصل می شوند. این عمل فواید بسیاری دارد. از جمله اینکه در صورت تغییر پپدا کردن رشته ارتباطی بانک اطلاعاتی تنها کافیست این جزء منفرد را تغییر دهیم. در حالت قبلی باید رشته ارتباطی تک تک اجزای Dataset را تغییر می دادیم.

روال كار بدین صورت است:

یک - ابتدا یك جزء ساخت ADOConnection روی فرم قرار داده، و روی آن دو بار كلیك می كنیم.

دو - سپس روی Build كلیك می كنیم تا پنجره شماره 2 ظاهر شود. فرض می کنیم از پایگاه داده Microsoft Access استفاده می كنیم. در صفحه جدید گزینه Microsoft jet 4.0 Ole DB Provider را انتخاب می كنیم.

سه - Next را كلیك كرده، در صفحه بعد - که در شكل 3 نمایش داده شده - از طریق دكمه Browse فایل mdb مربوط به Microsoft Access را انتخاب می كنیم.

چهار - برای آنكه از اتصال موفق پایگاه داده مطمئن شویم دكمه Test Connection را كلیك می كنیم.

پنج - در تب Advanced طریقه دستیابی به پایگاه داده را - مانند شکل ۴ - مشخص می كنیم.

شش - اكنون OK را كلیك می كنیم.

هفت - روی ADOConnection كلیك كرده، و از طریق Object Inspector خاصیت LoginPrompt را False، و ارزش خاصــیت Connected را True می كنیم.

هشت - اكنون از تب ADO یك ADOTable، از تب DataAccess یك DataSource، و از تب DataControl یك DBGrid روی فرم قرار می دهیم.

نه - از طریق Object Inspector مقدار خاصیت Connection جزء ADOTable1 را ADOConnection1 قرار داده، و در خاصیت Table Name یكی از جداول پایگاه داده را برمی گزینیم.

ده - بر روی DataSource كلیك كرده، خاصیت DataSet آنرا به ADOTable1 تغییر می دهیم.

یازده - بر روی DBGrid كلیك كرده خاصیت DataSource آنرا به DataSource1 تغییر می دهیم.

دوازده - بالاخره ADOTable1 را انتخاب كرده و ارزش خاصیت Active آنرا True قرار می دهیم. اگر جدول مورد نظر دارای داده باشد، آن داده ها در DBGrid نمایش داده می شوند.

saalek110
چهارشنبه 15 اسفند 1386, 13:09
از همان منبع :
http://www.aachp.ir/post.aspx?no=84


در بخشهای بعدی مطالبی در مورد شبوه نوشتن در منبع داده، خواندن از منبع داده، و نمایش اطلاعات بحث خواهیم كرد.

موتور بانك اطلاعاتی JET معمولا با بانك اطلاعاتی Microsoft Access مرتبط است، و از MS Access 97 , 2000 , 2003 و نرم افزارهای راه اندازی ISAM (اختصار Index Sequential Access Method) پشتیبانی می كند. لذا این موتور شامل نرم افزارهای راه اندازی Paradox, dBase, Access و Excel بوده، و از متن نبز پشتیبانی می كند. برای آنكه این موتور را با هر بانك اطلاعاتی به غیر از Microsoft Access به كار ببرید، كافیست در پنجره Data Link Properties و در تب All خاصیت Extended Properties را مقدار دهی كنید. مثلا برای استفاده از Excel آنرا به Excel 8.0 و برای استفاده از متن به Text تغییر دهید.

به عنوان یک مثال ساده حالت برای متن، یك فایل متنی با محتویات زیر ایجاد كنید:


Amin , Amani

Reza , Sadegi

Mohammad , Azimi

یك ADOTable، یك DBGrid، و یك DataSource روی فرم قرار داده و خواص آنها را مطابق دستورالعمل ارائه شده در بالا تنظیم کنید. با این تفاوت که به جای Access از فایل متنی (Text) استفاده کنید(شكل ۲). البه باید در قسمت مسیر فایل فقط مسیر دایركتوری حاوی متن را بنویسید، و نام فایل را ننویسید. و بالاخره در تب All مقدار خاصیت Extended Properties را Text قرار دهید. حال اگر خاصیت Active جزء ADOTable1 را True كنیم DBGrid حاوی داده های فایل متنی خواهد شد.

saalek110
چهارشنبه 15 اسفند 1386, 14:03
منبع :
http://www.drlearn.ir/programing/7.html
-------------------------------------------------------------
كار با بانكهای اطلاعاتی در دلفی - قسمت دوم

در جلسه قبل با نحوه اتصال به پایگاه داده و نمایش داده ها به صورت ابتدایی آشنا شدیم. در این جلسه می خواهیم برخی کارهای عملیاتی نظیر افزودن، حذف، بروز رسانی و ویرایش داده ها را مرور کنیم. ابتدا آسانترین راه را پیشنهاد می دهیم:

1. استفاده از DBNavigator:
================
این جزء ساخت که در پالت DataControls قرار دارد علاوه بر قابلیتهای پیمایشی، راهکاری را برای انجام عملیاتی چون افزودن، حذف یا لغو را فراهم می کند. وجود دکمه ها اختیاری بوده و با استفاده از خاصیت VisibleButtons می توان هر ترکیبی از دکمه ها را انتخاب نمود. برای استفاده از این جزء ساخت آن را روی فرم قرار داده و در قسمت Object Inspector خاصیت DataSource آنرا به DataSource مورد نظر مقدار دهی می کنیم. چهار دکمه اول دکمه های پیمایشی هستند که با استفاده از آنها می توان به اولین و آخرین رکورد انتقال یافت، یا بین رکوردها حرکت کرد. دکمه های بعدی عبارتند از افزودن، حذف کردن، ویرایش، تایید، لغو و Refresh.

وقتی DataSet را در حال ویرایش یا Edit قرار داده ایم و اقدام به تغییر داده ها می کنیم تا زمانیکه عمل تایید یا Post را انجام ندهیم، تغییرات مورد نظر در پایگاه داده اعمال نخواهد شد.

سالک: به یکی از پروژه هایتان ناویگیتور را اضافه کنید. و صفت دیتا سورسش را به دیتاسورس برنامه وصل کنید.
این ابزار یک سری دکمه دارد.
دکمه آخر ((دکمه رفرش است)) .
من پروژه ام به اکسس وصل بود. بعد تغییرات در DBGrid تا دکمه رفرش را نمی زدیم فایل دیتابیس که در هارد قرار دارد تغییر نمی کند.
اما ((دکمه ادیت)) و ((دکمه ok )) ( شبیه تیک است شکلش) مجموعا باعث تغییر فایل در هارد میشد.
من فایل را با اکسس میکروسافت باز می کردم.

نکته بعدی راجع به (( دکمه اینسرت)) است. با وجودی که هر جا دکمه را می زدیم همان جا ردیف باز می شد ولی بعد رفرش می رفت سطر آخر. البته تیبل من ستون اتونامبر داشت. شاید هم به خاطر این بوده.



http://irdelphi.250free.com/g/g2/a1/b5.gif

saalek110
چهارشنبه 15 اسفند 1386, 14:04
2. با استفاده از کدنویسی:
===============

با این روش متدهای مورد نظر یک DataSet را فراخوانی می کنیم. این متدها دقیقا همنام با دکمه های جزءساخت DBNavigator هستند. یکی از عملیات پیمایشی که جزء ساخت DBNavigator فراهم نمی کند حرکت رو به جلو یا عقب به اندازه چند رکورد است. از متد MoveBy یک DataSet برای انتقال نشانه رو یک رکورد نسـبت به رکورد فعال استفاده می شود. مـــثلا دسـتور (MoveBy(2 باعث حرکت با گامهای 2 تایی رو به جلو می شود، و دستور (MoveBy(-2 موجب حرکت رو به عقب با گام هایی به طول 2 می شود.

اکنون تغییر و اصلاح داده ها را با هم مرور می کنیم. برای انجام هر کاری روی DataSet ها ابتدا باید DataSet مورد نظر باز باشد. در غیر اینصورت هیچ عملیاتی را روی داده ها نمی توان انجام داد. برای اینکار یا باید خاصیت Active را برای DataSet مورد نظر در حالت True قرار دهیم و یا از متد Open استفاده کرده و قطعه کدی مانند ;Adotable1.Open بنویسیم. برای بستن DataSet هم باید متد Close را فراخوانی کنیم.

برای آگاهی یافتن از وضعیت جاری یا State یک DataSet می توانیم از متد State یا رویداد (Event) به نام OnStateChange استفاده کنیم که هر بار به هنگام تغییر وضعیت DataSet متناظرش فعال می شود. مثلا اگر قطعه کد زیر را در قسمت پاسخگویی به رویداد OnStateChange بنویسیم سبب می شود تا وضعیت جاری AdoTable1 در Edit1 نمایش داده شود:

Var
St : String ;

Begin
Case AdoTable1.State of

dsInactive: st := ' closed ' ;
dsEdit: st := ' Editing ' ;
dsInsert: st:= ' Inserting ' ;
Else st := ' other state ' ;

End ;

form1.caption := 'AdoTable1 state :' + st ;

End ;


سالک:
رویداد OnStateChange را در بین رویدادهای ADOTable من پیدا نکردم.
ولی دیتاسورس دارای این رویداد بود.
من کد زیر را امتحان کردم:

procedure TForm1.DataSource1StateChange(Sender: TObject);
var
St : String ;

begin

Case AdoTable1.State of

dsInactive: st := ' closed ' ;
dsEdit: st := ' Editing ' ;
dsInsert: st:= ' Inserting ' ;
Else st := ' other state ' ;

end ;

Edit1.text := st ;

end ;

http://irdelphi.250free.com/g/g2/a1/b6.gif

در شکل بالا با زدن دکمه ادیت می بینید که داخل ادیت نوشته Editing و همین طور با زدن دکمه اینسرت(دکمه دارای شکل بعلاوه) هم ی نویسد Inserting .


با استفاده از متد های First و Last می توان به ترتیب نخستین یا آخرین رکورد را به عنوان رکورد جاری تعیین کرد. متد Next و Prior برای رفتن به رکوردهای بعدی و قبلی است. خصوصیت BOF و EOF نشان می دهد نشانه رو در آخرین سطر یا نخستین سطر DataSet است.

saalek110
چهارشنبه 15 اسفند 1386, 14:04
ادامه از :
http://www.drlearn.ir/programing/7.html



به دست آوردن مقدار فیلدها

قبل از اینکه عملیات دیگر را معرفی کنیم باید ببینیم که چگونه می توانیم مقدار یک فیلد از یک رکورد را بدست بیاوریم؟ وقتی شیء های DataAware نظیر DBGrid به یک DataSet متصل می شود مقادیر فیلدها در آن شیء های کنترلی نمایش داده می شود. اگر بخواهیم همان مقادیر را مستقیما در برنامه به کار ببریم باید شیوه خواندن آنها را بدانیم. برای دستیابی به مقدار داده یک فیلد چندین روش وجود دارد:


1. ADOTable1.Fields[x].Value

در کد بالا X شماره فیلد است، که از صفر شروع می شود. تمام فیلدهای یک DataSet در آرایه Fields ذخیره می شود و X نمایانگر موقعیت فیلد در آرایه است.


2. ADOTable1.FieldByName('name_of_field').Value

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

در هر دو این روشها چون Value از نوع Variant است، هنگام نیاز به مقدار فیلدها باید آن را به نوع مورد نظر تبدیل کنیم. مثلا اگر مقدار فیلدی به صورت رشته باشد، از خصوصیت AsString استفاده می کنیم.



سالک: در برنامه من فیلدهای دوم و سوم عددی و فیلد آخر یعنی چهارمی متنی است.
برای همین تبدیلاتی لازم بوده که در کد خود من انجام داده ام.
در عکس زیر کدها روی باتون ها هست و نیازی به درج کد دیگه نیست ولی باز می آورم:


edit2.Text :=ADOTable1.Fields[3].value ;
edit3.Text := ADOTable1.FieldByName('Field1').AsString ;



http://irdelphi.250free.com/g/g2/a1/b8.gif




ویرایش یک رکورد:

برای اینکه بتوان داده های یک DataSet را ویرایش نمود، DataSet باید در وضعیت Edit باشد. رفتار شیء های DataAware نظیر DBGrid - هنگامیکه مقدار True به خاصیت AutoEdit آنها تخصیص می یابد - این است که وقتی کاربر روی یکی از فیلدها کلیک می کند تا آنرا ویرایش کند، وضعیت DataSet از حالت Browse به حالت Edit تغییر می یابد. باید دقت کرد که پس از Edit باید عمل Post را هم انجام دهیم. مثلا در کد زیر:




ADoTable1.Edit ;

AdoTable1.name_of_field.AsString := 'delphi' ;

Adotable1.Post ;



در سطر نخست dataset در وضعیت Edit قرار می گیرد. در سطر دوم رشته Delphi به فیلد name_of_field تخصیص می یابد، و در سطر آخر هم داده ها Post می شوند. جالب است بدانید که در اثر اجرای سه دستور بالا رویدادهای زیر فعال می شوند:



AdoTable1 BeforeEdit

DataSource1 StateChange

Datasource1 DataChange

AdoTable1 AfterEdit

Adotable1 name_of_field Validate

Adotable1 name_of_field Change

DataSource1 StateChange

Datasource1 DataChange

AdoTable1 BeforePost

DataSource1 StateChange

AdoTable1 AfterPost


سالک: من با کد زیر توانستم کار کنم:

ADOTable1.Edit;
ADOTable1.FieldByName('Field3').AsString := 'hamed';
ADOTable1.Post;
اگر بخواهیم مثلا محتوای یک ادیت را به جای اسم حامد به کار ببریم. به این شکل میشه:


ADOTable1.FieldByName('Field3').AsString := edit1.text;

و برای فیلدهای عددی کد زیر:


ADOTable1.Edit;
ADOTable1.FieldByName('Field2').value := 6677;
ADOTable1.Post;

saalek110
چهارشنبه 15 اسفند 1386, 19:48
ادامه از :
http://www.drlearn.ir/programing/7.html


افزودن یک رکورد:

برای اینکار از دو متد مربوط به DataSet می توانیم استفاده کنیم. اولین متد Insert و دومین متد Append است. هردو این متدها یک رکورد جدید خالی در جدول ایجاد کرده و رکورد جدید را به عنوان رکورد فعال (Active) در نظر می گیرند. تنها تفاوت ما بین این دو دستور اینست که متد Append این رکورد جدید را در انتهای DataSet ایجاد می کند (به انتهای جدول اصافه می کند)، اما در متد Insert این رکورد جدید ممکن است در هر جایی از DataSet اضافه شده باشد. قطعه کد زیر نحوه انجام این عمل را نشان می دهد:


With AdoTable1 Do

Begin

Append ;

FieldByName('name').Value.AsAtring := 'ali' ;

FieldByName('Email').Value.AsString := ' ali@yahoo.com' ;

FieldByName('id').Value.AsString := '50' ;

Post ;

End ;

البته جزء ساخت AdoTable متدی به نام InsertRecord دارد که از آن می توان برای ایجاد یک رکورد خالی جدید در Dataset، پر کردن فیلدهای این رکورد جدید و Post کردن مقادیر به بانک اطلاعاتی استفاده نمود. کد زیر نحوه انجام این عمل را نشان می دهد:


AdoTable1.InsertRecord ( ' ali' ,' ali@yahoo.com ' , '50' ) ;

باید توجه داشت که ترتیب داده ها با ترتیب قرار گرفتن آنها در فیلدهای مورد نظر یکسان باشد.


سالک : من با کدهای زیر کار کردم:

With AdoTable1 Do
Begin

Append ;

FieldByName('Field1').value := 21 ;
FieldByName('Field2').value := 45000 ;
FieldByName('Field3').AsString := 'javid' ;

Post ;
end;
فیلد اولی از نوع autonumber بود که مقدار ندادم.

AdoTable1.InsertRecord ([nil,'20' ,'72000' , 'sadegh'] ) ;
فیلد اولی از نوع autonumber بود که nil نوشتم.


حذف یک رکورد:

برای اینکار متد Delete مربوط به DataSet مورد نظر را فراخوانی می کنیم و نیازی به فراخوانی متد Post پس لز فراخواندن Delete نیست. با استفاده از رویداد BeforeDelete می توان جهت جلوگیری از حذف رکورد از جدول اقدام کرد. برای اینکه کاربر را از اینکه می خواهد رکوردی را حذف کند آگاه کنیم یا در حقیقت از کاربر بخواهیم که عمل حذف را تایید کند چندین راه وجود دارد. اولین روش استفاده از تابع MessageDlg است. این تابع در کتابخانه Dialogs به صورت زیز تعریف شده است :



Function MessageDlg ( Const Msg : String ; DlgType : TMsgDlgType ; Buttons : TMsgDlgButtons ; HelpCtx : Longint )

پارامتر اول پیامی است که می خواهیم به کاربر نشان داده شود. پارامتر دوم نوع پیام و پارامتر سوم ترکیب دکمه هایی است که در پیام می خواهیم ظاهر شود. MsgDlgBtn می تواند یکی از مقادیر mbOK, mbCancel, mbYes, mbNo, mbRetry و . . . را بپذیرد. برای اینکه بفهمیم کاربر کدامیک از دکمه ها را کلیک کرده است مثل کد زیر عمل می کنیم:


If messagedlg ( 'Are you sure you want to delete book?' , mtWarning , mbOKCancel , 0 ) = mrOk Then

AdoTable1.Costumer.Delete ;



سالک : من با کد زیر کار کردم:

AdoTable1.Delete ;


http://irdelphi.250free.com/g/g2/a1/b9.gif

کد Append1 در عکس بالا اینه:

With AdoTable1 Do
Begin

Append ;

FieldByName('Field1').value := 21 ;
FieldByName('Field2').value := 45000 ;
FieldByName('Field3').AsString := 'javid' ;

Post ;
end;
کد state هم این است:

procedure TForm1.DataSource1StateChange(Sender: TObject);
var
St : String ;

begin

Case AdoTable1.State of

dsInactive: st := ' closed ' ;
dsEdit: st := ' Editing ' ;
dsInsert: st:= ' Inserting ' ;
Else st := ' other state ' ;

end ;

Edit1.text := st ;

end ;
یک نکته کوچک هم بگم: در موارد خاصی از تغییر صفات ادوکانکشن و دیتاسورس خودبخود صفت Active ادوتیبل False میشه که باید True کنید.
گاهی هم برای اینکه در حالت طراحی اطلاعاتی که در DBGrid می بینید رفرش بشه همین صفت یعنی صفت Active ادوتیبل را False و دوباره True کنید.

این قسمت تمام شد.

saalek110
چهارشنبه 15 اسفند 1386, 20:24
از :
http://forum.p30world.com/showthread.php?t=52758
-------------------------------------------------------------

درس1 : آشنایی با بانک اطلاعاتی
دوستان اول به نظرم لازم بود که درباره معنای بانک اطلاعاتی بدونین.
برای فهم راحت این موضوع یک مثال میزنم.
فرض کنید یک دفترچه تلفن خریدید.
معمولا 3 بند در آن مشترک است
1. نام
2. تلفن
3. آدرس
که زیر آنها کلی جای خالی برای نوشتن تلفن و اسم هست.
در مفهوم بانک اطلاعاتی به هر یک از این بخشهای 1-2-3 یک فیلد گفته میشود.
به هر یک از اسم و فامیلی که مینویسیم یک رکورد گفته میشود.
در ساخت بانک اطلاعاتی همیشه تعداد فیلدها محدود است و نوع آنها مشخص میباشد.
ولی رکوردها تا اندازه ای که هارد شما ضرفیت دارد امکان ذخیره اطلاعات را دارد.
به مخموعه ای از فیلدها و رکوردها یک بانک اطلاعاتی گویند.

ساختار بانکهای اطلاعاتی معمولا تجربی است و راه خاصی برای تشخیص تعداد و نوع فیلدها وجود ندارد و فقط با کارکردن زیاد می توان ساختار بهینه را آموخت.
دیتابیسها دو نوعند. دیتابیسهای یک جدوله مثل فاکسپرو و دی بیس. و دیتابیسهای چند جدوله مانند اکسس.
چون هدف ما آموزش دیتابیس دلفی است بیشتر درباره این موضوع (طراحی بانک اطلاعاتی) صحبت نمیکنم.

saalek110
چهارشنبه 15 اسفند 1386, 20:25
از :
http://forum.p30world.com/showthread.php?t=52758
-------------------------------------------------------------
درس2 : معرفی دیتابیس به دلفی
برای این منظور در دلفی یک سری کامپوننت وجود دارد که در بخش Data Access و Data control قرار دارد.
در بخش اول معمولترین کامپوننت هایی که استفاده می شود Table و Datasource است.
Table برای معرفی دیتابیس استفاده میشود
شما میتوانید در بخش DataBaseName اسم فایل دیتابیس طراحی شده خودتون رو وارد کنید
پیشنهاد من اینه که همیشه فایل دیتابیستون رو اونجایی قرار بدین که فایا EXE شما قرار داره. چون به این ترتیب نیازی به تعریف مسیر ندارید.
در بخش TableType شما میتوانید نوع دیتابیسی که باهاش کار می کنید رو معرفی کنید.
بعد از این دو مورد مهمترین مسائلی که وجود داره اول بخش فیلتر کردن آن است که میتوانید با ساختار زیر عمل کنید.

(FieldName1) = 'String' and (FieldName2) = number
منظور از (FieldName1&2) اسم فیلدی هست که شما در دیتابیس معرفی کردید و جنس فیلد اول کاراکتری و جنس فیلد دوم عددی میباشد.

و دوم بخشی برای استفاده چند کاربره از دیتابیس که در صورتی که مقدار CachedUpdate برار True باشد, امکانپذیر است.
درباره طرقه استفاده از آن در درسهای بعدی توضیح میدم.

بعد از تعریف Table شما میتوانید Datasource را روی فرم گذاشته و به راحتی Table رو به Datasource مرتبت کنید.

دلیل استفاده از دیتاسورس در درس بعدی قرار دارد.

saalek110
چهارشنبه 15 اسفند 1386, 20:26
از :
http://forum.p30world.com/showthread.php?t=52758
-------------------------------------------------------------

درس 3 : ارتباط دادن دیتابیس به فرم
دوستان دو موردی که در درس قبلی مطرح شدند ، اشیا غیر نمایشی هستند.
یعنی اگر این دو بر روی یک فرم قرار داشته باشند ، اگر برنامه اجرا شود چیزی بر روی فرم ظاهر نمیشود.
البته معمولا بر روی DataModul قرار میگیرند که بعدا درباره آن صحبت میشود.
در واقع این دو یک رابط بین دیتابیس و اشیا نمایشی هستند.

اشیا نمایشی در بخش DataControl وجود دارد که در این در به توضیح DBText و DBEdit می÷ردازیم و در درس بعدی توضیحات را کاملتر می کنیم.

DBText : این شی برای نمایش یک مقدار که در درون دیتابیس وجود دارد استفاده میشود.
در خصوصیات تمام زیر مخموعه DataControl یک بخش به نام DataSource وجود دارد که اگر آن را انتخاب کنید ، لیستی از Datasource هایی که قبلا ایجاد کردید را در آن میبینید.
یک خصوصیت مهم دیگر نیز وجود دارد که DataField میباشد.
این خصوصیت یکی از فیلدها را برای DBText مشخص مینماید تا به نمایش درآورد.
باقی خصوصیات را قاعدتا میشناسید. و هیچ چیز خاص و مهمی ندارد.
DBEdit : این شی درست مثل DBText میباشد با این تفاوت که امکان تغییر نیز وجود دارد.
Event های این شی بیشتر از DBText است ولی تمام این Event ها در سایر اشیا دلفی مشترک است.

DBComboBox هم دقیقا مشابه با DBEdit است با این مزیت که میتوان مقادیر را نیز محدود کرد.
سایر اشیا هم مانند DBImage و DBMemo برای دسترسی به فیلدهای عکسی و یادداشتی استفاده میشوند.
برای اینکه این مبحث خیلی طولانی نشد DBGrid در درس بعدی آموزش داده میشود.

saalek110
چهارشنبه 15 اسفند 1386, 20:27
از :
http://forum.p30world.com/showthread.php?t=52758
-------------------------------------------------------------
درس 4 : در این بخش میخوام درباره DBGrid صحبت کنم.
این شی جز قویترین و در بعضی جاها مهمترین شی در طراحی یک برنامه به حساب میاد که امکانات متنوعی داره. یکی از مهمترین کارهایی که در فرم انجام میدهد نمایش یک مجموعه فیلتر شده خاص است که حتی فیلدهای آن نیز مشخص شده است.
برای توضیح کامل این شی با یک مثال جلو میروم.
فرض کنید که با یک دیتابیس دارین کار میکنین که یک جدول داره و دارای فیلدهای زیر است :
1. کد کارمندی 2.نام 3.آدرس 4.تلفن 5.حقوق 6. وظیفه در کارگاه

حال فرض کنید که یک گزارش ساده از افرادی میخواین که مثلا مورد 6 آنها "کارگر" است.
در این گزارش که روی مونیتور هم هست لزومی برای نمایش "آدرس"و"حقوق"و"کد کارمندی" نیست.
مراحل زیر را انجام میدهیم.

1. DBGrid را روی فرم قرار میدهیم.
2. DataSource آن را مشخص میکنیم.
3. روی DBGrid دبل کلیک می کنیم و یک صفحه سفید ظاهر میشود.
4. دکمهای در بالای این صفحه است. (ADD NEW)
5. یک آیکون به لیست سفید اضافه میشود. آن را انتخاب کنید
6. در خاصیت FieldName نام فیلد مورد نظرتان را انتخاب کنید.
7. بخش Title را انتخاب کرده و در بخش Caption نامی که برای فیلد مد نظرات است را برای نمایش روی مونیتور وارد کنید. این بخش معمولا برای برنامه های فارسی استفاده میشود.
8. سایر مشخصات مربوط به ستون را تعیین کنید. سایر مشخصات واضح هستند و خیلی کاربردی نمیباشند.

اگر مراح 3 به بعد را انجام ندهید کل فیلدها نمایش داده میشوند. ولی اگر این کارها انجام شود و فیلدهای مورد نظرتان را انتخاب کنید فقط آنها را نشان خواهد داد.
حال اگر Table را فیلتر کنید ، تغییرات آن بلافاصله بر روی DBGrid اعمال میشود.

کمی هم درباره DBImage صحبت کنم.
چون گویا دوستان کمی مشکل داشتند.
برای استفاده از این شی به راحتی میتوان عکس را ارد بانک اطلاعاتی کرد.
درست مثل تمامی اشیا این صفحه ابتدا باید DataSource و فیلد آن مشخص گردد.
برای انتفال عکس از روی هارد به درون دیتابیس هم میتوان به هر روشی (برای مثال Dialogs) نام و مسیر فایل را بدست آورد و با کد زیر آن را وارد کرد:


DBImage.Picture.LoadFromFile(……)
منظور از ... هم همان انتخاب شما برای یافتن نام و مسیر فایل است.
حتی به صورت مستقیم می توان نام فایل را نوشت.
برای مثال :


DBImage.Picture.LoadFromFile(‘c:\window\art.jpg )

saalek110
چهارشنبه 15 اسفند 1386, 20:28
از :
http://forum.p30world.com/showthread.php?t=52758
-------------------------------------------------------------
درس 5 : دیتا ماژول
دوستان اگر تا اینجای بحث را پیگیری کرده باشی الان باید بتوانید که یک دیتابیس تک جدوله را کنترل و در یک برنامه استفاده کنید.
برای اینکه در یک برنامه کاربردی همیشه بیش از یک فرم است که با جدول در تماس میباشد ، تعریفات دیتابیس و جدول را در بخش دیگری به نام دیتا ماژول انجام میدهیم.
این بخش همانند یک فرم اضافی برای برنامه میباشد و هر فرمی که به اطلاعات جدول لینک باشد را به آن اتصال میدهیم. این ماژول را میتوان از طریق File/New…/DataModual اضافه نمود.
سایر کارکردهای این بخش همانند فرم است وتنها فرق آن در عدم نمایش همیشگی آن برای کاربر است.
یعنی امکان نمایش (Form.ShowModal) را ندارد.

تاکید میکنم که روی درس 3 و 4 خیلی کار شود که مطالب آنها برای تمامی ساختارهای دیتابیسی در دلفی کاربر دارد. اکثر کامپوننتهایی که در بخش DataSource وجود دارند کار معرفی جدول را به عهده دارند ، البته با تفاوتهایی نسبت به Table و چون حجم مطالب خیلی زیاد میشود از توضیح درباره آنها صرف نظر کردم.

saalek110
پنجشنبه 16 اسفند 1386, 10:08
سالک : منظور از این دو صفحه آشنایی با روش وصل شده با دیتابیس و آشنایی با بعضی ابزارها بود.

saalek110
پنجشنبه 16 اسفند 1386, 10:08
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 را انتخاب می کنیم:


http://irdelphi.250free.com/g/g2/a2/b1.jpg

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


http://irdelphi.250free.com/g/g2/a2/b2.jpg

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


http://irdelphi.250free.com/g/g2/a2/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
پنجشنبه 16 اسفند 1386, 10:09
آموزش کامل نحوه تنظیم و اتصال پایگاه داده SQL Server 2000 با دلفی
نویسنده : بابک احدی
http://www.divshare.com/download/3948294-7b4
یک مگا زیپ شده.
یک و نیم مگا آنزیپ شده. فایل word .
فارسی مصور.

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

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

چهارم اینکه در قسمت اول آموزشهای ایشان در یک پنجره دو اسم babak وارد شده که بهتره به توضیحات تاپیک :
دیتابیس با سی شارپ (http://forum.majidonline.com/showthread.php?t=72858)
مراجعه کنید تا بدانید babak دومی چی باید باشد.
عکس زیر از اون تاپیکه:


http://saalek110c.250free.com/gifs/gifs2/a1/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
پنجشنبه 16 اسفند 1386, 10:09
منبع:
http://torent.wordpress.com/programming/delphi/sql-delphi/

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

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


http://irdelphi.250free.com/g/g1/a1/a1.jpg

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


http://irdelphi.250free.com/g/g1/a1/a2.jpg

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


http://irdelphi.250free.com/g/g1/a1/a3.jpg

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


http://irdelphi.250free.com/g/g1/a1/a4.jpg

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

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



http://irdelphi.250free.com/g/g1/a1/a5.jpg

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

saalek110
شنبه 18 اسفند 1386, 02:57
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
شنبه 18 اسفند 1386, 03:11
http://asad707.persianblog.ir/

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

برای ذخیره کردن

DBGrid1.Columns.SaveToFile('filename.txt') ;
برای بازنشانی مجدد

DBGrid1.Columns.LoadFromFile('filename.txt') ;

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

saalek110
سه شنبه 21 اسفند 1386, 02:48
منبع:
http://torent.wordpress.com/programming/delphi/sql-delphi-2/

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


سلام

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



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



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


http://irdelphi.250free.com/g/g2/a1/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
سه شنبه 21 اسفند 1386, 02:55
http://torent.wordpress.com/programming/delphi/sql-delphi/

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

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

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


http://irdelphi.250free.com/g/g2/a1/d1.jpg

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


http://irdelphi.250free.com/g/g2/a1/d2.jpg

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


http://irdelphi.250free.com/g/g2/a1/d3.jpg

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


http://irdelphi.250free.com/g/g2/a1/d4.jpg

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

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


http://irdelphi.250free.com/g/g2/a1/d5.jpg

saalek110
سه شنبه 21 اسفند 1386, 03:07
http://www.smaj.blogfa.com/post-63.aspx

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

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


http://irdelphi.250free.com/g/g2/a1/d6.jpg

از چپ به راست :

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

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

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

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

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

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

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

saalek110
سه شنبه 21 اسفند 1386, 03:23
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 ايجاد كنيم مي بايست از جدول سومي به منظور ايجاد ارتباط استفاده مي كنيم كه جدول سوم حاوي حداقل فيلد هاي كليد اصلي دو جدول ديگر است .


file:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/clip_image092.gif




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

file:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/clip_image093.gif


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

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



صفحه كنترل ADO
file:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/clip_image095.jpg

1 . شي ADO Connection

file:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/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
file:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/clip_image099.jpg
توسط شي ADO Table مي توانيم به جدول موجود در DB ارتباط برقرار نماييم .

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


3 . شي ADO Query
file:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/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
file:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/clip_image103.jpg
در اين صفحه به منظور برقرار کردن ارتباط بين پايگاه داده با اشيا ، از شي DataSource استفاده مي كنيم .

شي Data Source

file:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/clip_image105.jpg
در اين قسمت ما بايد مشخصه Data Set آن را معادل ADO Tabel ( يا ADO Query ) قرار دهيم .

صفحه كنترل Data Control
file:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/clip_image107.jpg
از طريق اين صفحه مي توانيم كنترلي بر روي جدول مورد نظرمان انجام دهيم .
در مجموع نحوه تنظيم کردن ارتباط اين اشيا با جدول مورد نظر توسط دو مرحله صورت مي پذيرد :
الف . تنظيم مشخصهDataSource شی به DataSource جدول .
ب . تنظيم مشخصه DataField شی به Field مورد نظر در جدول .

1 . شي DB Grid
file:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/clip_image109.jpg
توسط اين شي مي توانيم اطلاعات موجود در پايگاه داده مربوط رابه صورت يك جدول مشاهده ،Insert ، Edit نماييم .





2 . شي DB Navigator
file:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/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
بيانگر نوع جستجو بر روي فيلد مورد نظر است كه داراي دو حالت زير مي باشد :

file:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/clip_image112.giffile:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/clip_image113.gifOption Locase Insensitive
Lopartial Key
file:///C:/DOCUME%7E1/hossein/LOCALS%7E1/Temp/msohtml1/01/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
پنجشنبه 01 فروردین 1387, 20:03
سالک: در این تاپیک همه تمرینها تابحال با 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
جمعه 09 فروردین 1387, 13:46
منبع:
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 ذخیره میکند.

saalek110
شنبه 14 اردیبهشت 1387, 05:09
کار با mysql و آموزش دستورات sql :
http://www.divshare.com/download/4403335-91a
نیم مگا.
96 صفحه.
فارسی.

hafez2
سه شنبه 12 آذر 1387, 22:28
سلام عرض میکنم خدمت آقای اقالیمی..مطالب خوبی ارسال کردین..ممننونم...بگ محمدی هستم..همکلاسیتون...موفق باشید.

saalek110
یکشنبه 12 مهر 1388, 22:52
تاپیک مرتبط و مفید:

آموزش قدم به قدم ساخت دفترچه تلفن ( دلفی ) (http://forum.majidonline.com/showthread.php?t=130181)

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

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

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

چهارم اینکه در قسمت اول آموزشهای ایشان در یک پنجره دو اسم babak وارد شده که بهتره به توضیحات تاپیک :
دیتابیس با سی شارپ (http://forum.majidonline.com/showthread.php?t=72858)
مراجعه کنید تا بدانید babak دومی چی باید باشد.
عکس زیر از اون تاپیکه:


http://saalek110c.250free.com/gifs/gifs2/a1/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
چهارشنبه 15 تیر 1390, 00:52
سلام ، من یک سوالی داشتم ، چطور میشه تو دلفی یک برنامه تحت شبکه یا حداقل یک دیتا بیس تحت شبکه طراحی کرد مثلن یه یوزر از یک برنامه استفاده کنن ؟ یا اطلاعات رو در یک بانک مشترک ذخیره کنن ؟

babak869
چهارشنبه 15 تیر 1390, 15:01
سلام ، من یک سوالی داشتم ، چطور میشه تو دلفی یک برنامه تحت شبکه یا حداقل یک دیتا بیس تحت شبکه طراحی کرد مثلن یه یوزر از یک برنامه استفاده کنن ؟ یا اطلاعات رو در یک بانک مشترک ذخیره کنن ؟

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