ورود

View Full Version : مبتدی: حذف یک رکورد



YkA1363
یک شنبه 08 مرداد 1391, 18:31 عصر
سلام
1ـ برای حذف یک رکورد از جدول با استفاده از ردیف که در دیتاگرید نمایش داده میشه بعد از where نمی دونم چی باید بنویسم.لطفا کمک :افسرده:

adoquery1.SQL.Text:='DELETE FROM table_name where ?????????? ;
از دلفی 7 و اس کیو ال 2000 استفاده می کنم.
2ـ راهی وجود داره که بدون استفاده از فیلد های جدول بعد where دستوری بدیم که رکوردی که در دیتا گرید انتخاب شده رو حذف کنه؟
این دومی خیلی برام مهمه توی سایت جستجو کردم ولی به نتیجه ای نرسیدم.

Felony
یک شنبه 08 مرداد 1391, 21:22 عصر
ADOQuery1.SQL.Text:= Format('DELETE FROM table_name WHERE ID = %d', [ADOQuery1.FieldByName('ID').AsInteger]);

یا


ADOQuery1.Delete;

YkA1363
یک شنبه 15 مرداد 1391, 16:03 عصر
ADOQuery1.SQL.Text:= Format('DELETE FROM table_name WHERE ID = %d', [ADOQuery1.FieldByName('ID').AsInteger]);

یا


ADOQuery1.Delete;

ممنونم از لطفتون نمی دونم کجای کار رو اشتباه رفتم. این کد خطا می داد.

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

begin
if Table_Name.IsEmpty then
begin
ShowMessage('!رکوردي جهت حذف کردن وجود ندارد');
Exit;
end;
if MessageBox(0,'ركورد انتخاب شده حذف شود؟','كاربر گرامي',MB_YESNO+MB_ICONQUESTION+MB_SYSTEMMODA L+MB_RIGHT+MB_DEFBUTTON2)=idno then exit;
AdoQuery1.Close;

AdoQuery1.SQL.Text:='DELETE FROM Table_Name WHERE (((ID)='+Table_Name.fieldbyname('ID').AsString')); ';
if AdoQuery1.ExecSQL >0 then begin
begin
Table_Name.close;
Table_Name.open;
end;
end;
end;

shobair
یک شنبه 22 مرداد 1391, 18:06 عصر
سلام
1ـ برای حذف یک رکورد از جدول با استفاده از ردیف که در دیتاگرید نمایش داده میشه بعد از where نمی دونم چی باید بنویسم.لطفا کمک :افسرده:

adoquery1.SQL.Text:='DELETE FROM table_name where ?????????? ;
از دلفی 7 و اس کیو ال 2000 استفاده می کنم.
2ـ راهی وجود داره که بدون استفاده از فیلد های جدول بعد where دستوری بدیم که رکوردی که در دیتا گرید انتخاب شده رو حذف کنه؟
این دومی خیلی برام مهمه توی سایت جستجو کردم ولی به نتیجه ای نرسیدم.

سلام
DBGrid شما با یک DataSource به یک DataSet مثل جدول یا کوئری متصله درسته؟
خوب کافیه یک کلید بزاری و تو OnClickش بنویسی Table.delete یا Query.delete.

چرا اینقدر پیچیدش میکنن بعضی ها!
شبیر

YkA1363
سه شنبه 31 مرداد 1391, 18:25 عصر
سلام
DBGrid شما با یک DataSource به یک DataSet مثل جدول یا کوئری متصله درسته؟
خوب کافیه یک کلید بزاری و تو OnClickش بنویسی Table.delete یا Query.delete.

چرا اینقدر پیچیدش میکنن بعضی ها!
شبیر ممنونم از اينكه نظر دادي منم مي دونم با يك خط كد نوشتن ميشه اينكار رو كرد ولي يك سري پيامها بايد براي كاربر نمايش داده بشه.

mahian90
سه شنبه 31 مرداد 1391, 18:38 عصر
ممنونم از اينكه نظر دادي منم مي دونم با يك خط كد نوشتن ميشه اينكار رو كرد ولي يك سري پيامها بايد براي كاربر نمايش داده بشه.

خوب پیام هم بزار. مشکل چیست ؟

YkA1363
سه شنبه 31 مرداد 1391, 19:27 عصر
1ـ توي اين كد وقتي كاربر دكمه حذف رو مي زنه اگه جدول خالي باشه به كاربر مي گه كه اطلاعاتي در جدول وجود نداره.براي اينكار به نظر شما نبايد اول چك بشه كه جدول ركوردي براي حذف داره يا نه؟
2ـ براي حذف يك ركورد معمولاً بايد از كاربر تاييد حذف گرفته بشه كه آيا واقعا مي خواد ركورد رو حذف كنه يا اينكه به اشتباه بر روي دكمه حذف كليك كرده؟
3ـ در پايان هم چك ميشه اگر ركوردي حذف شده باشه جدول رو مي بنده و باز مي كنه تا اطلاعات جديد در dbgrid نمايش داده بشه كه مي تونيم به جاي اون از ()Requery كنيم.
نمي دونم كجاي اين كدهاي من زياديه؟ اگه واقعا مشكل داره ممنون مي شم كمكم كنيد. من اينجا اومدم براي يادگيري و خودم رو به هيچ وجه برنامه نويس نمي دونم و شاگرد همتونم.

shobair
چهارشنبه 01 شهریور 1391, 10:48 صبح
1ـ توي اين كد وقتي كاربر دكمه حذف رو مي زنه اگه جدول خالي باشه به كاربر مي گه كه اطلاعاتي در جدول وجود نداره.براي اينكار به نظر شما نبايد اول چك بشه كه جدول ركوردي براي حذف داره يا نه؟
2ـ براي حذف يك ركورد معمولاً بايد از كاربر تاييد حذف گرفته بشه كه آيا واقعا مي خواد ركورد رو حذف كنه يا اينكه به اشتباه بر روي دكمه حذف كليك كرده؟
3ـ در پايان هم چك ميشه اگر ركوردي حذف شده باشه جدول رو مي بنده و باز مي كنه تا اطلاعات جديد در dbgrid نمايش داده بشه كه مي تونيم به جاي اون از ()Requery كنيم.
نمي دونم كجاي اين كدهاي من زياديه؟ اگه واقعا مشكل داره ممنون مي شم كمكم كنيد. من اينجا اومدم براي يادگيري و خودم رو به هيچ وجه برنامه نويس نمي دونم و شاگرد همتونم.


سلام
همش همونه که گفتم. کارهای دیگه ای که میخوای بکنی: دستورالعمل MessageDlg رو برای پرسش از کاربر یاد بگیر و استفاده کن. برای اینکه بفهمی رکوردی در جدولت هست یا نه از پراپرتی RecordCount جدول یا کوئری استفاده کن که تعداد رکوردها رو نشونت میده. ضمناً نیازی به ریفرش کردن DBGrid نداری اگه مستقیماً به دیتاست متصل باشه.

شبیر

Felony
چهارشنبه 01 شهریور 1391, 12:14 عصر
برای اینکه بفهمی رکوردی در جدولت هست یا نه از پراپرتی RecordCount جدول یا کوئری استفاده کن
اگر قراره فقط خالی بودن جدول بررسی بشه متد IsEmpty از Dataset مورد نظر همین کار رو انجام میده .