PDA

View Full Version : ارتباط sql و delphi



sima_gh7
سه شنبه 15 شهریور 1384, 21:49 عصر
من یک database در sqlServer ایجاد کردم و برای دسترسی به اون در delphi از compnent های ADOconnection و ADOquery استفاده کردم . ارتباط با database برقرار میشه ولی من نمی دونم چطور می تونم به فیلدهای جداولم دسترسی داشته باشم ، مثلاً چطور با استفاده از DBedit اطلاعات را در یک فیلد از جدول وارد کنم . آیا باید از کامپوننت datastore هم استفاده کنم و....

MortezaDelphi
چهارشنبه 16 شهریور 1384, 08:44 صبح
برای برقراری ارتباط با database باید از کاپوننت datasource هم استفاده کنید و اون را به adoquery وصل کنی بعد dbedit ,... را به datasource متصل کنی.

sima_gh7
چهارشنبه 16 شهریور 1384, 09:40 صبح
من از datasource استفاده کردم و dataset اون رو هم ADOquery1 قرار دادم , ولی وقتی از یک DBedit استفاده می کنم , قسمت مربوط به datasource در dbedit خالیه و نمی تونم datasource1 رو براش معرفی کنم . در مورد adoquery هم همینطوره . یعنی برای اون هم نمی تونم datasource رو معرفی کنم .

sima_gh7
چهارشنبه 16 شهریور 1384, 12:29 عصر
بهتره سوالم رو اینطور مطرح کنم :
چطور می تونم به کمک component های ADO و DataControl اطلاعات رو وارد جدول کنم یا از جدول بخونم ؟
اگه ممکنه جزییاتش رو بگید ...

m-khorsandi
چهارشنبه 16 شهریور 1384, 13:15 عصر
درود

برای خواندن/نمایش با کامپوننتهای Data aware راه سختی جلوی شما نیست، مثال:
1- قرار دادن ADOConnection
2- قرار دادن ADOQuery
3- قرار دادن DataSource
4- تنظیم ConnectionString مربوط به ADOConnection
5- مقدار دهی ADOConnection به Connection مربوط به ADOQuery
6- مقدار دهی ADOQuery به DataSet مربوط به DataSource
7- یه دستور ساده مثل "select * from tablename" برای ADOQuery هم بنویسیدو ADOQuery.Active = True
8- قرار دادن یه DBEdit روی فرم
9- مقداردهی DataSource و DataField(برای اتصال به ADOQuery و نمایش مقدار فعلی فیلد مورد نظر)

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

اگه جواب گرفتید بفرمائید تا Insert کردن رو هم بگم.

sima_gh7
چهارشنبه 16 شهریور 1384, 14:15 عصر
مشکل نمایش حل شد . اگه در مورد insert هم توضیح بدید ممنون میشم

Touska
چهارشنبه 16 شهریور 1384, 15:00 عصر
برای اضافه کردن باید به شکل زیر عمل کنید:


INSERT INTO table
(column-1, column-2, ... column-n)
VALUES
(value-1, value-2, ... value-n);

به عنوان مثال :


Insert Into Table1 Values('1','Mostafa','Sarbazzadeh');

sima_gh7
چهارشنبه 16 شهریور 1384, 23:30 عصر
من از کد فوق برای insert استفاده می کنم ولی نمی دونم چطور مقداری که در DBEdit قرار گرفته رو در فیلد مربوط به جدول قرار بدم

vcldeveloper
پنج شنبه 17 شهریور 1384, 02:28 صبح
من از کد فوق برای insert استفاده می کنم ولی نمی دونم چطور مقداری که در DBEdit قرار گرفته رو در فیلد مربوط به جدول قرار بدم
شما هر چیزی که در DBEdit بنویسید، به شرط اونکه جدول یا اون فیلد ReadOnly نباشه، با تغییر رکورد جاری یا فراخوانی متد Post از ADOQuery در داخل جدول ذخیره میشه. برای Insert رکورد جدید توسط DBEdit هم باید اول متد Insert از ADOQuery را اجرا کنید، با این کار DBEdit بصورت خودکار خالی میشه، آماده دریافت مقدار جدید میشه. می تونید اطلاعات فیلد رو در DBEdit وارد کنید و تغییرات رو پست کنید. برای راحتی مراحل Insert و Post و حرکت روی رکوردها هم می تونید از DBNavigator استفاده کنید. در DBGrid هم عملیات Edit, Insert و Post بصورت خودکار صورت میگیره و شما فقط باید اطلاعات هر فیلد را در ستون مربوطه تایپ کنید.

sima_gh7
شنبه 19 شهریور 1384, 12:30 عصر
با تشکر از همه دوستان , ممکنه در مورد update کردن هم توضیح بدید .
چطور میشه بدون استفاده از نوشتن query یک رکورد رو update کرد ؟

m-khorsandi
شنبه 19 شهریور 1384, 13:07 عصر
خیلی ساده،
اگه از DBEdit استفاده میکنید فقط کافیه جدول رو در حالت Edit قرار بدید وبعد از انجام تغییرات ،اطلاعات رو Post کنید.


ADOTable.Edit;




ADOTable.Post;

sima_gh7
شنبه 19 شهریور 1384, 13:17 عصر
خب چطور می تونم مشخص کنم که کدوم رکورد رو update کنه ؟

m-khorsandi
یک شنبه 20 شهریور 1384, 09:29 صبح
بعد از Active = True جدول ، اولین رکورد فعال هست و اگه همان زمان شما شروع به ایجاد تغییرات در
DBEdit یا DBMemo کنید و Post کنید ، اولین رکورد شما Update میشه. شما میتونید از DBGrid و
DBNavigator استفاده کنید تابتونید توسط DBGrid لیست رکوردها را مشاهده کنید و در صورت نیاز یکی از
اونها رو انتخاب کنید و شروع به ویرایش کنید و همینطور توسط DBNavigator بتونید بدون نیاز به نوشتن
دستوری (مثل: Insert, Postو ...) بتونید عملیاتی مانند حرکت روی رکوردها و Insert و Update رو انجام بدید.